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
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
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
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]>
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