# Check R_MICROMIPS_GPREL16 relocation handling. # # RUN: yaml2obj -format=elf %s > %t.o # RUN: lld -flavor gnu -target mipsel -shared -o %t.so %t.o # RUN: llvm-readobj -symbols %t.so | FileCheck -check-prefix=SYM %s # RUN: llvm-objdump -s %t.so | FileCheck -check-prefix=SEC %s # SYM: Name: L0 # SYM-NEXT: Value: 0x104 # SYM-NEXT: Size: 4 # SYM: Name: G0 # SYM-NEXT: Value: 0x108 # SYM-NEXT: Size: 4 # SYM: Name: _gp # SYM-NEXT: Value: 0x8FF0 # SYM-NEXT: Size: 0 # SEC: Contents of section .rodata: # SEC-NEXT: 010c 00001071 000017f1 # ^ 0x104 (L0) + 0x10000 (GP0) - 0x8ff0 (_gp) - 4 = 0x7110 # ^ 0x108 (G0) - 0x8ff0 (_gp) + 0x7fff = 0xf117 FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2, EF_MIPS_MICROMIPS] Sections: - Type: SHT_PROGBITS Name: .text Flags: [ SHF_ALLOC, SHF_EXECINSTR ] AddressAlign: 4 Size: 8 - Type: SHT_PROGBITS Name: .rodata Flags: [ SHF_ALLOC ] AddressAlign: 4 Content: 0000fcff0000ff7f - Type: SHT_REL Name: .rel.rodata Link: .symtab Info: .rodata AddressAlign: 4 Relocations: - Offset: 0 Symbol: L0 Type: R_MICROMIPS_GPREL16 - Offset: 4 Symbol: G0 Type: R_MICROMIPS_GPREL16 - Type: SHT_MIPS_REGINFO Name: .reginfo Flags: [ SHF_ALLOC ] AddressAlign: 1 Content: 000000000000000000000000000000000000000000000100 Symbols: Local: - Name: L0 Section: .text Value: 0 Size: 4 - Name: .rodata Type: STT_SECTION Section: .rodata Global: - Name: G0 Section: .text Value: 4 Size: 4