[lld] r227711 - [test] Add test for section groups and deadstrip
Rafael EspĂndola
rafael.espindola at gmail.com
Thu Feb 5 14:53:17 PST 2015
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.s
Type: application/octet-stream
Size: 314 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150205/7982b3fd/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run.sh
Type: application/x-sh
Size: 288 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150205/7982b3fd/attachment.sh>
More information about the llvm-commits
mailing list