diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2017-09-21 14:04:53 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2017-09-21 14:04:53 +0000 |
commit | cff5a9f329b7914580d9599a917db1ddcd562f73 (patch) | |
tree | 8b6be0b0c388a38ef683a581f0b3fa31fdd84fc1 /test/MC | |
parent | fdc1645b20c6235bb359b686d8a5917a62fe9212 (diff) | |
download | llvm-cff5a9f329b7914580d9599a917db1ddcd562f73.tar.gz |
[mips] Implement generation of relocations "chains" used by N32 ABI
In case of using a "nested" relocation expressions like this
`%hi(%neg(%gp_rel()))`, N32 ABI requires generation of three consecutive
relocations. That differs from the N64 ABI case where all relocations
are packed into the single relocation record.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313879 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r-- | test/MC/Mips/elf-N32.s | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/MC/Mips/elf-N32.s b/test/MC/Mips/elf-N32.s new file mode 100644 index 00000000000..34a0cd0f8be --- /dev/null +++ b/test/MC/Mips/elf-N32.s @@ -0,0 +1,22 @@ +// Check generation of N32 ABI relocations. + +// RUN: llvm-mc -filetype=obj -triple=mips64-linux-gnu -mcpu=mips3 \ +// RUN: -target-abi=n32 %s -o - | llvm-readobj -r | FileCheck %s + +// CHECK: Relocations [ +// CHECK-NEXT: Section (3) .rela.text { +// CHECK-NEXT: 0x0 R_MIPS_GPREL16 foo 0x4 +// CHECK-NEXT: 0x0 R_MIPS_SUB - 0x0 +// CHECK-NEXT: 0x0 R_MIPS_HI16 - 0x0 +// CHECK-NEXT: 0x4 R_MIPS_GPREL16 foo 0x4 +// CHECK-NEXT: 0x4 R_MIPS_SUB - 0x0 +// CHECK-NEXT: 0x4 R_MIPS_LO16 - 0x0 +// CHECK-NEXT: } + + .globl foo + .ent foo +foo: + lui $gp, %hi(%neg(%gp_rel(foo+4))) + addiu $gp, $gp, %lo(%neg(%gp_rel(foo+4))) + daddu $gp, $gp, $25 + .end foo |