[lld] r256064 - Regenerated test according to the example assembly at the top. NFC.
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 23 07:03:44 PST 2015
Why not use the assembly :-)
Cheers,
Rafael
On 18 December 2015 at 18:43, Pete Cooper via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: pete
> Date: Fri Dec 18 17:43:17 2015
> New Revision: 256064
>
> URL: http://llvm.org/viewvc/llvm-project?rev=256064&view=rev
> Log:
> Regenerated test according to the example assembly at the top. NFC.
>
> The assembly at the top of this file contained more relocations than
> the YAML. I regenerated it so that we'd have complete relocation testing.
>
> Also added detailed explanations of the relocations in the file so that
> future people don't have to try decode them when something goes wrong.
>
> Modified:
> lld/trunk/test/mach-o/parse-data-relocs-x86_64.yaml
>
> Modified: lld/trunk/test/mach-o/parse-data-relocs-x86_64.yaml
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/mach-o/parse-data-relocs-x86_64.yaml?rev=256064&r1=256063&r2=256064&view=diff
> ==============================================================================
> --- lld/trunk/test/mach-o/parse-data-relocs-x86_64.yaml (original)
> +++ lld/trunk/test/mach-o/parse-data-relocs-x86_64.yaml Fri Dec 18 17:43:17 2015
> @@ -2,7 +2,7 @@
> # RUN: lld -flavor darwin -arch x86_64 -r %s -o %t -print_atoms | FileCheck %s \
> # RUN: && lld -flavor darwin -arch x86_64 %t -r -print_atoms -o %t2 | FileCheck %s
> #
> -# Test parsing and writing of x86_64 text relocations.
> +# Test parsing and writing of x86_64 data relocations.
> #
> # The first step tests if the supplied mach-o file is parsed into the correct
> # set of references. The second step verifies relocations can be round-tripped
> @@ -37,7 +37,9 @@
> --- !mach-o
> arch: x86_64
> file-type: MH_OBJECT
> -flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ]
> +flags: [ ]
> +compat-version: 0.0
> +current-version: 0.0
> has-UUID: false
> OS: unknown
> sections:
> @@ -52,107 +54,186 @@ sections:
> type: S_REGULAR
> attributes: [ ]
> address: 0x0000000000000002
> - content: [ 0x00, 0x00, 0x00, 0x00 ]
> + content: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]
> - segment: __DATA
> section: __data
> type: S_REGULAR
> attributes: [ ]
> - alignment: 3
> - address: 0x0000000000000008
> - content: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + address: 0x000000000000000A
> + content: [
> +# .quad _foo
> +# No addend is needed here as we are referencing _foo directly and that is
> +# encoded entirely in the X86_64_RELOC_UNSIGNED
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +# .quad _foo+4
> +# Addend of 4 is needed here as we are referencing _foo from the
> +# X86_64_RELOC_UNSIGNED, then the addend gives us 4 more.
> 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +# .quad _foo - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned references _foo.
> +# Note the addend here is -16 because that is the offset from here back
> +# to _d.
> + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> +# .quad L1
> +# This is a X86_64_RELOC_UNSIGNED without extern set.
> +# In this case, we encode the section number for L1 in the relocation, and
> +# the addend here is the absolute address of the location in that section
> +# we want to reference.
> 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +# .quad L1 + 2
> +# This is a X86_64_RELOC_UNSIGNED without extern set.
> +# In this case, we encode the section number for L1 in the relocation, and
> +# the addend here is the absolute address of the location in that section
> +# we want to reference. We have a 4 because the section is at address 2
> +# and we want an offset of 2 from there.
> 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> - 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> - 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> - 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> - 0xC8, 0xFF, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF,
> - 0xC2, 0xFF, 0xFF, 0xFF ]
> +# .quad _foo - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned references _foo.
> +# Note the addend here is -40 because that is the offset from here back
> +# to _d.
> + 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> +# .quad _foo + 4 - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned references _foo.
> +# Note the addend here is -44. It would have been -48 because that
> +# would take us from the address of this relocation back to _d. But as
> +# we also add 4 for the offset, we get -44.
> + 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> +# .quad L1 - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned does not have extern set, so the relocation
> +# number is the section number for L1.
> +# Note the addend here is -54. Of that, -56 would be the offset from
> +# this location from _d. The remaining 2 is the absolute address
> +# of L1.
> + 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
> +# .long _foo - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned references _foo.
> +# Note the addend here is -64 because that is the offset from here back
> +# to _d.
> + 0xC0, 0xFF, 0xFF, 0xFF,
> +# .long _foo + 4 - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned references _foo.
> +# Note the addend here is -64. It would have been -68 because that
> +# would take us from the address of this relocation back to _d. But as
> +# we also add 4 for the offset, we get -64.
> + 0xC0, 0xFF, 0xFF, 0xFF,
> +# .long L1 - .
> +# This is the pair X86_64_RELOC_SUBTRACTOR and X86_64_RELOC_UNSIGNED.
> +# The subtractor references _d which is the first nonlocal label in this
> +# section. The unsigned does not have extern set, so the relocation
> +# number is the section number for L1.
> +# Note the addend here is -70. Of that, -72 would be the offset from
> +# this location from _d. The remaining 2 is the absolute address
> +# of L1.
> + 0xBA, 0xFF, 0xFF, 0xFF ]
> relocations:
> - - offset: 0x00000040
> + - offset: 0x00000048
> type: X86_64_RELOC_SUBTRACTOR
> length: 2
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x00000040
> + - offset: 0x00000048
> type: X86_64_RELOC_UNSIGNED
> length: 2
> pc-rel: false
> extern: false
> symbol: 2
> - - offset: 0x0000003C
> + - offset: 0x00000044
> type: X86_64_RELOC_SUBTRACTOR
> length: 2
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x0000003C
> + - offset: 0x00000044
> type: X86_64_RELOC_UNSIGNED
> length: 2
> pc-rel: false
> extern: true
> symbol: 0
> - - offset: 0x00000038
> + - offset: 0x00000040
> type: X86_64_RELOC_SUBTRACTOR
> length: 2
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x00000038
> + - offset: 0x00000040
> type: X86_64_RELOC_UNSIGNED
> length: 2
> pc-rel: false
> extern: true
> symbol: 0
> - - offset: 0x00000030
> + - offset: 0x00000038
> type: X86_64_RELOC_SUBTRACTOR
> length: 3
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x00000030
> + - offset: 0x00000038
> type: X86_64_RELOC_UNSIGNED
> length: 3
> pc-rel: false
> extern: false
> symbol: 2
> - - offset: 0x00000028
> + - offset: 0x00000030
> type: X86_64_RELOC_SUBTRACTOR
> length: 3
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x00000028
> + - offset: 0x00000030
> type: X86_64_RELOC_UNSIGNED
> length: 3
> pc-rel: false
> extern: true
> symbol: 0
> - - offset: 0x00000020
> + - offset: 0x00000028
> type: X86_64_RELOC_SUBTRACTOR
> length: 3
> pc-rel: false
> extern: true
> symbol: 2
> - - offset: 0x00000020
> + - offset: 0x00000028
> type: X86_64_RELOC_UNSIGNED
> length: 3
> pc-rel: false
> extern: true
> symbol: 0
> - - offset: 0x00000018
> + - offset: 0x00000020
> type: X86_64_RELOC_UNSIGNED
> length: 3
> pc-rel: false
> extern: false
> symbol: 2
> - - offset: 0x00000010
> + - offset: 0x00000018
> type: X86_64_RELOC_UNSIGNED
> length: 3
> pc-rel: false
> extern: false
> symbol: 2
> + - offset: 0x00000010
> + type: X86_64_RELOC_SUBTRACTOR
> + length: 3
> + pc-rel: false
> + extern: true
> + symbol: 2
> + - offset: 0x00000010
> + type: X86_64_RELOC_UNSIGNED
> + length: 3
> + pc-rel: false
> + extern: true
> + symbol: 0
> - offset: 0x00000008
> type: X86_64_RELOC_UNSIGNED
> length: 3
> @@ -177,14 +258,23 @@ local-symbols:
> - name: _d
> type: N_SECT
> sect: 3
> - value: 0x0000000000000008
> + value: 0x000000000000000A
> +page-size: 0x00000000
> ...
>
>
> -# CHECK: defined-atoms:
> +# CHECK:defined-atoms:
> # CHECK: - name: _d
> # CHECK: type: data
> -# CHECK: references:
> +# CHECK: content: [ 00, 00, 00, 00, 00, 00, 00, 00, 04, 00, 00, 00,
> +# CHECK: 00, 00, 00, 00, F0, FF, FF, FF, FF, FF, FF, FF,
> +# CHECK: {{..}}, 00, 00, 00, 00, 00, 00, 00, {{..}}, 00, 00, 00,
> +# CHECK: 00, 00, 00, 00, D8, FF, FF, FF, FF, FF, FF, FF,
> +# CHECK: D4, FF, FF, FF, FF, FF, FF, FF, {{..}}, {{..}}, {{..}}, {{..}},
> +# CHECK: {{..}}, {{..}}, {{..}}, {{..}}, C0, FF, FF, FF, C0, FF, FF, FF,
> +# CHECK: {{..}}, {{..}}, {{..}}, {{..}} ]
> +# CHECK: dead-strip: never
> +# CHECK: references:
> # CHECK: - kind: pointer64
> # CHECK: offset: 0
> # CHECK: target: _foo
> @@ -192,39 +282,45 @@ local-symbols:
> # CHECK: offset: 8
> # CHECK: target: _foo
> # CHECK: addend: 4
> -# CHECK: - kind: pointer64Anon
> +# CHECK: - kind: delta64
> # CHECK: offset: 16
> -# CHECK: target: L003
> +# CHECK: target: _foo
> # CHECK: - kind: pointer64Anon
> # CHECK: offset: 24
> # CHECK: target: L003
> +# CHECK: - kind: pointer64Anon
> +# CHECK: offset: 32
> +# CHECK: target: L003
> # CHECK: addend: 2
> # CHECK: - kind: delta64
> -# CHECK: offset: 32
> +# CHECK: offset: 40
> # CHECK: target: _foo
> # CHECK: - kind: delta64
> -# CHECK: offset: 40
> +# CHECK: offset: 48
> # CHECK: target: _foo
> # CHECK: addend: 4
> # CHECK: - kind: delta64Anon
> -# CHECK: offset: 48
> +# CHECK: offset: 56
> # CHECK: target: L003
> # CHECK: - kind: delta32
> -# CHECK: offset: 56
> +# CHECK: offset: 64
> # CHECK: target: _foo
> # CHECK: - kind: delta32
> -# CHECK: offset: 60
> +# CHECK: offset: 68
> # CHECK: target: _foo
> # CHECK: addend: 4
> # CHECK: - kind: delta32Anon
> -# CHECK: offset: 64
> +# CHECK: offset: 72
> # CHECK: target: L003
> # CHECK: - name: _foo
> # CHECK: content: [ C3 ]
> +# CHECK: dead-strip: never
> # CHECK: - name: _bar
> # CHECK: content: [ C3 ]
> +# CHECK: dead-strip: never
> # CHECK: - ref-name: L003
> # CHECK: type: unknown
> -# CHECK: content: [ 00, 00, 00, 00 ]
> +# CHECK: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
> # CHECK: section-choice: custom-required
> # CHECK: section-name: __DATA/__custom
> +
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list