summaryrefslogtreecommitdiffstats
path: root/lld/test/old-elf/x86-64-dynamic.test
blob: d957e6ee85ee3fc73e5b64996a586387195af8b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Checks that linking an object file with a shared object creates the necessary
# PLT/GOT Entries
RUN: lld -flavor old-gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
RUN:   %p/Inputs/shared.so-x86-64 --output-filetype=yaml -o %t1 --noinhibit-exec
RUN: FileCheck %s < %t1

RUN: lld -flavor old-gnu -target x86_64-linux %p/Inputs/use-shared-32s.x86-64 \
RUN:   %p/Inputs/shared.so-x86-64 --output-filetype=yaml --noinhibit-exec \
RUN: | FileCheck %s --check-prefix=32S

CHECK:  - name:            main
CHECK:    scope:           global
CHECK:    references:
CHECK:      - kind:            R_X86_64_PC32
CHECK:        offset:          18
CHECK:        target:          [[PLTNAME:[-a-zA-Z0-9_]+]]
CHECK:        addend:          -4
CHECK:      - kind:            R_X86_64_GOTPCREL
CHECK:        offset:          25
CHECK:        target:          [[GOTNAME:[-a-zA-Z0-9_]+]]
CHECK:        addend:          -4

        - name:            .PLT0
CHECK:    type:            stub
CHECK:    content:         [ FF, 35, 00, 00, 00, 00, FF, 25, 00, 00, 00, 00,
CHECK:                       90, 90, 90, 90 ]
CHECK:    alignment:       16
CHECK:    section-choice:  custom-required
CHECK:    section-name:    .plt
CHECK:    references:
CHECK:      - kind:            R_X86_64_PC32
CHECK:        offset:          2
              target:          __got0
CHECK:        addend:          -4
CHECK:      - kind:            R_X86_64_PC32
CHECK:        offset:          8
              target:          __got1
CHECK:        addend:          -4
        - name:            [[PLTNAME]]
CHECK:    type:            stub
CHECK:    content:         [ FF, 25, 00, 00, 00, 00, 68, 00, 00, 00, 00, E9,
CHECK:                       00, 00, 00, 00 ]
CHECK:    alignment:       16
CHECK:    section-choice:  custom-required
CHECK:    section-name:    .plt
CHECK:    references:
CHECK:      - kind:            R_X86_64_PC32
CHECK:        offset:          2
              target:          __got_foo
CHECK:        addend:          -4
CHECK:      - kind:            LLD_R_X86_64_GOTRELINDEX
CHECK:        offset:          7
              target:          __got_foo
CHECK:      - kind:            R_X86_64_PC32
CHECK:        offset:          12
              target:          .PLT0
CHECK:        addend:          -4

// Don't check the GOT and PLT names as they are only present in assert builds.
CHECK:    type:            got
CHECK:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00 ]
CHECK:    section-choice:  custom-required
CHECK:    section-name:    .got
CHECK:    permissions:     rw-
CHECK:    references:
CHECK:      - kind:            R_X86_64_GLOB_DAT
CHECK:        offset:          0
CHECK:        target:          i

CHECK:shared-library-atoms:
CHECK:  - name:            foo
CHECK:    load-name:       shared.so-x86-64

32S: name: main
32S: kind: R_X86_64_PC32
32S: target: func
32S: kind: R_X86_64_32S
32S: kind: R_X86_64_PC32
32S: type: stub
OpenPOWER on IntegriCloud