This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gold] Merging string literals with bigger alignment


On Wed, May 1, 2013 at 11:24 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Wed, May 1, 2013 at 10:43 AM, Cary Coutant <ccoutant@google.com> wrote:
>>> `echo g++ -W -Wall    -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fmerge-constants -g -O2   -o basic_static_test | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` -Bgcctestdir/ -static basic_test.o
>>> collect2: ld terminated with signal 6 [Aborted]
>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>   what():  std::bad_alloc
>>> make[5]: *** [basic_static_test] Error 1
>>
>> I'm not seeing this. What target?
>>
>>> Fixing new_key_offset() is easy, but the gold bootstrap test fails
>>>
>>> (cd gcctestdir2 && ln -s ../ld1 ld)
>>> g++ -m64 -W -Wall    -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frandom-seed=ld2 -g -O2 -Bgcctestdir2/ -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0   -o ld2 main.o powerpc.o libgold.a ../libiberty/libiberty.a    -ldl -lz
>>> gcctestdir2/ld: error: cannot find main.o
>>> gcctestdir2/ld: error: cannot find powerpc.o
>>> gcctestdir2/ld: error: cannot find libgold.a
>>> gcctestdir2/ld: error: cannot find ../libiberty/libiberty.a
>>> .zdebug_line: error: undefined reference to 'main'
>>> collect2: error: ld returned 1 exit status
>>
>> I don't see this one either.
>>
>> -cary
>
> I can reproduce it on Fedora 18 with GCC 4.7.2.  ld1 is mis-linked by ld-new.
>
> --
> H.J.

String merging is broken:

Breakpoint 1, gold::Input_file::try_extra_search_path (
    pindex=pindex@entry=0x799530,
    input_argument=input_argument@entry=0x757c98, filename="main.o",
    found_name=found_name@entry=0x879578, namep=namep@entry=0x7fffffff7110)
    at /export/gnu/import/git/binutils/gold/fileread.cc:975
975      if (*pindex > 0 || ::stat(name.c_str(), &dummy_stat) < 0)
(gdb) p name
$1 = "Group end without group start/main.o"
(gdb)

--
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]