# Check calculation of AHL addendums for R_MICROMIPS_HI16 / R_MICROMIPS_LO16 # relocations for a regular symbol. # RUN: yaml2obj -format=elf %s > %t.o # RUN: lld -flavor gnu -target mipsel -e T0 -o %t.exe %t.o # RUN: llvm-objdump -s -t %t.exe | FileCheck %s # CHECK: Contents of section .text: # CHECK-NEXT: 400110 a8414000 083d5201 a8414100 083d5081 # CHECK-NEXT: 400120 a8414100 083dd181 a8414200 083d5181 # CHECK-NEXT: 400130 a8414040 083d5101 a8414080 083d5101 # CHECK-NEXT: 400140 a841c180 083dd181 00000000 00000000 # CHECK-NEXT: 400150 a8414000 a8414000 a8414100 a8414200 # CHECK-NEXT: 400160 a8414040 a8414080 a841c180 083d9181 # CHECK: SYMBOL TABLE: # CHECK: 00400110 g F .text 00000020 T0 # CHECK: 00400130 g F .text 00000018 T1 # CHECK: 00400150 g F .text 00000020 T2 FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Flags: [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2, EF_MIPS_MICROMIPS] Sections: - Name: .text.1 Type: SHT_PROGBITS Content: "A8410000083D0100A8410000083DFF7FA8410100083D8080A8410200083D0080" # ^ %hi(T2+1) ^ %hi(T2+0x7fff) ^ %lo(T2+0x8080) # ^ %lo(T2+1) ^ %lo(T2+0x7fff) ^ %hi(T2+0x18000) # ^ %hi(T2+0x8080) ^ %lo(T2+0x18000) AddressAlign: 16 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .rel.text.1 Type: SHT_REL Info: .text.1 AddressAlign: 4 Relocations: - Offset: 0x0 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0x4 Symbol: T2 Type: R_MICROMIPS_LO16 - Offset: 0x8 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0xC Symbol: T2 Type: R_MICROMIPS_LO16 - Offset: 0x10 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0x14 Symbol: T2 Type: R_MICROMIPS_LO16 - Offset: 0x18 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0x1C Symbol: T2 Type: R_MICROMIPS_LO16 - Name: .text.2 Type: SHT_PROGBITS Content: "A8410040083D0000A8410080083D0000A8418180083D8080" # ^ %hi(T2+0x40000000) ^ %lo(T2+0x80000000) # ^ %lo(T2+0x40000000) ^ %hi(T2+0x80808080) # ^ %hi(T2+0x80000000) ^ %lo(T2+0x80808080) AddressAlign: 16 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .rel.text.2 Type: SHT_REL Info: .text.2 AddressAlign: 4 Relocations: - Offset: 0x0 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0x4 Symbol: T2 Type: R_MICROMIPS_LO16 - Offset: 0x8 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0xC Symbol: T2 Type: R_MICROMIPS_LO16 - Offset: 0x10 Symbol: T2 Type: R_MICROMIPS_HI16 - Offset: 0x14 Symbol: T2 Type: R_MICROMIPS_LO16 - Name: .text.3 Type: SHT_PROGBITS Content: "A8410000A8410000A8410100A8410200A8410040A8410080A8418180083D8080" # ^ %hi(T0+0x1) ^ %hi(T0+0x8080) ^ %hi(T0+0x80000000) # ^ %hi(T0+0x7fff) ^ %hi(T0+0x40000000) ^ %lo(T0+0x80808080) # ^ %hi(T0+0x18000) ^ %hi(T0+0x80808080) AddressAlign: 16 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .rel.text.3 Type: SHT_REL Info: .text.3 AddressAlign: 4 Relocations: - Offset: 0x0 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x4 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x8 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0xC Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x10 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x14 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x18 Symbol: T0 Type: R_MICROMIPS_HI16 - Offset: 0x1C Symbol: T0 Type: R_MICROMIPS_LO16 Symbols: Global: - Name: T0 Section: .text.1 Type: STT_FUNC Value: 0 Size: 32 Other: [STO_MIPS_MICROMIPS] - Name: T1 Section: .text.2 Type: STT_FUNC Value: 0 Size: 24 Other: [STO_MIPS_MICROMIPS] - Name: T2 Section: .text.3 Type: STT_FUNC Value: 0 Size: 32 Other: [STO_MIPS_MICROMIPS]