objdump-relocations.test 3.93 KB
# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.coff-i386 \
# RUN:              | FileCheck %s -check-prefix COFF-i386
# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.coff-x86-64 \
# RUN:              | FileCheck %s -check-prefix COFF-x86-64

# RUN: yaml2obj -docnum=1 %s > %t-i386
# RUN: llvm-objdump -r %t-i386 | FileCheck %s -check-prefix ELF-i386

# ELF-i386: .text
# ELF-i386: R_386_32 .section
# ELF-i386: R_386_PC32 symbol

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Sections:
  - Name: .text
    Type: SHT_PROGBITS
  - Name: .section
    Type: SHT_PROGBITS
  - Name: .rel.text
    Type: SHT_REL
    Link: .symtab
    Info: .text
    Relocations:
      - Offset: 0x0
        Symbol: .section
        Type:   R_386_32
      - Offset: 0x1
        Symbol: symbol
        Type:   R_386_PC32
Symbols:
  - Name:    .section
    Type:    STT_SECTION
    Section: .section
  - Name:    symbol
    Binding: STB_GLOBAL

# RUN: yaml2obj -docnum=2 %s > %t-x86-64
# RUN: llvm-objdump -r %t-x86-64 | FileCheck %s -check-prefix ELF-x86-64

# ELF-x86-64: .text
# ELF-x86-64: R_X86_64_32S .section
# ELF-x86-64: R_X86_64_PC32 symbol

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .text
    Type: SHT_PROGBITS
  - Name: .section
    Type: SHT_PROGBITS
  - Name: .rel.text
    Type: SHT_REL
    Link: .symtab
    Info: .text
    Relocations:
      - Offset: 0x0
        Symbol: .section
        Type:   R_X86_64_32S
      - Offset: 0x1
        Symbol: symbol
        Type:   R_X86_64_PC32
Symbols:
  - Name:    .section
    Type:    STT_SECTION
    Section: .section
  - Name:    symbol
    Binding: STB_GLOBAL

# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.elf-hexagon \
# RUN:              | FileCheck %s -check-prefix ELF-hexagon
# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.elf-mips64el \
# RUN:              | FileCheck %s -check-prefix ELF-MIPS64EL
# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.elf-mipsel \
# RUN:              | FileCheck %s -check-prefix ELF-MIPSEL
# RUN: llvm-objdump -r %p/Inputs/trivial-object-test.wasm \
# RUN:              | FileCheck %s -check-prefix WASM

# RUN: llvm-objdump -r %p/Inputs/relocations.elf-x86-64 \
# RUN:              | FileCheck %s -check-prefix ELF-complex-x86-64

# COFF-i386: .text
# COFF-i386: IMAGE_REL_I386_DIR32 L_.str
# COFF-i386: IMAGE_REL_I386_REL32 _puts
# COFF-i386: IMAGE_REL_I386_REL32 _SomeOtherFunction

# COFF-x86-64: .text
# COFF-x86-64: IMAGE_REL_AMD64_REL32 L.str
# COFF-x86-64: IMAGE_REL_AMD64_REL32 puts
# COFF-x86-64: IMAGE_REL_AMD64_REL32 SomeOtherFunction

# ELF-hexagon: .text
# ELF-hexagon: R_HEX_GOTREL_HI16 .main
# ELF-hexagon: R_HEX_GOTREL_LO16 .main
# ELF-hexagon: R_HEX_HI16 puts
# ELF-hexagon: R_HEX_LO16 puts
# ELF-hexagon: R_HEX_B15_PCREL testf
# ELF-hexagon: R_HEX_B22_PCREL puts

## Note: this file was produced with gas to make sure we don't end up in a
## situation where LLVM produces and accepts a broken file.
# ELF-MIPS64EL: .data
# ELF-MIPS64EL: R_MIPS_64/R_MIPS_NONE/R_MIPS_NONE zed

# ELF-MIPSEL: .text
# ELF-MIPSEL: R_MIPS_HI16 _gp_disp
# ELF-MIPSEL: R_MIPS_LO16 _gp_disp
# ELF-MIPSEL: R_MIPS_GOT16 $.str
# ELF-MIPSEL: R_MIPS_LO16 $.str
# ELF-MIPSEL: R_MIPS_CALL16 puts
# ELF-MIPSEL: R_MIPS_CALL16 SomeOtherFunction

# WASM:      CODE
# WASM-NEXT: R_WASM_MEMORY_ADDR_SLEB .L.str
# WASM-NEXT: R_WASM_FUNCTION_INDEX_LEB puts
# WASM-NEXT: R_WASM_FUNCTION_INDEX_LEB .LSomeOtherFunction_bitcast
# WASM-NEXT: R_WASM_FUNCTION_INDEX_LEB SomeOtherFunction

# ELF-complex-x86-64: .text
# ELF-complex-x86-64-NEXT: R_X86_64_8 .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_16 .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_32 .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_32S .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_64 .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_PC32 .data-0x4
# ELF-complex-x86-64-NEXT: R_X86_64_32 .data
# ELF-complex-x86-64-NEXT: R_X86_64_32 .data+0x4