This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Support -fuse-ld=bfd and -fuse-ld=gold
On Thu, Nov 29, 2012 at 12:43 AM, Richard Biener
> On Thu, Nov 29, 2012 at 5:18 AM, H.J. Lu <firstname.lastname@example.org> wrote:
>> From: "H.J. Lu" <email@example.com>
>> To: firstname.lastname@example.org
>> Cc: Joseph Myers <email@example.com>, Paolo Bonzini <firstname.lastname@example.org>
>> Subject: [PATCH] Support -fuse-ld=bfd and -fuse-ld=gold
>> Binutils supports 2 linkers, ld.gold and ld.bfd. One of them is
>> configured as the default linker, ld, which is used by GCC. Sometimes,
>> we want to use the alternate linker with GCC at run-time. This patch
>> adds -fuse-ld=bfd and -fuse-ld=gold options to GCC driver. It changes
>> collect2.c to pick either ld.bfd or ld.gold. It also adds
>> ORIGINAL_LD_BFD_FOR_TARGET and ORIGINAL_LD_GOLD_FOR_TARGET to
>> exec-tool.in to add -fuse-ld=bfd and -fuse-ld=gold support to
>> collect-ld. Since ld.bfd nor ld.gold know the new options, you
>> will get
>> # ./xgcc -B./ /tmp/x.c -fuse-ld=gold -v
>> ./collect-ld --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -fuse-ld=gold /lib/../lib64/crt1.o /lib/../lib64/crti.o ./crtbegin.o -L. -L/lib/../lib64 -L/usr/lib/../lib64 /tmp/cclVWcGz.o -v -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed ./crtend.o /lib/../lib64/crtn.o
>> GNU gold (Linux/GNU Binutils 126.96.36.199.7.20121127) 1.11
>> /usr/local/bin/ld.gold: fatal error: -f/--auxiliary may not be used without -shared
>> collect2: error: ld returned 1 exit status
>> This is because we pass everything to ld and ld.bfd/ld.gold doesn't
>> understand -fuse-ld=bfd/-fuse-ld=gold. It isn't a problem for collect2
>> since it will filter-out -fuse-ld=bfd/-fuse-ld=gold. I will submit a
>> binutils patch to ignore -fuse-ld=bfd/-fuse-ld=gold, similar to -flto
>> OK to install?
> Do we need to consider GNU ld and gold coming from different binutils versions
> and thus do we need two sets of linker feature tests at configure
> time? Eventually
> also if GNU ld and gold are not in feature-parity for the same binutils version?
> That is, isn't this going to create hard to debug issues for users?
Actually, it helps to debug issues for users. At the moment, we don't
know which linker is the default linker. With -fuse-ld, we can specify
which linker to use.