2015-04-08 05:50:06

by Guenter Roeck

[permalink] [raw]
Subject: [PATCH -next] xtensa: Fix fix linker script transformation for .text / .text.fixup

Commit 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
input section") introduced a new .text.fixup section which is merged
with .text at link time. This causes xtensa builds to fail with lots
of error messages similar to the following.

lib/lib.a(kobject.o): In function `kobject_create':
(.text+0x498): dangerous relocation: l32r: literal placed after use:
(.literal+0x150)

Linker script transformation needs to be updated to detect and handle
the new section.

Fixes: 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
input section")
Cc: Ard Biesheuvel <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
---
arch/xtensa/kernel/Makefile | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile
index 18d962a..d3a0f0f 100644
--- a/arch/xtensa/kernel/Makefile
+++ b/arch/xtensa/kernel/Makefile
@@ -29,6 +29,7 @@ AFLAGS_head.o += -mtext-section-literals

sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
-e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
+ -e 's/\*(\(\.text .*\))/*(.literal \1)/g' \
-e 's/\*(\(\.text\.[a-z]*\))/*(\1.literal \1)/g'

quiet_cmd__cpp_lds_S = LDS $@
--
2.1.0


2015-04-08 06:14:24

by Max Filippov

[permalink] [raw]
Subject: Re: [PATCH -next] xtensa: Fix fix linker script transformation for .text / .text.fixup

Hi Guenter,

On Wed, Apr 8, 2015 at 8:49 AM, Guenter Roeck <[email protected]> wrote:
> Commit 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
> input section") introduced a new .text.fixup section which is merged
> with .text at link time. This causes xtensa builds to fail with lots
> of error messages similar to the following.
>
> lib/lib.a(kobject.o): In function `kobject_create':
> (.text+0x498): dangerous relocation: l32r: literal placed after use:
> (.literal+0x150)
>
> Linker script transformation needs to be updated to detect and handle
> the new section.

I've posted a patch for it to the linux-xtensa ML a while ago:
http://lists.linux-xtensa.org/pipermail/linux-xtensa/Week-of-Mon-20150330/001913.html

> Fixes: 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
> input section")
> Cc: Ard Biesheuvel <[email protected]>
> Cc: Arnd Bergmann <[email protected]>
> Signed-off-by: Guenter Roeck <[email protected]>
> ---
> arch/xtensa/kernel/Makefile | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile
> index 18d962a..d3a0f0f 100644
> --- a/arch/xtensa/kernel/Makefile
> +++ b/arch/xtensa/kernel/Makefile
> @@ -29,6 +29,7 @@ AFLAGS_head.o += -mtext-section-literals
>
> sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
> -e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
> + -e 's/\*(\(\.text .*\))/*(.literal \1)/g' \

This doesn't handle literals for .text.fixup AFAICT.

--
Thanks.
-- Max

2015-04-08 13:08:18

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH -next] xtensa: Fix fix linker script transformation for .text / .text.fixup

On 04/07/2015 11:14 PM, Max Filippov wrote:
> Hi Guenter,
>
> On Wed, Apr 8, 2015 at 8:49 AM, Guenter Roeck <[email protected]> wrote:
>> Commit 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
>> input section") introduced a new .text.fixup section which is merged
>> with .text at link time. This causes xtensa builds to fail with lots
>> of error messages similar to the following.
>>
>> lib/lib.a(kobject.o): In function `kobject_create':
>> (.text+0x498): dangerous relocation: l32r: literal placed after use:
>> (.literal+0x150)
>>
>> Linker script transformation needs to be updated to detect and handle
>> the new section.
>
> I've posted a patch for it to the linux-xtensa ML a while ago:
> http://lists.linux-xtensa.org/pipermail/linux-xtensa/Week-of-Mon-20150330/001913.html
>
>> Fixes: 779c88c94c34 ("ARM: 8321/1: asm-generic: introduce .text.fixup
>> input section")
>> Cc: Ard Biesheuvel <[email protected]>
>> Cc: Arnd Bergmann <[email protected]>
>> Signed-off-by: Guenter Roeck <[email protected]>
>> ---
>> arch/xtensa/kernel/Makefile | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile
>> index 18d962a..d3a0f0f 100644
>> --- a/arch/xtensa/kernel/Makefile
>> +++ b/arch/xtensa/kernel/Makefile
>> @@ -29,6 +29,7 @@ AFLAGS_head.o += -mtext-section-literals
>>
>> sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
>> -e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
>> + -e 's/\*(\(\.text .*\))/*(.literal \1)/g' \
>
> This doesn't handle literals for .text.fixup AFAICT.
>
It doesn't, but then it wasn't supposed to. .text.fixup is arm specific.

Guenter

2015-04-08 23:27:13

by Chris Zankel

[permalink] [raw]
Subject: Re: [PATCH -next] xtensa: Fix fix linker script transformation for .text / .text.fixup

On Wed, Apr 8, 2015 at 6:08 AM, Guenter Roeck <[email protected]> wrote:
> On 04/07/2015 11:14 PM, Max Filippov wrote:
>>> Linker script transformation needs to be updated to detect and handle
>>> the new section.
>> I've posted a patch for it to the linux-xtensa ML a while ago:
>> http://lists.linux-xtensa.org/pipermail/linux-xtensa/Week-of-Mon-20150330/001913.html
>> This doesn't handle literals for .text.fixup AFAICT.
>>
> It doesn't, but then it wasn't supposed to. .text.fixup is arm specific.
>
> Guenter

Hi Max,

It would seem Guenter's fix addresses the issue. Are there any additional
benefits in your patch (better localized code, etc.?)

Cheers!
-Chris

2015-04-09 04:57:28

by Max Filippov

[permalink] [raw]
Subject: Re: [PATCH -next] xtensa: Fix fix linker script transformation for .text / .text.fixup

On Thu, Apr 9, 2015 at 2:24 AM, Chris Zankel <[email protected]> wrote:
> It would seem Guenter's fix addresses the issue. Are there any additional
> benefits in your patch (better localized code, etc.?)

It's a bit more generic. Maybe it's not an advantage.

Also we have a rule for .text already, in the first line.
Instead of adding new line, closing parenthesis could
be removed there:

> diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile
> index 18d962a..d3a0f0f 100644
> --- a/arch/xtensa/kernel/Makefile
> +++ b/arch/xtensa/kernel/Makefile
> @@ -29,6 +29,7 @@ AFLAGS_head.o += -mtext-section-literals
> sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
> -e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
> + -e 's/\*(\(\.text .*\))/*(.literal \1)/g' \

--
Thanks.
-- Max