http://sourceware.org/bugzilla/show_bug.cgi?id=12771
HectorOron hector.oron at gmail dot com changed:
What|Removed |Added
CC||hector.oron at gmail dot
||com
--- Comment #10 from HectorOron hector.oron at gmail dot com 2011-07-01
00:01:13 UTC ---
Hello,
I also got bitten by this problem.
$ echo int main () { ; return 0; } test.c
$ gcc -fno-strict-aliasing -g -g -O2 test.c
/usr/bin/ld: internal error in value_from_output_section, at
../../gold/reloc.cc:1519
collect2: ld returned 1 exit status
$ ld.gold -v
GNU gold (GNU Binutils for Debian 2.21.52.20110606) 1.11
If using ld.bfd instead of gold, it works
(In reply to comment #8)
Try changing the function Arm_relocate_functions::abs32 around line 3284 of
arm.cc to this:
Anyway, I went ahead and applied Ian suggestion:
~/binutils-2.21.52.20110606$ diff -Naur gold/arm.cc.orig gold/arm.cc
--- gold/arm.cc.orig2011-06-30 16:51:57.0 +
+++ gold/arm.cc 2011-06-30 16:54:49.0 +
@@ -3297,10 +3297,9 @@
Arm_address thumb_bit)
{
typedef typename elfcpp::Swap32, big_endian::Valtype Valtype;
-Valtype* wv = reinterpret_castValtype*(view);
-Valtype addend = elfcpp::Swap32, big_endian::readval(wv);
+Valtype addend = elfcpp::Swap_unaligned32, big_endian::readval(view);
Valtype x = psymval-value(object, addend) | thumb_bit;
-elfcpp::Swap32, big_endian::writeval(wv, x);
+elfcpp::Swap_unaligned32, big_endian::writeval(view, x);
return This::STATUS_OKAY;
}
Which produces a successful linkage:
$ gcc -B sandbox/usr/bin/ -Wl,-debug -fno-strict-aliasing -g -g -O2 test.c
Convert string
'sandbox/usr/bin/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/'
into prefixes, separator = ':'
- add prefix: sandbox/usr/bin/
- add prefix: /usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/
- add prefix: /usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/
- add prefix: /usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/
- add prefix: /usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/
- add prefix: /usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/
Convert string
'/home/zumbi/bin:/home/zumbi/bin:/usr/local/bin:/usr/bin:/bin:/usr/games' into
prefixes, separator = ':'
- add prefix: /home/zumbi/bin/
- add prefix: /home/zumbi/bin/
- add prefix: /usr/local/bin/
- add prefix: /usr/bin/
- add prefix: /bin/
- add prefix: /usr/games/
Looking for 'real-ld'
Looking for 'collect-ld'
Looking for 'ld'
Looking for 'gnm'
Looking for 'gnm'
Looking for 'nm'
Looking for 'gstrip'
Looking for 'gstrip'
Looking for 'strip'
Looking for 'gcc'
Looking for 'gcc'
collect2 version 4.6.1 (ARM GNU/Linux with ELF)
ld_file_name= sandbox/usr/bin/ld
c_file_name = /usr/bin/gcc
nm_file_name= sandbox/usr/bin/nm
strip_file_name = sandbox/usr/bin/strip
c_file = /tmp/ccQzTD6a.c
o_file = /tmp/ccYHgcZb.o
COLLECT_GCC_OPTIONS = '-B' 'sandbox/usr/bin/' '-fno-strict-aliasing' '-g' '-g'
'-O2'
COLLECT_GCC = gcc
COMPILER_PATH =
sandbox/usr/bin/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/
LIBRARY_PATH=
sandbox/usr/bin/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/:/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/../../../:/lib/:/usr/lib/:/usr/lib/arm-linux-gnueabi/
sandbox/usr/bin/ld --build-id --no-add-needed --eh-frame-hdr -dynamic-linker
/lib/ld-linux.so.3 -X --hash-style=both -m armelf_linux_eabi
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/../../../crt1.o
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/../../../crti.o
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o
-Lsandbox/usr/bin -L/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1
-L/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/../../..
-L/usr/lib/arm-linux-gnueabi /tmp/ccEn0jEp.o -lgcc --as-needed -lgcc_s
--no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/crtend.o
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.6.1/../../../crtn.o
[Leaving /tmp/ccQzTD6a.c]
[Leaving /tmp/ccYHgcZb.o]
$ ls sandbox/usr/bin/ld -l
lrwxrwxrwx 1 zumbi Debian 7 Jun 30 23:58 sandbox/usr/bin/ld - ld.gold
Best regards and have a nice day,
-- Hector Oron
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email