[lld] r205391 - [ELF] Add -z muldefs option.
Rui Ueyama
ruiu at google.com
Tue Apr 1 21:30:00 PDT 2014
On Tue, Apr 1, 2014 at 9:17 PM, Shankar Easwaran <shankare at codeaurora.org>wrote:
> On 4/1/2014 11:12 PM, Rui Ueyama wrote:
>
>> On Tue, Apr 1, 2014 at 8:57 PM, Shankar Easwaran <shankarke at gmail.com
>> >wrote:
>>
>> Author: shankare
>>> Date: Tue Apr 1 22:57:37 2014
>>> New Revision: 205391
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=205391&view=rev
>>> Log:
>>> [ELF] Add -z muldefs option.
>>>
>>> This adds -z muldefs option which is widely used over
>>> --allow-multiple-definition.
>>>
>>> This option is supported by the GNU linker.
>>>
>>> Modified:
>>> lld/trunk/lib/Driver/GnuLdDriver.cpp
>>> lld/trunk/test/elf/allowduplicates.objtxt
>>>
>>> Modified: lld/trunk/lib/Driver/GnuLdDriver.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/
>>> GnuLdDriver.cpp?rev=205391&r1=205390&r2=205391&view=diff
>>>
>>> ============================================================
>>> ==================
>>> --- lld/trunk/lib/Driver/GnuLdDriver.cpp (original)
>>> +++ lld/trunk/lib/Driver/GnuLdDriver.cpp Tue Apr 1 22:57:37 2014
>>> @@ -440,6 +440,16 @@ bool GnuLdDriver::parse(int argc, const
>>> groupStack.pop();
>>> break;
>>>
>>> + case OPT_z: {
>>> + StringRef extOpt = inputArg->getValue();
>>> + if (extOpt == "muldefs")
>>> + ctx->setAllowDuplicates(true);
>>> + else
>>> + diagnostics << "warning: ignoring unknown argument for -z: " <<
>>> extOpt
>>> + << "\n";
>>> + break;
>>> + }
>>> +
>>> case OPT_INPUT:
>>> case OPT_l: {
>>> bool isDashlPrefix = (inputArg->getOption().getID() == OPT_l);
>>>
>>> Modified: lld/trunk/test/elf/allowduplicates.objtxt
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/
>>> allowduplicates.objtxt?rev=205391&r1=205390&r2=205391&view=diff
>>>
>>> ============================================================
>>> ==================
>>> --- lld/trunk/test/elf/allowduplicates.objtxt (original)
>>> +++ lld/trunk/test/elf/allowduplicates.objtxt Tue Apr 1 22:57:37 2014
>>> @@ -1,8 +1,11 @@
>>> -# RUN: lld -flavor gnu -target x86_64 --allow-multiple-definition -r %s
>>> \
>>> -# RUN: --output-filetype=yaml | FileCheck %s
>>> +# RUN: lld -flavor gnu -target x86_64 --allow-multiple-definition %s \
>>> +# RUN: --output-filetype=yaml --noinhibit-exec | FileCheck %s
>>> #
>>> -# RUN: not lld -flavor gnu -target x86_64 -r %s --output-filetype=yaml
>>> 2>&1 \
>>> -# RUN: | FileCheck -check-prefix=ERROR %s
>>> +# RUN: not lld -flavor gnu -target x86_64 %s --output-filetype=yaml \
>>> +# RUN: --noinhibit-exec 2>&1 | FileCheck -check-prefix=ERROR %s
>>> +#
>>> +# RUN: lld -flavor gnu -target x86_64 -z muldefs %s \
>>> +# RUN: --noinhibit-exec --output-filetype=yaml | FileCheck %s
>>>
>>> Why do you now need --noinhibit-exec?
>>
> The testcase previously used -r, which is not supported (or) not
> implemented at this time.
>
> --noinhibit-exec tries to keep the executable even if there is an
> undefined symbol, which in this case corresponds to _start undefined.
-r was intentional -- although ELF writer does not support writing it, YAML
writer does. It was slightly better than --noinhibit-exec because it did
not warn on unresolved symbols unlike --noinhibit-exec.
> Thanks
>
> Shankar Easwaran
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by the Linux Foundation
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140401/0fb60793/attachment.html>
More information about the llvm-commits
mailing list