diff mbox series

board/intel/galileo: fix build failure with host gcc 10

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

Commit Message

Giulio Benetti Feb. 2, 2022, 9:43 p.m. UTC
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

Comments

Arnout Vandecappelle Feb. 13, 2022, 11:46 a.m. UTC | #1
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
Giulio Benetti Feb. 13, 2022, 12:56 p.m. UTC | #2
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
Giulio Benetti Feb. 26, 2022, 10:19 a.m. UTC | #3
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
Peter Korsgaard Feb. 27, 2022, 7:58 p.m. UTC | #4
>>>>> "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 mbox series

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