2018-08-08 23:26:38

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the tip tree

Hi all,

After merging the tip tree, today's linux-next build (x86_64 defconfig)
failed like this:

Invalid absolute R_X86_64_32S relocation: __end_rodata_aligned
/kisskb/src/arch/x86/boot/compressed/Makefile:127: recipe for target 'arch/x86/boot/compressed/vmlinux.relocs' failed

Caused by commit

39d668e04eda ("x86/mm/pti: Make pti_clone_kernel_text() compile on 32 bit")

This was a build using gcc 4.6.3. the i386 defconfig also failed
like this:

Invalid absolute R_386_32 relocation: __end_rodata_aligned

They started failing on next-20180723 (which is the first -next that
contained the above commit). Sorry that we did not notice this earlier.
At least the i386 defconfig build works with gcc 7.3.1.

You can see the full build results here:
http://kisskb.ellerman.id.au/kisskb/head/6b522b734da2950c368aae668f963b8925fb5545/

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2018-08-09 09:43:08

by Jörg Rödel

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the tip tree

Hi Stephen,

On Thu, Aug 09, 2018 at 09:24:20AM +1000, Stephen Rothwell wrote:
> Invalid absolute R_X86_64_32S relocation: __end_rodata_aligned
> /kisskb/src/arch/x86/boot/compressed/Makefile:127: recipe for target 'arch/x86/boot/compressed/vmlinux.relocs' failed
>
> Caused by commit
>
> 39d668e04eda ("x86/mm/pti: Make pti_clone_kernel_text() compile on 32 bit")

Thanks for the report! I only built the source with gcc-4.8 and gcc-7.3,
so I didn't catch this earlier. I have a fix now and will send it as a
separate reply in this thread.


Thanks,

Joerg


2018-08-09 09:46:01

by Jörg Rödel

[permalink] [raw]
Subject: [PATCH] x86, relocs: Add __end_rodata_aligned to S_REL

This new symbol needs to be in the workaround-list for buggy
binutils, otherwise the build with gcc-4.6 fails.

Fixes: 39d668e04eda ('x86/mm/pti: Make pti_clone_kernel_text() compile on 32 bit')
Signed-off-by: Joerg Roedel <[email protected]>
---
arch/x86/tools/relocs.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index 220e97841e49..3a6c8ebc8032 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -67,6 +67,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
"__tracedata_(start|end)|"
"__(start|stop)_notes|"
"__end_rodata|"
+ "__end_rodata_aligned|"
"__initramfs_start|"
"(jiffies|jiffies_64)|"
#if ELF_BITS == 64
--
2.16.4


2018-08-09 12:20:31

by Sedat Dilek

[permalink] [raw]
Subject: Re: [PATCH] x86, relocs: Add __end_rodata_aligned to S_REL

On Thu, Aug 9, 2018 at 11:44 AM, Joerg Roedel <[email protected]> wrote:
> This new symbol needs to be in the workaround-list for buggy
> binutils, otherwise the build with gcc-4.6 fails.
>
> Fixes: 39d668e04eda ('x86/mm/pti: Make pti_clone_kernel_text() compile on 32 bit')
> Signed-off-by: Joerg Roedel <[email protected]>
> ---
> arch/x86/tools/relocs.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
> index 220e97841e49..3a6c8ebc8032 100644
> --- a/arch/x86/tools/relocs.c
> +++ b/arch/x86/tools/relocs.c
> @@ -67,6 +67,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
> "__tracedata_(start|end)|"
> "__(start|stop)_notes|"
> "__end_rodata|"
> + "__end_rodata_aligned|"
> "__initramfs_start|"
> "(jiffies|jiffies_64)|"
> #if ELF_BITS == 64
> --
> 2.16.4
>

Tested-by: Sedat Dilek <[email protected]>

Subject: [tip:x86/pti] x86/relocs: Add __end_rodata_aligned to S_REL

Commit-ID: a29dba161ad1a01bbfbc80aa184b089ddd169a4e
Gitweb: https://git.kernel.org/tip/a29dba161ad1a01bbfbc80aa184b089ddd169a4e
Author: Joerg Roedel <[email protected]>
AuthorDate: Thu, 9 Aug 2018 11:44:49 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Thu, 9 Aug 2018 20:42:07 +0200

x86/relocs: Add __end_rodata_aligned to S_REL

This new symbol needs to be in the workaround-list for buggy
binutils, otherwise the build with gcc-4.6 fails.

Fixes: 39d668e04eda ('x86/mm/pti: Make pti_clone_kernel_text() compile on 32 bit')
Reported-by: Stephen Rothwell <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Tested-by: Sedat Dilek <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Linux-Next Mailing List <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]

---
arch/x86/tools/relocs.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index 220e97841e49..3a6c8ebc8032 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -67,6 +67,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
"__tracedata_(start|end)|"
"__(start|stop)_notes|"
"__end_rodata|"
+ "__end_rodata_aligned|"
"__initramfs_start|"
"(jiffies|jiffies_64)|"
#if ELF_BITS == 64