forked from OSchip/llvm-project
[Mips] Do not use MIPS assembler and disassembler in the tests
No functional changes. llvm-svn: 233691
This commit is contained in:
parent
371d10a4eb
commit
0d26edab09
|
@ -1,44 +1,77 @@
|
|||
# REQUIRES: mips
|
||||
|
||||
# Check handling multiple HI16 relocation followed by a single LO16 relocation.
|
||||
#
|
||||
# RUN: llvm-mc -triple=mipsel -filetype=obj -o=%t-obj %s
|
||||
# RUN: lld -flavor gnu -target mipsel -e glob1 -o %t-exe %t-obj
|
||||
# RUN: llvm-objdump -t -disassemble %t-exe | FileCheck %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
# CHECK: glob1:
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 42 00 08 3c lui $8, 66
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 3e 00 08 3c lui $8, 62
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 02 08 3c lui $8, 576
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 fe 08 3c lui $8, 65088
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 55 01 08 85 lh $8, 341($8)
|
||||
# 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 4000083c 4000083c 4000083c 4000083c
|
||||
# CHECK-NEXT: 400120 4200083c 3e00083c 4002083c 40fe083c
|
||||
# CHECK-NEXT: 400130 35010885 00000000
|
||||
|
||||
# CHECK: SYMBOL TABLE:
|
||||
# CHECK: {{[0-9a-f]+}} g F .text 00000024 glob1
|
||||
# CHECK: {{[0-9a-f]+}} g F .text 00000004 glob2
|
||||
# CHECK: 00400110 g F .text 00000024 T0
|
||||
# CHECK: 00400134 g F .text 00000004 T1
|
||||
|
||||
.global glob1
|
||||
.ent glob1
|
||||
glob1:
|
||||
lui $t0,%hi(glob2+0x1)
|
||||
lui $t0,%hi(glob2+(-0x1))
|
||||
lui $t0,%hi(glob2+0x1ff)
|
||||
lui $t0,%hi(glob2+(-0x1ff))
|
||||
lui $t0,%hi(glob2+0x1ffff)
|
||||
lui $t0,%hi(glob2+(-0x1ffff))
|
||||
lui $t0,%hi(glob2+0x1ffffff)
|
||||
lui $t0,%hi(glob2+(-0x1ffffff))
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_MIPS
|
||||
Flags: [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2]
|
||||
|
||||
lh $t0,%lo(glob2+(-0x1ffffff))($t0)
|
||||
.end glob1
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: "0000083c0000083c0000083c0000083c0200083cfeff083c0002083c00fe083c0100088500000000"
|
||||
# ^ %hi(T1+1) ^ %hi(T1+0x1ff) ^ %hi(T1+0x1ffff) ^ %hi(T1-0x1ffffff)
|
||||
# ^ %hi(T1-1) ^ %hi(T1-0x1ff) ^ %hi(T1-0x1ffff) ^ %lo(T1-0x1ffffff)
|
||||
# ^ %hi(T1+0x1ffffff)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
.global glob2
|
||||
.ent glob2
|
||||
glob2:
|
||||
nop
|
||||
.end glob2
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Info: .text
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x8
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x10
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x18
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x1C
|
||||
Symbol: T1
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x20
|
||||
Symbol: T1
|
||||
Type: R_MIPS_LO16
|
||||
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: T0
|
||||
Section: .text
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 36
|
||||
- Name: T1
|
||||
Section: .text
|
||||
Type: STT_FUNC
|
||||
Value: 36
|
||||
Size: 4
|
||||
|
|
|
@ -1,68 +1,131 @@
|
|||
# REQUIRES: mips
|
||||
|
||||
# Check handling of HI16 and LO16 relocations for regular symbol.
|
||||
#
|
||||
# R_MIPS_HI16: (AHL + S) - (short)(AHL + S)
|
||||
# R_MIPS_LO16: AHL + S
|
||||
# where AHL = (AHI << 16) + ALO
|
||||
#
|
||||
# RUN: llvm-mc -triple=mipsel -filetype=obj -o=%t-obj %s
|
||||
# RUN: lld -flavor gnu -target mipsel -e glob1 -o %t-exe %t-obj
|
||||
# RUN: llvm-objdump -t -disassemble %t-exe | FileCheck %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
# CHECK: glob1:
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 71 01 08 85 lh $8, 369($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 6f 01 08 85 lh $8, 367($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 6f 03 08 85 lh $8, 879($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 00 08 3c lui $8, 64
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 71 ff 08 85 lh $8, -143($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 42 00 08 3c lui $8, 66
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 6f 01 08 85 lh $8, 367($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 3e 00 08 3c lui $8, 62
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 71 01 08 85 lh $8, 369($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 02 08 3c lui $8, 576
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 6f 01 08 85 lh $8, 367($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 40 fe 08 3c lui $8, 65088
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 71 01 08 85 lh $8, 369($8)
|
||||
# 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 4000083c 51010885 4000083c 4f010885
|
||||
# CHECK-NEXT: 400120 4000083c 4f030885 4000083c 51ff0885
|
||||
# CHECK-NEXT: 400130 4200083c 4f010885 3e00083c 51010885
|
||||
# CHECK-NEXT: 400140 4002083c 4f010885 40fe083c 51010885
|
||||
# CHECK-NEXT: 400150 00000000
|
||||
|
||||
# CHECK: SYMBOL TABLE:
|
||||
# CHECK: {{[0-9a-f]+}} g F .text 00000040 glob1
|
||||
# CHECK: {{[0-9a-f]+}} g F .text 00000004 glob2
|
||||
# CHECK: 00400110 g F .text 00000020 T0
|
||||
# CHECK: 00400130 g F .text 00000020 T1
|
||||
# CHECK: 00400150 g F .text 00000004 T2
|
||||
|
||||
.global glob1
|
||||
.ent glob1
|
||||
glob1:
|
||||
lui $t0,%hi(glob2+0x1)
|
||||
lh $t0,%lo(glob2+0x1)($t0)
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_MIPS
|
||||
Flags: [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2]
|
||||
|
||||
lui $t0,%hi(glob2+(-0x1))
|
||||
lh $t0,%lo(glob2+(-0x1))($t0)
|
||||
Sections:
|
||||
- Name: .text.1
|
||||
Type: SHT_PROGBITS
|
||||
Content: "0000083c010008850000083cffff08850000083cff0108850000083c01fe0885"
|
||||
# ^ %hi(T2+1) ^ %hi(T2-1) ^ %hi(T2+0x1ff) ^ %hi(T2-0x1ff)
|
||||
# ^ %lo(T2+1) ^ %lo(T2-1) ^ %lo(T2+0x1ff) ^ %lo(T2-0x1ff)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(glob2+0x1ff)
|
||||
lh $t0,%lo(glob2+0x1ff)($t0)
|
||||
- Name: .rel.text.1
|
||||
Type: SHT_REL
|
||||
Info: .text.1
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x8
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x10
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x18
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x1C
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
|
||||
lui $t0,%hi(glob2+(-0x1ff))
|
||||
lh $t0,%lo(glob2+(-0x1ff))($t0)
|
||||
- Name: .text.2
|
||||
Type: SHT_PROGBITS
|
||||
Content: "0200083cffff0885feff083c010008850002083cffff088500fe083c01000885"
|
||||
# ^ %hi(T2+0x1ffff) ^ %hi(T2+0x1ffffff)
|
||||
# ^ %lo(T2+0x1ffff) ^ %lo(T2+0x1ffffff)
|
||||
# ^ %hi(T2-0x1ffff) ^ %hi(T2-0x1ffffff)
|
||||
# ^ %lo(T2-0x1ffff) ^ %lo(T2-0x1ffffff)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(glob2+0x1ffff)
|
||||
lh $t0,%lo(glob2+0x1ffff)($t0)
|
||||
- Name: .rel.text.2
|
||||
Type: SHT_REL
|
||||
Info: .text.2
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x8
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x10
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x18
|
||||
Symbol: T2
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x1C
|
||||
Symbol: T2
|
||||
Type: R_MIPS_LO16
|
||||
|
||||
lui $t0,%hi(glob2+(-0x1ffff))
|
||||
lh $t0,%lo(glob2+(-0x1ffff))($t0)
|
||||
- Name: .text.3
|
||||
Type: SHT_PROGBITS
|
||||
Content: "00000000"
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(glob2+0x1ffffff) # truncate
|
||||
lh $t0,%lo(glob2+0x1ffffff)($t0)
|
||||
|
||||
lui $t0,%hi(glob2+(-0x1ffffff)) # truncate
|
||||
lh $t0,%lo(glob2+(-0x1ffffff))($t0)
|
||||
.end glob1
|
||||
|
||||
.global glob2
|
||||
.ent glob2
|
||||
glob2:
|
||||
nop
|
||||
.end glob2
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: T0
|
||||
Section: .text.1
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 64
|
||||
- Name: T1
|
||||
Section: .text.2
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 64
|
||||
- Name: T2
|
||||
Section: .text.3
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 4
|
||||
|
|
|
@ -1,45 +1,74 @@
|
|||
# REQUIRES: mips
|
||||
|
||||
# Check handling of HI16 and LO16 relocations for _gp_disp.
|
||||
#
|
||||
# R_MIPS_HI16: (AHL + GP - P) - (short)(AHL + GP - P)
|
||||
# R_MIPS_LO16: AHL + GP - P + 4
|
||||
# where AHL = (AHI << 16) + ALO
|
||||
#
|
||||
# RUN: llvm-mc -triple=mipsel -filetype=obj -o=%t-obj %s
|
||||
# RUN: lld -flavor gnu -target mipsel -shared -o %t-so %t-obj
|
||||
# RUN: llvm-objdump -t -disassemble %t-so | FileCheck %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
# CHECK: glob1:
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 01 8f 08 85 lh $8, -28927($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: f7 8e 08 85 lh $8, -28937($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: ef 90 08 85 lh $8, -28433($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: e9 8c 08 85 lh $8, -29463($8)
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: 03 00 08 3c lui $8, 3
|
||||
# CHECK-NEXT: {{[0-9a-f]+}}: df 8e 08 85 lh $8, -28961($8)
|
||||
# RUN: yaml2obj -format=elf %s > %t.o
|
||||
# RUN: lld -flavor gnu -target mipsel -shared -o %t.so %t.o
|
||||
# RUN: llvm-objdump -s -t %t.so | FileCheck %s
|
||||
|
||||
# CHECK: Contents of section .text:
|
||||
# CHECK-NEXT: 00d0 0100083c 218f0885 0100083c 178f0885
|
||||
# CHECK-NEXT: 00e0 0100083c 0f910885 0100083c 098d0885
|
||||
# CHECK-NEXT: 00f0 0200083c ffff0885
|
||||
|
||||
# CHECK: SYMBOL TABLE:
|
||||
# CHECK: {{[0-9a-f]+}} g F .text 00000028 glob1
|
||||
# CHECK: {{[0-9a-f]+}} g *ABS* 00000000 _gp_disp
|
||||
# CHECK: 000000d0 g F .text 00000028 T0
|
||||
# CHECK: 00008ff0 g *ABS* 00000000 _gp_disp
|
||||
|
||||
.global glob1
|
||||
glob1:
|
||||
lui $t0,%hi(_gp_disp+0x1)
|
||||
lh $t0,%lo(_gp_disp+0x1)($t0)
|
||||
FileHeader:
|
||||
Class: ELFCLASS32
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_MIPS
|
||||
Flags: [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2]
|
||||
|
||||
lui $t0,%hi(_gp_disp+(-0x1))
|
||||
lh $t0,%lo(_gp_disp+(-0x1))($t0)
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Content: "0000083C010008850000083CFFFF08850000083CFF0108850000083C01FE08850200083CFFFF0885"
|
||||
# ^ %hi(gp+1) ^ %hi(gp-1) ^ %hi(gp+0x1ff) ^ %hi(gp-0x1ff) ^ %lo(gp+0x1ffff)
|
||||
# ^ %lo(gp+1) ^ %lo(gp-1) ^ %lo(gp+0x1ff) ^ %lo(gp-0x1ff)
|
||||
# ^ %hi(gp+0x1ffff)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x1ff)
|
||||
lh $t0,%lo(_gp_disp+0x1ff)($t0)
|
||||
- Name: .rel.text
|
||||
Type: SHT_REL
|
||||
Info: .text
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x8
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x10
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_LO16
|
||||
- Offset: 0x18
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_HI16
|
||||
- Offset: 0x1C
|
||||
Symbol: _gp_disp
|
||||
Type: R_MIPS_LO16
|
||||
|
||||
lui $t0,%hi(_gp_disp+(-0x1ff))
|
||||
lh $t0,%lo(_gp_disp+(-0x1ff))($t0)
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x1ffff)
|
||||
lh $t0,%lo(_gp_disp+0x1ffff)($t0)
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: T0
|
||||
Section: .text
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 80
|
||||
- Name: _gp_disp
|
||||
|
|
|
@ -1,81 +1,159 @@
|
|||
# REQUIRES: mips
|
||||
|
||||
# Check calculation of AHL addendums for R_MICROMIPS_HI16 / R_MICROMIPS_LO16
|
||||
# relocations for a regular symbol.
|
||||
#
|
||||
# RUN: llvm-mc -triple=mipsel -mattr=micromips -filetype=obj -o=%t-obj %s
|
||||
# RUN: lld -flavor gnu -target mipsel -e glob1 -o %t-exe %t-obj
|
||||
# RUN: llvm-objdump -t -d -mattr=micromips %t-exe | FileCheck %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
# CHECK-NEXT: glob1:
|
||||
# CHECK-NEXT: 400130: a8 41 40 00 lui $8, 64
|
||||
# CHECK-NEXT: 400134: 08 3d 6a 01 lh $8, 362($8)
|
||||
# CHECK-NEXT: 400138: a8 41 41 00 lui $8, 65
|
||||
# CHECK-NEXT: 40013c: 08 3d 68 81 lh $8, -32408($8)
|
||||
# CHECK-NEXT: 400140: a8 41 41 00 lui $8, 65
|
||||
# CHECK-NEXT: 400144: 08 3d e9 81 lh $8, -32279($8)
|
||||
# CHECK-NEXT: 400148: a8 41 42 00 lui $8, 66
|
||||
# CHECK-NEXT: 40014c: 08 3d 69 81 lh $8, -32407($8)
|
||||
# CHECK-NEXT: 400150: a8 41 40 40 lui $8, 16448
|
||||
# CHECK-NEXT: 400154: 08 3d 69 01 lh $8, 361($8)
|
||||
# CHECK-NEXT: 400158: a8 41 40 80 lui $8, 32832
|
||||
# CHECK-NEXT: 40015c: 08 3d 69 01 lh $8, 361($8)
|
||||
# CHECK-NEXT: 400160: a8 41 c1 80 lui $8, 32961
|
||||
# CHECK-NEXT: 400164: 08 3d e9 81 lh $8, -32279($8)
|
||||
# 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: glob2:
|
||||
# CHECK-NEXT: 400168: a8 41 40 00 lui $8, 64
|
||||
# CHECK-NEXT: 40016c: a8 41 40 00 lui $8, 64
|
||||
# CHECK-NEXT: 400170: a8 41 41 00 lui $8, 65
|
||||
# CHECK-NEXT: 400174: a8 41 42 00 lui $8, 66
|
||||
# CHECK-NEXT: 400178: a8 41 40 40 lui $8, 16448
|
||||
# CHECK-NEXT: 40017c: a8 41 40 80 lui $8, 32832
|
||||
# CHECK-NEXT: 400180: a8 41 c1 80 lui $8, 32961
|
||||
# CHECK-NEXT: 400184: 08 3d b1 81 lh $8, -32335($8)
|
||||
# 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: 00400130 g F .text 00000038 glob1
|
||||
# CHECK: 00400168 g F .text 00000020 glob2
|
||||
# CHECK: 00400110 g F .text 00000020 T0
|
||||
# CHECK: 00400130 g F .text 00000018 T1
|
||||
# CHECK: 00400150 g F .text 00000020 T2
|
||||
|
||||
.globl glob1
|
||||
.type glob1, @function
|
||||
.set micromips
|
||||
.ent glob1
|
||||
glob1:
|
||||
lui $t0,%hi(glob2+0x00000001)
|
||||
lh $t0,%lo(glob2+0x00000001)($t0)
|
||||
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]
|
||||
|
||||
lui $t0,%hi(glob2+0x00007fff)
|
||||
lh $t0,%lo(glob2+0x00007fff)($t0)
|
||||
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 ]
|
||||
|
||||
lui $t0,%hi(glob2+0x00008080)
|
||||
lh $t0,%lo(glob2+0x00008080)($t0)
|
||||
- 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
|
||||
|
||||
lui $t0,%hi(glob2+0x00018000)
|
||||
lh $t0,%lo(glob2+0x00018000)($t0)
|
||||
- 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 ]
|
||||
|
||||
lui $t0,%hi(glob2+0x40000000)
|
||||
lh $t0,%lo(glob2+0x40000000)($t0)
|
||||
- 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
|
||||
|
||||
lui $t0,%hi(glob2+0x80000000)
|
||||
lh $t0,%lo(glob2+0x80000000)($t0)
|
||||
- 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 ]
|
||||
|
||||
lui $t0,%hi(glob2+0x80808080)
|
||||
lh $t0,%lo(glob2+0x80808080)($t0)
|
||||
.end glob1
|
||||
- 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
|
||||
|
||||
.globl glob2
|
||||
.type glob2, @function
|
||||
.set micromips
|
||||
.ent glob2
|
||||
glob2:
|
||||
lui $t0,%hi(glob1+0x00000001)
|
||||
lui $t0,%hi(glob1+0x00007fff)
|
||||
lui $t0,%hi(glob1+0x00008080)
|
||||
lui $t0,%hi(glob1+0x00018000)
|
||||
lui $t0,%hi(glob1+0x40000000)
|
||||
lui $t0,%hi(glob1+0x80000000)
|
||||
lui $t0,%hi(glob1+0x80808080)
|
||||
lh $t0,%lo(glob1+0x80808080)($t0)
|
||||
.end glob2
|
||||
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]
|
||||
|
|
|
@ -1,68 +1,142 @@
|
|||
# REQUIRES: mips
|
||||
|
||||
# Check calculation of AHL addendums for R_MICROMIPS_HI16 / R_MICROMIPS_LO16
|
||||
# relocations for the _gp_disp symbol.
|
||||
#
|
||||
# RUN: llvm-mc -triple=mipsel -mattr=micromips -filetype=obj -o=%t-obj %s
|
||||
# RUN: lld -flavor gnu -target mipsel -shared -o %t-so %t-obj
|
||||
# RUN: llvm-objdump -t -d -mattr=micromips %t-so | FileCheck %s
|
||||
# RUN: yaml2obj -format=elf %s > %t.o
|
||||
# RUN: lld -flavor gnu -target mipsel -shared -o %t.so %t.o
|
||||
# RUN: llvm-objdump -s -t %t.so | FileCheck %s
|
||||
|
||||
# CHECK: Disassembly of section .text:
|
||||
# CHECK-NEXT: glob1:
|
||||
# CHECK-NEXT: 130: a8 41 01 00 lui $8, 1
|
||||
# CHECK-NEXT: 134: 08 3d c0 9e lh $8, -24896($8)
|
||||
# CHECK-NEXT: 138: a8 41 01 00 lui $8, 1
|
||||
# CHECK-NEXT: 13c: 08 3d b6 1e lh $8, 7862($8)
|
||||
# CHECK-NEXT: 140: a8 41 01 00 lui $8, 1
|
||||
# CHECK-NEXT: 144: 08 3d 2f 1f lh $8, 7983($8)
|
||||
# CHECK-NEXT: 148: a8 41 02 00 lui $8, 2
|
||||
# CHECK-NEXT: 14c: 08 3d a7 1e lh $8, 7847($8)
|
||||
# CHECK-NEXT: 150: a8 41 01 40 lui $8, 16385
|
||||
# CHECK-NEXT: 154: 08 3d 9f 9e lh $8, -24929($8)
|
||||
|
||||
# CHECK: glob2:
|
||||
# CHECK-NEXT: 158: a8 41 01 00 lui $8, 1
|
||||
# CHECK-NEXT: 15c: a8 41 01 00 lui $8, 1
|
||||
# CHECK-NEXT: 160: a8 41 02 00 lui $8, 2
|
||||
# CHECK-NEXT: 164: a8 41 03 00 lui $8, 3
|
||||
# CHECK-NEXT: 168: a8 41 01 40 lui $8, 16385
|
||||
# CHECK-NEXT: 16c: 08 3d 87 9e lh $8, -24953($8)
|
||||
# CHECK: Contents of section .text:
|
||||
# CHECK-NEXT: 0110 a8410100 083de08e a8410100 083dd60e
|
||||
# CHECK-NEXT: 0120 a8410200 a841cf8e 00000000 00000000
|
||||
# CHECK-NEXT: 0130 083d0200 a841bf8e 083d0080 a841b88e
|
||||
# CHECK-NEXT: 0140 a8410100 a8410100 a8410200 a8410300
|
||||
# CHECK-NEXT: 0150 a8410140 083d9f8e
|
||||
|
||||
# CHECK: SYMBOL TABLE:
|
||||
# CHECK: 00000130 g F .text 00000028 glob1
|
||||
# CHECK: 00000158 g F .text 00000018 glob2
|
||||
# CHECK: 00009ff0 g *ABS* 00000000 _gp_disp
|
||||
# CHECK: 00000110 g F .text 00000018 T0
|
||||
# CHECK: 00000130 g F .text 00000010 T1
|
||||
# CHECK: 00000140 g F .text 00000018 T2
|
||||
# CHECK: 00008ff0 g *ABS* 00000000 _gp_disp
|
||||
|
||||
.globl glob1
|
||||
.type glob1, @function
|
||||
.set micromips
|
||||
.ent glob1
|
||||
glob1:
|
||||
lui $t0,%hi(_gp_disp+0x00000001)
|
||||
lh $t0,%lo(_gp_disp+0x00000001)($t0)
|
||||
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]
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x00007fff)
|
||||
lh $t0,%lo(_gp_disp+0x00007fff)($t0)
|
||||
Sections:
|
||||
- Name: .text.1
|
||||
Type: SHT_PROGBITS
|
||||
Content: "A8410000083D0100A8410000083DFF7FA8410100A8410000"
|
||||
# ^ %hi(gp+0x1) ^ %hi(gp+0x7fff) ^ %lo(gp+0x8080)
|
||||
# ^ %lo(gp+0x1) ^ %lo(gp+0x7fff)
|
||||
# ^ %hi(gp+0x8080)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x00008080)
|
||||
lh $t0,%lo(_gp_disp+0x00008080)($t0)
|
||||
- Name: .rel.text.1
|
||||
Type: SHT_REL
|
||||
Info: .text.1
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
- Offset: 0x8
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
- Offset: 0x10
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x00018000)
|
||||
lh $t0,%lo(_gp_disp+0x00018000)($t0)
|
||||
- Name: .text.2
|
||||
Type: SHT_PROGBITS
|
||||
Content: "083D0100A8410000083DFF7FA8410100"
|
||||
# ^ %hi(gp+0x18000) ^ %lo(gp+0x40000000)
|
||||
# ^ %lo(gp+0x18000)
|
||||
# ^ %hi(gp+0x40000000)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
lui $t0,%hi(_gp_disp+0x40000000)
|
||||
lh $t0,%lo(_gp_disp+0x40000000)($t0)
|
||||
.end glob1
|
||||
- Name: .rel.text.2
|
||||
Type: SHT_REL
|
||||
Info: .text.2
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
- Offset: 0x8
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
|
||||
.globl glob2
|
||||
.type glob2, @function
|
||||
.set micromips
|
||||
.ent glob2
|
||||
glob2:
|
||||
lui $t0,%hi(_gp_disp+0x00000001)
|
||||
lui $t0,%hi(_gp_disp+0x00007fff)
|
||||
lui $t0,%hi(_gp_disp+0x00008080)
|
||||
lui $t0,%hi(_gp_disp+0x00018000)
|
||||
lui $t0,%hi(_gp_disp+0x40000000)
|
||||
lh $t0,%lo(_gp_disp+0x40000000)($t0)
|
||||
.end glob2
|
||||
- Name: .text.3
|
||||
Type: SHT_PROGBITS
|
||||
Content: "A8410000A8410000A8410100A8410200A8410040083D0000"
|
||||
# ^ %hi(gp+0x1) ^ %hi(gp+0x8080) ^ %lo(gp+0x40000000)
|
||||
# ^ %hi(gp+0x7fff) ^ %hi(gp+0x40000000)
|
||||
# ^ %hi(gp+0x18000)
|
||||
AddressAlign: 16
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
|
||||
- Name: .rel.text.3
|
||||
Type: SHT_REL
|
||||
Info: .text.3
|
||||
AddressAlign: 4
|
||||
Relocations:
|
||||
- Offset: 0x0
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x4
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x8
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0xC
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x10
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_HI16
|
||||
- Offset: 0x14
|
||||
Symbol: _gp_disp
|
||||
Type: R_MICROMIPS_LO16
|
||||
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: T0
|
||||
Section: .text.1
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 24
|
||||
Other: [STO_MIPS_MICROMIPS]
|
||||
- Name: T1
|
||||
Section: .text.2
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 16
|
||||
Other: [STO_MIPS_MICROMIPS]
|
||||
- Name: T2
|
||||
Section: .text.3
|
||||
Type: STT_FUNC
|
||||
Value: 0
|
||||
Size: 24
|
||||
Other: [STO_MIPS_MICROMIPS]
|
||||
- Name: _gp_disp
|
||||
|
|
Loading…
Reference in New Issue