reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    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
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
  148
  149
  150
  151
  152
  153
  154
  155
  156
  157
  158
  159
  160
  161
  162
  163
  164
  165
  166
  167
  168
  169
  170
  171
  172
  173
  174
  175
  176
  177
  178
  179
  180
  181
  182
  183
  184
  185
  186
  187
  188
  189
  190
  191
  192
  193
  194
  195
  196
  197
  198
  199
  200
  201
  202
  203
  204
  205
  206
  207
  208
  209
  210
  211
  212
  213
  214
  215
  216
  217
  218
  219
  220
  221
  222
  223
  224
  225
  226
  227
  228
  229
  230
  231
  232
## Test that llvm-readobj/llvm-readelf shows proper relocation type
## names and values for x86_64 target.

# RUN: yaml2obj %s -o %t-x86_64.o
# RUN: llvm-readobj -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=GNU

# LLVM: Type: R_X86_64_NONE (0)
# LLVM: Type: R_X86_64_64 (1)
# LLVM: Type: R_X86_64_PC32 (2)
# LLVM: Type: R_X86_64_GOT32 (3)
# LLVM: Type: R_X86_64_PLT32 (4)
# LLVM: Type: R_X86_64_COPY (5)
# LLVM: Type: R_X86_64_GLOB_DAT (6)
# LLVM: Type: R_X86_64_JUMP_SLOT (7)
# LLVM: Type: R_X86_64_RELATIVE (8)
# LLVM: Type: R_X86_64_GOTPCREL (9)
# LLVM: Type: R_X86_64_32 (10)
# LLVM: Type: R_X86_64_32S (11)
# LLVM: Type: R_X86_64_16 (12)
# LLVM: Type: R_X86_64_PC16 (13)
# LLVM: Type: R_X86_64_8 (14)
# LLVM: Type: R_X86_64_PC8 (15)
# LLVM: Type: R_X86_64_DTPMOD64 (16)
# LLVM: Type: R_X86_64_DTPOFF64 (17)
# LLVM: Type: R_X86_64_TPOFF64 (18)
# LLVM: Type: R_X86_64_TLSGD (19)
# LLVM: Type: R_X86_64_TLSLD (20)
# LLVM: Type: R_X86_64_DTPOFF32 (21)
# LLVM: Type: R_X86_64_GOTTPOFF (22)
# LLVM: Type: R_X86_64_TPOFF32 (23)
# LLVM: Type: R_X86_64_PC64 (24)
# LLVM: Type: R_X86_64_GOTOFF64 (25)
# LLVM: Type: R_X86_64_GOTPC32 (26)
# LLVM: Type: R_X86_64_GOT64 (27)
# LLVM: Type: R_X86_64_GOTPCREL64 (28)
# LLVM: Type: R_X86_64_GOTPC64 (29)
# LLVM: Type: R_X86_64_GOTPLT64 (30)
# LLVM: Type: R_X86_64_PLTOFF64 (31)
# LLVM: Type: R_X86_64_SIZE32 (32)
# LLVM: Type: R_X86_64_SIZE64 (33)
# LLVM: Type: R_X86_64_GOTPC32_TLSDESC (34)
# LLVM: Type: R_X86_64_TLSDESC_CALL (35)
# LLVM: Type: R_X86_64_TLSDESC (36)
# LLVM: Type: R_X86_64_IRELATIVE (37)
# LLVM: Type: R_X86_64_GOTPCRELX (41)
# LLVM: Type: R_X86_64_REX_GOTPCRELX (42)

# GNU:      Relocation section '.rela.text' at offset 0x48 contains 40 entries:
# GNU-NEXT:     Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
# GNU-NEXT: 0000000000000003  0000000100000000 R_X86_64_NONE          0000000000000000 foo + 0
# GNU-NEXT: 000000000000000a  0000000100000001 R_X86_64_64            0000000000000000 foo + 0
# GNU-NEXT: 0000000000000011  0000000100000002 R_X86_64_PC32          0000000000000000 foo + 0
# GNU-NEXT: 0000000000000018  0000000100000003 R_X86_64_GOT32         0000000000000000 foo + 0
# GNU-NEXT: 000000000000001f  0000000100000004 R_X86_64_PLT32         0000000000000000 foo + 0
# GNU-NEXT: 0000000000000026  0000000100000005 R_X86_64_COPY          0000000000000000 foo + 0
# GNU-NEXT: 000000000000002d  0000000100000006 R_X86_64_GLOB_DAT      0000000000000000 foo + 0
# GNU-NEXT: 0000000000000034  0000000100000007 R_X86_64_JUMP_SLOT     0000000000000000 foo + 0
# GNU-NEXT: 000000000000003b  0000000100000008 R_X86_64_RELATIVE      0000000000000000 foo + 0
# GNU-NEXT: 0000000000000042  0000000100000009 R_X86_64_GOTPCREL      0000000000000000 foo + 0
# GNU-NEXT: 0000000000000049  000000010000000a R_X86_64_32            0000000000000000 foo + 0
# GNU-NEXT: 0000000000000050  000000010000000b R_X86_64_32S           0000000000000000 foo + 0
# GNU-NEXT: 0000000000000057  000000010000000c R_X86_64_16            0000000000000000 foo + 0
# GNU-NEXT: 000000000000005e  000000010000000d R_X86_64_PC16          0000000000000000 foo + 0
# GNU-NEXT: 0000000000000065  000000010000000e R_X86_64_8             0000000000000000 foo + 0
# GNU-NEXT: 000000000000006c  000000010000000f R_X86_64_PC8           0000000000000000 foo + 0
# GNU-NEXT: 0000000000000073  0000000100000010 R_X86_64_DTPMOD64      0000000000000000 foo + 0
# GNU-NEXT: 000000000000007a  0000000100000011 R_X86_64_DTPOFF64      0000000000000000 foo + 0
# GNU-NEXT: 0000000000000081  0000000100000012 R_X86_64_TPOFF64       0000000000000000 foo + 0
# GNU-NEXT: 0000000000000088  0000000100000013 R_X86_64_TLSGD         0000000000000000 foo + 0
# GNU-NEXT: 000000000000008f  0000000100000014 R_X86_64_TLSLD         0000000000000000 foo + 0
# GNU-NEXT: 0000000000000096  0000000100000015 R_X86_64_DTPOFF32      0000000000000000 foo + 0
# GNU-NEXT: 000000000000009d  0000000100000016 R_X86_64_GOTTPOFF      0000000000000000 foo + 0
# GNU-NEXT: 00000000000000a4  0000000100000017 R_X86_64_TPOFF32       0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ab  0000000100000018 R_X86_64_PC64          0000000000000000 foo + 0
# GNU-NEXT: 00000000000000b2  0000000100000019 R_X86_64_GOTOFF64      0000000000000000 foo + 0
# GNU-NEXT: 00000000000000b9  000000010000001a R_X86_64_GOTPC32       0000000000000000 foo + 0
# GNU-NEXT: 00000000000000c0  000000010000001b R_X86_64_GOT64         0000000000000000 foo + 0
# GNU-NEXT: 00000000000000c7  000000010000001c R_X86_64_GOTPCREL64    0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ce  000000010000001d R_X86_64_GOTPC64       0000000000000000 foo + 0
# GNU-NEXT: 00000000000000d5  000000010000001e R_X86_64_GOTPLT64      0000000000000000 foo + 0
# GNU-NEXT: 00000000000000dc  000000010000001f R_X86_64_PLTOFF64      0000000000000000 foo + 0
# GNU-NEXT: 00000000000000e3  0000000100000020 R_X86_64_SIZE32        0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ea  0000000100000021 R_X86_64_SIZE64        0000000000000000 foo + 0
# GNU-NEXT: 00000000000000f1  0000000100000022 R_X86_64_GOTPC32_TLSDESC 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000f8  0000000100000023 R_X86_64_TLSDESC_CALL  0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ff  0000000100000024 R_X86_64_TLSDESC       0000000000000000 foo + 0
# GNU-NEXT: 0000000000000106  0000000100000025 R_X86_64_IRELATIVE     0000000000000000 foo + 0
# GNU-NEXT: 000000000000010a  0000000100000029 R_X86_64_GOTPCRELX     0000000000000000 foo + 0
# GNU-NEXT: 000000000000010e  000000010000002a R_X86_64_REX_GOTPCRELX 0000000000000000 foo + 0

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  OSABI:   ELFOSABI_GNU
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Content: 00
  - Name:         .rela.text
    Type:         SHT_RELA
    Link:         .symtab
    AddressAlign: 0x0000000000000008
    EntSize:      0x0000000000000018
    Info:         .text
    Relocations:
      - Offset: 0x0000000000000003
        Type:   R_X86_64_NONE
        Symbol: foo
      - Offset: 0x000000000000000A
        Type:   R_X86_64_64
        Symbol: foo
      - Offset: 0x0000000000000011
        Type:   R_X86_64_PC32
        Symbol: foo
      - Offset: 0x0000000000000018
        Type:   R_X86_64_GOT32
        Symbol: foo
      - Offset: 0x000000000000001F
        Type:   R_X86_64_PLT32
        Symbol: foo
      - Offset: 0x0000000000000026
        Type:   R_X86_64_COPY
        Symbol: foo
      - Offset: 0x000000000000002D
        Type:   R_X86_64_GLOB_DAT
        Symbol: foo
      - Offset: 0x0000000000000034
        Type:   R_X86_64_JUMP_SLOT
        Symbol: foo
      - Offset: 0x000000000000003B
        Type:   R_X86_64_RELATIVE
        Symbol: foo
      - Offset: 0x0000000000000042
        Type:   R_X86_64_GOTPCREL
        Symbol: foo
      - Offset: 0x0000000000000049
        Type:   R_X86_64_32
        Symbol: foo
      - Offset: 0x0000000000000050
        Type:   R_X86_64_32S
        Symbol: foo
      - Offset: 0x0000000000000057
        Type:   R_X86_64_16
        Symbol: foo
      - Offset: 0x000000000000005E
        Type:   R_X86_64_PC16
        Symbol: foo
      - Offset: 0x0000000000000065
        Type:   R_X86_64_8
        Symbol: foo
      - Offset: 0x000000000000006C
        Type:   R_X86_64_PC8
        Symbol: foo
      - Offset: 0x0000000000000073
        Type:   R_X86_64_DTPMOD64
        Symbol: foo
      - Offset: 0x000000000000007A
        Type:   R_X86_64_DTPOFF64
        Symbol: foo
      - Offset: 0x0000000000000081
        Type:   R_X86_64_TPOFF64
        Symbol: foo
      - Offset: 0x0000000000000088
        Type:   R_X86_64_TLSGD
        Symbol: foo
      - Offset: 0x000000000000008F
        Type:   R_X86_64_TLSLD
        Symbol: foo
      - Offset: 0x0000000000000096
        Type:   R_X86_64_DTPOFF32
        Symbol: foo
      - Offset: 0x000000000000009D
        Type:   R_X86_64_GOTTPOFF
        Symbol: foo
      - Offset: 0x00000000000000A4
        Type:   R_X86_64_TPOFF32
        Symbol: foo
      - Offset: 0x00000000000000AB
        Type:   R_X86_64_PC64
        Symbol: foo
      - Offset: 0x00000000000000B2
        Type:   R_X86_64_GOTOFF64
        Symbol: foo
      - Offset: 0x00000000000000B9
        Type:   R_X86_64_GOTPC32
        Symbol: foo
      - Offset: 0x00000000000000C0
        Type:   R_X86_64_GOT64
        Symbol: foo
      - Offset: 0x00000000000000C7
        Type:   R_X86_64_GOTPCREL64
        Symbol: foo
      - Offset: 0x00000000000000CE
        Type:   R_X86_64_GOTPC64
        Symbol: foo
      - Offset: 0x00000000000000D5
        Type:   R_X86_64_GOTPLT64
        Symbol: foo
      - Offset: 0x00000000000000DC
        Type:   R_X86_64_PLTOFF64
        Symbol: foo
      - Offset: 0x00000000000000E3
        Type:   R_X86_64_SIZE32
        Symbol: foo
      - Offset: 0x00000000000000EA
        Type:   R_X86_64_SIZE64
        Symbol: foo
      - Offset: 0x00000000000000F1
        Type:   R_X86_64_GOTPC32_TLSDESC
        Symbol: foo
      - Offset: 0x00000000000000F8
        Type:   R_X86_64_TLSDESC_CALL
        Symbol: foo
      - Offset: 0x00000000000000FF
        Type:   R_X86_64_TLSDESC
        Symbol: foo
      - Offset: 0x0000000000000106
        Type:   R_X86_64_IRELATIVE
        Symbol: foo
      - Offset: 0x000000000000010A
        Type:   R_X86_64_GOTPCRELX
        Symbol: foo
      - Offset: 0x000000000000010E
        Type:   R_X86_64_REX_GOTPCRELX
        Symbol: foo
Symbols:
  - Name:    foo
    Binding: STB_GLOBAL