Message ID | 20220202214357.2640301-1-giulio.benetti@benettiengineering.com |
---|---|
State | Accepted |
Headers | show |
Series | board/intel/galileo: fix build failure with host gcc 10 | expand |
On 02/02/2022 22:43, Giulio Benetti wrote: > Building galileo_defconfig throws error: > ``` > /usr/bin/ld: arch/x86/tools/relocs_64.o:(.bss+0x0): multiple definition of `per_cpu_load_addr'; arch/x86/tools/relocs_32.o:(.bss+0x0): first defined here > ``` > > To fix this let's add an upstreamed patch[1] and add BR2_GLOBAL_PATCH_DIR > to galileo_defconfig to point to where patch is. > > [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eeeda4cd06e828b331b15741a204ff9f5874d28d.patch > > Fixes: > https://gitlab.com/ymorin/buildroot/-/jobs/2035821039 > > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> You can't imagine how much joy it gives me to see a patch from 2014 applied here... Applied to master, thanks. Regards, Arnout > --- > ...relocs-Make-per_cpu_load_addr-static.patch | 39 +++++++++++++++++++ > configs/galileo_defconfig | 1 + > 2 files changed, 40 insertions(+) > create mode 100644 board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch > > diff --git a/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch > new file mode 100644 > index 0000000000..1d206cc6d1 > --- /dev/null > +++ b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch > @@ -0,0 +1,39 @@ > +From eeeda4cd06e828b331b15741a204ff9f5874d28d Mon Sep 17 00:00:00 2001 > +From: Ben Hutchings <ben@decadent.org.uk> > +Date: Wed, 24 Sep 2014 13:30:12 +0100 > +Subject: [PATCH] x86/relocs: Make per_cpu_load_addr static > + > +per_cpu_load_addr is only used for 64-bit relocations, but is > +declared in both configurations of relocs.c - with different > +types. This has undefined behaviour in general. GNU ld is > +documented to use the larger size in this case, but other tools > +may differ and some warn about this. > + > +References: https://bugs.debian.org/748577 > +Reported-by: Michael Tautschnig <mt@debian.org> > +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> > +Cc: 748577@bugs.debian.org > +Cc: Linus Torvalds <torvalds@linux-foundation.org> > +Link: http://lkml.kernel.org/r/1411561812.3659.23.camel@decadent.org.uk > +Signed-off-by: Ingo Molnar <mingo@kernel.org> > +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> > +--- > + arch/x86/tools/relocs.c | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > +index bbb1d2259ecf..a5efb21d5228 100644 > +--- a/arch/x86/tools/relocs.c > ++++ b/arch/x86/tools/relocs.c > +@@ -695,7 +695,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, > + * > + */ > + static int per_cpu_shndx = -1; > +-Elf_Addr per_cpu_load_addr; > ++static Elf_Addr per_cpu_load_addr; > + > + static void percpu_init(void) > + { > +-- > +2.25.1 > + > diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig > index 03ca23f414..a8fd0a6dcc 100644 > --- a/configs/galileo_defconfig > +++ b/configs/galileo_defconfig > @@ -1,4 +1,5 @@ > BR2_x86_x1000=y > +BR2_GLOBAL_PATCH_DIR=board/intel/galileo/patches > # Needed for TARGET_GRUB2 > BR2_TOOLCHAIN_BUILDROOT_WCHAR=y > # Linux headers same as kernel, a 3.14 series
Hi Nicolas, sorry for html but I’m mobile. My patch for fixing the build failure for Galileo has been upstream, but Linux version is very old, I’ve added a local patch from 2014 as pointed Arnout below. I don’t have a Galileo board and you are the maintainer, can you please update uboot and Linux versions and send a patch for that after testing please? Thank you! —- Giulio Benetti Benetti Engineering sas > Il giorno 13 feb 2022, alle ore 12:46, Arnout Vandecappelle <arnout@mind.be> ha scritto: > > > >> On 02/02/2022 22:43, Giulio Benetti wrote: >> Building galileo_defconfig throws error: >> ``` >> /usr/bin/ld: arch/x86/tools/relocs_64.o:(.bss+0x0): multiple definition of `per_cpu_load_addr'; arch/x86/tools/relocs_32.o:(.bss+0x0): first defined here >> ``` >> To fix this let's add an upstreamed patch[1] and add BR2_GLOBAL_PATCH_DIR >> to galileo_defconfig to point to where patch is. >> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eeeda4cd06e828b331b15741a204ff9f5874d28d.patch >> Fixes: >> https://gitlab.com/ymorin/buildroot/-/jobs/2035821039 >> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> > > You can't imagine how much joy it gives me to see a patch from 2014 applied here... > > > Applied to master, thanks. > > Regards, > Arnout > >> --- >> ...relocs-Make-per_cpu_load_addr-static.patch | 39 +++++++++++++++++++ >> configs/galileo_defconfig | 1 + >> 2 files changed, 40 insertions(+) >> create mode 100644 board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >> diff --git a/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >> new file mode 100644 >> index 0000000000..1d206cc6d1 >> --- /dev/null >> +++ b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >> @@ -0,0 +1,39 @@ >> +From eeeda4cd06e828b331b15741a204ff9f5874d28d Mon Sep 17 00:00:00 2001 >> +From: Ben Hutchings <ben@decadent.org.uk> >> +Date: Wed, 24 Sep 2014 13:30:12 +0100 >> +Subject: [PATCH] x86/relocs: Make per_cpu_load_addr static >> + >> +per_cpu_load_addr is only used for 64-bit relocations, but is >> +declared in both configurations of relocs.c - with different >> +types. This has undefined behaviour in general. GNU ld is >> +documented to use the larger size in this case, but other tools >> +may differ and some warn about this. >> + >> +References: https://bugs.debian.org/748577 >> +Reported-by: Michael Tautschnig <mt@debian.org> >> +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> >> +Cc: 748577@bugs.debian.org >> +Cc: Linus Torvalds <torvalds@linux-foundation.org> >> +Link: http://lkml.kernel.org/r/1411561812.3659.23.camel@decadent.org.uk >> +Signed-off-by: Ingo Molnar <mingo@kernel.org> >> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> >> +--- >> + arch/x86/tools/relocs.c | 2 +- >> + 1 file changed, 1 insertion(+), 1 deletion(-) >> + >> +diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c >> +index bbb1d2259ecf..a5efb21d5228 100644 >> +--- a/arch/x86/tools/relocs.c >> ++++ b/arch/x86/tools/relocs.c >> +@@ -695,7 +695,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, >> + * >> + */ >> + static int per_cpu_shndx = -1; >> +-Elf_Addr per_cpu_load_addr; >> ++static Elf_Addr per_cpu_load_addr; >> + >> + static void percpu_init(void) >> + { >> +-- >> +2.25.1 >> + >> diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig >> index 03ca23f414..a8fd0a6dcc 100644 >> --- a/configs/galileo_defconfig >> +++ b/configs/galileo_defconfig >> @@ -1,4 +1,5 @@ >> BR2_x86_x1000=y >> +BR2_GLOBAL_PATCH_DIR=board/intel/galileo/patches >> # Needed for TARGET_GRUB2 >> BR2_TOOLCHAIN_BUILDROOT_WCHAR=y >> # Linux headers same as kernel, a 3.14 series > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
Hi All, Nicholas will take care about bumping uboot and Linux in a couple of weeks. He’s written me privately. Best regards Giulio > Il giorno 13 feb 2022, alle ore 13:56, Giulio Benetti <giulio.benetti@benettiengineering.com> ha scritto: > > Hi Nicolas, > > sorry for html but I’m mobile. > > My patch for fixing the build failure for Galileo has been upstream, but Linux version is very old, > I’ve added a local patch from 2014 as pointed Arnout below. > I don’t have a Galileo board and you are the maintainer, can you please update uboot and Linux versions and send a patch for that after testing please? > > Thank you! > —- > Giulio Benetti > Benetti Engineering sas > >> Il giorno 13 feb 2022, alle ore 12:46, Arnout Vandecappelle <arnout@mind.be> ha scritto: >> >> >> >>>> On 02/02/2022 22:43, Giulio Benetti wrote: >>> Building galileo_defconfig throws error: >>> ``` >>> /usr/bin/ld: arch/x86/tools/relocs_64.o:(.bss+0x0): multiple definition of `per_cpu_load_addr'; arch/x86/tools/relocs_32.o:(.bss+0x0): first defined here >>> ``` >>> To fix this let's add an upstreamed patch[1] and add BR2_GLOBAL_PATCH_DIR >>> to galileo_defconfig to point to where patch is. >>> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eeeda4cd06e828b331b15741a204ff9f5874d28d.patch >>> Fixes: >>> https://gitlab.com/ymorin/buildroot/-/jobs/2035821039 >>> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> >> >> You can't imagine how much joy it gives me to see a patch from 2014 applied here... >> >> >> Applied to master, thanks. >> >> Regards, >> Arnout >> >>> --- >>> ...relocs-Make-per_cpu_load_addr-static.patch | 39 +++++++++++++++++++ >>> configs/galileo_defconfig | 1 + >>> 2 files changed, 40 insertions(+) >>> create mode 100644 board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >>> diff --git a/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >>> new file mode 100644 >>> index 0000000000..1d206cc6d1 >>> --- /dev/null >>> +++ b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch >>> @@ -0,0 +1,39 @@ >>> +From eeeda4cd06e828b331b15741a204ff9f5874d28d Mon Sep 17 00:00:00 2001 >>> +From: Ben Hutchings <ben@decadent.org.uk> >>> +Date: Wed, 24 Sep 2014 13:30:12 +0100 >>> +Subject: [PATCH] x86/relocs: Make per_cpu_load_addr static >>> + >>> +per_cpu_load_addr is only used for 64-bit relocations, but is >>> +declared in both configurations of relocs.c - with different >>> +types. This has undefined behaviour in general. GNU ld is >>> +documented to use the larger size in this case, but other tools >>> +may differ and some warn about this. >>> + >>> +References: https://bugs.debian.org/748577 >>> +Reported-by: Michael Tautschnig <mt@debian.org> >>> +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> >>> +Cc: 748577@bugs.debian.org >>> +Cc: Linus Torvalds <torvalds@linux-foundation.org> >>> +Link: http://lkml.kernel.org/r/1411561812.3659.23.camel@decadent.org.uk >>> +Signed-off-by: Ingo Molnar <mingo@kernel.org> >>> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> >>> +--- >>> + arch/x86/tools/relocs.c | 2 +- >>> + 1 file changed, 1 insertion(+), 1 deletion(-) >>> + >>> +diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c >>> +index bbb1d2259ecf..a5efb21d5228 100644 >>> +--- a/arch/x86/tools/relocs.c >>> ++++ b/arch/x86/tools/relocs.c >>> +@@ -695,7 +695,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, >>> + * >>> + */ >>> + static int per_cpu_shndx = -1; >>> +-Elf_Addr per_cpu_load_addr; >>> ++static Elf_Addr per_cpu_load_addr; >>> + >>> + static void percpu_init(void) >>> + { >>> +-- >>> +2.25.1 >>> + >>> diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig >>> index 03ca23f414..a8fd0a6dcc 100644 >>> --- a/configs/galileo_defconfig >>> +++ b/configs/galileo_defconfig >>> @@ -1,4 +1,5 @@ >>> BR2_x86_x1000=y >>> +BR2_GLOBAL_PATCH_DIR=board/intel/galileo/patches >>> # Needed for TARGET_GRUB2 >>> BR2_TOOLCHAIN_BUILDROOT_WCHAR=y >>> # Linux headers same as kernel, a 3.14 series >> _______________________________________________ >> buildroot mailing list >> buildroot@buildroot.org >> https://lists.buildroot.org/mailman/listinfo/buildroot > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
>>>>> "Giulio" == Giulio Benetti <giulio.benetti@benettiengineering.com> writes: > Building galileo_defconfig throws error: > ``` > /usr/bin/ld: arch/x86/tools/relocs_64.o:(.bss+0x0): multiple > definition of `per_cpu_load_addr'; > arch/x86/tools/relocs_32.o:(.bss+0x0): first defined here > ``` > To fix this let's add an upstreamed patch[1] and add BR2_GLOBAL_PATCH_DIR > to galileo_defconfig to point to where patch is. > [1]: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eeeda4cd06e828b331b15741a204ff9f5874d28d.patch > Fixes: > https://gitlab.com/ymorin/buildroot/-/jobs/2035821039 > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> Committed to 2021.02.x and 2021.11.x, thanks.
diff --git a/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch new file mode 100644 index 0000000000..1d206cc6d1 --- /dev/null +++ b/board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch @@ -0,0 +1,39 @@ +From eeeda4cd06e828b331b15741a204ff9f5874d28d Mon Sep 17 00:00:00 2001 +From: Ben Hutchings <ben@decadent.org.uk> +Date: Wed, 24 Sep 2014 13:30:12 +0100 +Subject: [PATCH] x86/relocs: Make per_cpu_load_addr static + +per_cpu_load_addr is only used for 64-bit relocations, but is +declared in both configurations of relocs.c - with different +types. This has undefined behaviour in general. GNU ld is +documented to use the larger size in this case, but other tools +may differ and some warn about this. + +References: https://bugs.debian.org/748577 +Reported-by: Michael Tautschnig <mt@debian.org> +Signed-off-by: Ben Hutchings <ben@decadent.org.uk> +Cc: 748577@bugs.debian.org +Cc: Linus Torvalds <torvalds@linux-foundation.org> +Link: http://lkml.kernel.org/r/1411561812.3659.23.camel@decadent.org.uk +Signed-off-by: Ingo Molnar <mingo@kernel.org> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> +--- + arch/x86/tools/relocs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c +index bbb1d2259ecf..a5efb21d5228 100644 +--- a/arch/x86/tools/relocs.c ++++ b/arch/x86/tools/relocs.c +@@ -695,7 +695,7 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel, + * + */ + static int per_cpu_shndx = -1; +-Elf_Addr per_cpu_load_addr; ++static Elf_Addr per_cpu_load_addr; + + static void percpu_init(void) + { +-- +2.25.1 + diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig index 03ca23f414..a8fd0a6dcc 100644 --- a/configs/galileo_defconfig +++ b/configs/galileo_defconfig @@ -1,4 +1,5 @@ BR2_x86_x1000=y +BR2_GLOBAL_PATCH_DIR=board/intel/galileo/patches # Needed for TARGET_GRUB2 BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Linux headers same as kernel, a 3.14 series
Building galileo_defconfig throws error: ``` /usr/bin/ld: arch/x86/tools/relocs_64.o:(.bss+0x0): multiple definition of `per_cpu_load_addr'; arch/x86/tools/relocs_32.o:(.bss+0x0): first defined here ``` To fix this let's add an upstreamed patch[1] and add BR2_GLOBAL_PATCH_DIR to galileo_defconfig to point to where patch is. [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eeeda4cd06e828b331b15741a204ff9f5874d28d.patch Fixes: https://gitlab.com/ymorin/buildroot/-/jobs/2035821039 Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> --- ...relocs-Make-per_cpu_load_addr-static.patch | 39 +++++++++++++++++++ configs/galileo_defconfig | 1 + 2 files changed, 40 insertions(+) create mode 100644 board/intel/galileo/patches/linux/0001-x86-relocs-Make-per_cpu_load_addr-static.patch