[lld] r189776 - Partially revert r189718 to add entry symbol to dead strip root.

Rui Ueyama ruiu at google.com
Mon Sep 2 19:51:04 PDT 2013


Just rolling back this patch will again regress COFF handling, so I don't
want to simply revert. Instead, I think I can add code to Driver.cpp to
copy entry symbol name to deadStripRoot. In this way the two symbols won't
be added in your example. What do you think?


On Mon, Sep 2, 2013 at 6:50 PM, Shankar Easwaran <shankare at codeaurora.org>wrote:

> Hi Ruiu,
>
> This cannot be done, there is a genuine case that if you set the entry
> symbol twice like this
>
> lld -flavor gnu -target x86_64 -e _start -e main
>
> I want to take only the last entry symbol, now this will trigger an
> undefine symbol twice.
>
> Can you please revert this change as it breaks ELF ?
>
> Thanks
>
> Shankar Easwaran
>
>
>
> On 9/2/2013 8:00 PM, Rui Ueyama wrote:
>
>> Author: ruiu
>> Date: Mon Sep  2 20:00:01 2013
>> New Revision: 189776
>>
>> URL: http://llvm.org/viewvc/llvm-**project?rev=189776&view=rev<http://llvm.org/viewvc/llvm-project?rev=189776&view=rev>
>> Log:
>> Partially revert r189718 to add entry symbol to dead strip root.
>>
>> Also added a test to verify that entry symbol is not stripped even if
>> dead stripping is enabled.
>>
>> Added:
>>      lld/trunk/test/pecoff/entry.**test
>> Modified:
>>      lld/trunk/include/lld/Core/**LinkingContext.h
>>
>> Modified: lld/trunk/include/lld/Core/**LinkingContext.h
>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/include/lld/**
>> Core/LinkingContext.h?rev=**189776&r1=189775&r2=189776&**view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/LinkingContext.h?rev=189776&r1=189775&r2=189776&view=diff>
>> ==============================**==============================**
>> ==================
>> --- lld/trunk/include/lld/Core/**LinkingContext.h (original)
>> +++ lld/trunk/include/lld/Core/**LinkingContext.h Mon Sep  2 20:00:01
>> 2013
>> @@ -184,7 +184,9 @@ public:
>>     // Set the entry symbol name. You may also need to call
>> addDeadStripRoot() for
>>     // the symbol if your platform supports dead-stripping, so that the
>> symbol
>>     // will not be removed from the output.
>> -  virtual void setEntrySymbolName(StringRef name) {
>> +  void setEntrySymbolName(StringRef name) {
>> +    // Entry function have to be resolved as an undefined symbol.
>> +    addInitialUndefinedSymbol(**name);
>>       _entrySymbolName = name;
>>     }
>>
>> Added: lld/trunk/test/pecoff/entry.**test
>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/test/pecoff/**
>> entry.test?rev=189776&view=**auto<http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/entry.test?rev=189776&view=auto>
>> ==============================**==============================**
>> ==================
>> --- lld/trunk/test/pecoff/entry.**test (added)
>> +++ lld/trunk/test/pecoff/entry.**test Mon Sep  2 20:00:01 2013
>> @@ -0,0 +1,9 @@
>> +# REQUIRES: debug
>> +# Verify that entry atom will not be dead-stripped.
>> +
>> +# RUN: yaml2obj %p/Inputs/main.obj.yaml > %t.obj
>> +# RUN: lld -flavor link /mllvm -debug-only=WriterPECOFF /out:%t.exe \
>> +# RUN:   /subsystem:console /entry:_main /force -- %t.obj >& %t.log
>> +# RUN: FileCheck %s < %t.log
>> +
>> +CHECK: : _main
>>
>>
>> ______________________________**_________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/**mailman/listinfo/llvm-commits<http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>>
>>
>>
>
> --
> 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/20130902/acc85ba7/attachment.html>


More information about the llvm-commits mailing list