[lld] r205391 - [ELF] Add -z muldefs option.

Shankar Easwaran shankare at codeaurora.org
Tue Apr 1 21:17:46 PDT 2014


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.

Thanks

Shankar Easwaran

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation




More information about the llvm-commits mailing list