Bootstrap of ARM Cortex-M3 cross-compiler with LTO broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all:

I have been building ARM Cortex-M3 cross-compiler toolchains for years with makefiles similar to this one:

https://github.com/rdiez/JtagDue/blob/master/Toolchain/Makefile

I am trying to upgrade that makefile from GCC 10.2 to GCC 11.2 (search for "VersionSet9" in that makefile), and I am getting this error from ld:

/usr/bin/ld: /tmp/g++-mapper-server.98PJcy.ltrans0.ltrans.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:94: g++-mapper-server] Error 1
make[2]: *** [Makefile:10549: all-c++tools] Error 2

This is very similar to the following bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98324

I checked, and the fix linked from this bug is included in version GCC 11.2 . But I am still getting that error.

The way I am building the toolchain is not the same as described in that bug. I have never used option "--enable-default-pie" in the past, and I have never used option "-with-build-config=bootstrap-lto-lean", and I still was able build cross-toolchains with many GCC versions for years.

The target is actually an embedded ARM Cortex-M3 microcontroller with fixed memory addresses (a "bare metal" firmware without OS), so I guess that I do not really need PIE. It may even cost some performance, if I understand correctly what PIE does.

I am guessing that bootstrapping a cross-compiler GCC with LTO is still broken with its default PIE setting.

I already added Comment 7 about it to that bug, but got no reply yet.

Can anybody here help?

Thanks in advance,
  rdiez




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux