[lld] r227711 - [test] Add test for section groups and deadstrip
Shankar Easwaran
shankare at codeaurora.org
Thu Feb 5 16:12:58 PST 2015
You need to keep the group if you are referring to one function in the
group. Its a bug with gold/gnu if its throwing away the whole group.
On 2/5/2015 4:53 PM, Rafael EspĂndola wrote:
> I think this is testing for a gnu ld bug/limitation:
>
> With the attached testcase, gnu ld keeps zed and bar. Gold keeps only bar.
>
> lld keeps _start, bad, zed and produces wrong bindings :-(
>
>
> On 1 February 2015 at 00:47, Shankar Easwaran <shankare at codeaurora.org> wrote:
>> Author: shankare
>> Date: Sat Jan 31 23:47:02 2015
>> New Revision: 227711
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=227711&view=rev
>> Log:
>> [test] Add test for section groups and deadstrip
>>
>> This adds a test that deadstrip should preserve the section group even if there
>> is only one reference to a function in the group.
>>
>> Added:
>> lld/trunk/test/core/sectiongroup-deadstrip.objtxt
>>
>> Added: lld/trunk/test/core/sectiongroup-deadstrip.objtxt
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/core/sectiongroup-deadstrip.objtxt?rev=227711&view=auto
>> ==============================================================================
>> --- lld/trunk/test/core/sectiongroup-deadstrip.objtxt (added)
>> +++ lld/trunk/test/core/sectiongroup-deadstrip.objtxt Sat Jan 31 23:47:02 2015
>> @@ -0,0 +1,92 @@
>> +# Test for section group members be preserved even if there is a
>> +# reference to only one functions in the group.
>> +# RUN: lld -core --dead-strip %s | FileCheck %s
>> +
>> +#
>> +# Test that section groups are parsed properly when there is a reference to a
>> +# group atom from outside a group.
>> +#
>> +
>> +---
>> +defined-atoms:
>> + - name: entry
>> + dead-strip: never
>> + references:
>> + - offset: 1
>> + kind: pcrel32
>> + target: d1
>> + - name: f1
>> + scope: global
>> + type: code
>> + - name: f2
>> + scope: global
>> + type: code
>> + - name: g1
>> + scope: global
>> + type: code
>> + - name: d1
>> + scope: global
>> + type: data
>> + - name: g1
>> + scope: global
>> + type: group-comdat
>> + references:
>> + - kind: group-child
>> + target: f1
>> + - kind: group-child
>> + target: f2
>> + - kind: group-child
>> + target: d1
>> + - kind: group-child
>> + target: g1
>> + - name: anotherfunction
>> + scope: global
>> + type: data
>> + references:
>> + - kind: layout-before
>> + target: f1
>> +---
>> +undefined-atoms:
>> + - name: f1
>> + can-be-null: never
>> +...
>> +
>> +#CHECK: defined-atoms:
>> +#CHECK: - name: g1
>> +#CHECK: ref-name: [[PARENT:[a-zA-Z\.0-9_]+]]
>> +#CHECK: scope: global
>> +#CHECK: type: group-comdat
>> +#CHECK: references:
>> +#CHECK: - kind: group-child
>> +#CHECK: offset: 0
>> +#CHECK: target: [[GCHILDONE:[a-zA-Z\.0-9_]+]]
>> +#CHECK: - kind: group-child
>> +#CHECK: offset: 0
>> +#CHECK: target: [[GCHILDTWO:[a-zA-Z\.0-9_]+]]
>> +#CHECK: - kind: group-child
>> +#CHECK: offset: 0
>> +#CHECK: target: [[GCHILDTHREE:[a-zA-Z\.0-9_]+]]
>> +#CHECK: - kind: group-child
>> +#CHECK: offset: 0
>> +#CHECK: target: [[GCHILDFOUR:[a-zA-Z\.0-9_]+]]
>> +#CHECK: - name: f1
>> +#CHECK: ref-name: [[GCHILDONE]]
>> +#CHECK: scope: global
>> +#CHECK: - name: f2
>> +#CHECK: ref-name: [[GCHILDTWO]]
>> +#CHECK: scope: global
>> +#CHECK: - name: d1
>> +#CHECK: ref-name: [[GCHILDTHREE]]
>> +#CHECK: scope: global
>> +#CHECK: type: data
>> +#CHECK: - name: g1
>> +#CHECK: ref-name: [[GCHILDFOUR]]
>> +#CHECK: scope: global
>> +#CHECK: - name: anotherfunction
>> +#CHECK: scope: global
>> +#CHECK: type: data
>> +#CHECK: references:
>> +#CHECK: - kind: layout-before
>> +#CHECK: offset: 0
>> +#CHECK: target: [[GCHILDONE]]
>> +#CHECK: ...
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> 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
More information about the llvm-commits
mailing list