Skip to contentSkip to conversation

Disable gcc-4.8.x + binutils-2.25 + MIPS combination

PATCH New Vicente Olivert Riera 3 participants 3 messages Jul 2, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Disable gcc-4.8.x + binutils-2.25 + MIPS combination

This combination causes a compilation failure of the host-gcc-final recipe like this one:

/br/output/host/usr/mips-buildroot-linux-gnu/bin/ld:
.libs/gload.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC

The problem is the file 'libatomic/gload.c' is compiled without -fPIC when using binutils-2.25. All gcc (with libatomic) versions below 4.9.3 are affected by this issue.

Here is a summary of affected/unaffected versions in Buildroot:

4.7.x: unaffected (doesn't have libatomic)
4.8.x: affected
4.9.x: unaffected (we have 4.9.3 which is fixed)
5.1.x: unaffected

The fix can be found here:

https://github.com/gcc-mirror/gcc/commit/57f5c0954f95cb37f995d60167ddde06c7d6e697

However, given the following reasons...

- Upstream gcc 4.8 branch is closed.
- The fix is very hard to backport from 4.9 to 4.8.
- This stuff is insanely sensitive and not working at all could be better than looking like it works but not quite.

...I think the best choice is to disable that combination in Buildroot.

---
 package/gcc/Config.in.host | 2 ++
 1 file changed, 2 insertions(+)
package/gcc/Config.in.host +2 -0
index 1fc0b83..4501b32 100644
@@ -60,6 +60,8 @@ choice
 		depends on !BR2_cortex_a12
 		# Broken or unsupported PPC cores
 		depends on !BR2_powerpc_power8
+		# gcc-4.8.x + binutils-2.25 is broken for MIPS
+		depends on !((BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) && BR2_BINUTILS_VERSION_2_25)
 		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
 
Signature · 1 line
2.3.6
#1 lore raw

PATCH 1/1 Disable gcc-4.8.x + binutils-2.25 + MIPS combination

Vicente, All,

On 2015-07-02 17:19 +0200, Vicente Olivert Riera spake thusly:

Quoted 22 lines

This combination causes a compilation failure of the host-gcc-final recipe like this one:

/br/output/host/usr/mips-buildroot-linux-gnu/bin/ld:
.libs/gload.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC

The problem is the file 'libatomic/gload.c' is compiled without -fPIC when using binutils-2.25. All gcc (with libatomic) versions below 4.9.3 are affected by this issue.

Here is a summary of affected/unaffected versions in Buildroot:

4.7.x: unaffected (doesn't have libatomic)
4.8.x: affected
4.9.x: unaffected (we have 4.9.3 which is fixed)
5.1.x: unaffected

The fix can be found here:

https://github.com/gcc-mirror/gcc/commit/57f5c0954f95cb37f995d60167ddde06c7d6e697

Quoted 8 lines

However, given the following reasons...

- Upstream gcc 4.8 branch is closed.
- The fix is very hard to backport from 4.9 to 4.8.
- This stuff is insanely sensitive and not working at all could be better than looking like it works but not quite.

...I think the best choice is to disable that combination in Buildroot.

So do I.

Quoted 1 line

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 package/gcc/Config.in.host | 2 ++
 1 file changed, 2 insertions(+)
package/gcc/Config.in.host +2 -0
index 1fc0b83..4501b32 100644
@@ -60,6 +60,8 @@ choice
 		depends on !BR2_cortex_a12
 		# Broken or unsupported PPC cores
 		depends on !BR2_powerpc_power8
+		# gcc-4.8.x + binutils-2.25 is broken for MIPS
+		depends on !((BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) && BR2_BINUTILS_VERSION_2_25)
 		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
 
Signature · 6 lines
2.3.6

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 Disable gcc-4.8.x + binutils-2.25 + MIPS combination

In reply to Vicente Olivert Riera

Dear Vicente Olivert Riera,

Quoted 29 lines · Vicente Olivert Riera

This combination causes a compilation failure of the host-gcc-final recipe like this one:

/br/output/host/usr/mips-buildroot-linux-gnu/bin/ld:
.libs/gload.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC

The problem is the file 'libatomic/gload.c' is compiled without -fPIC when using binutils-2.25. All gcc (with libatomic) versions below 4.9.3 are affected by this issue.

Here is a summary of affected/unaffected versions in Buildroot:

4.7.x: unaffected (doesn't have libatomic)
4.8.x: affected
4.9.x: unaffected (we have 4.9.3 which is fixed)
5.1.x: unaffected

The fix can be found here:

https://github.com/gcc-mirror/gcc/commit/57f5c0954f95cb37f995d60167ddde06c7d6e697

However, given the following reasons...

- Upstream gcc 4.8 branch is closed.
- The fix is very hard to backport from 4.9 to 4.8.
- This stuff is insanely sensitive and not working at all could be better than looking like it works but not quite.

Quoted 6 lines

...I think the best choice is to disable that combination in Buildroot.

---
 package/gcc/Config.in.host | 2 ++
 1 file changed, 2 insertions(+)

Applied, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com