Author: Fangrui Song Date: 2021-01-19T11:42:51-08:00 New Revision: d39adeaf440bc0db508b7d2a4eb9ace7f40178fc
URL: https://github.com/llvm/llvm-project/commit/d39adeaf440bc0db508b7d2a4eb9ace7f40178fc DIFF: https://github.com/llvm/llvm-project/commit/d39adeaf440bc0db508b7d2a4eb9ace7f40178fc.diff LOG: [ELF] Improve R_PPC64_ADDR* relocation tests Added: lld/test/ELF/ppc64-reloc-addr-err.s Modified: lld/test/ELF/ppc64-reloc-addr.s lld/test/ELF/ppc64-relocs.s Removed: ################################################################################ diff --git a/lld/test/ELF/ppc64-reloc-addr-err.s b/lld/test/ELF/ppc64-reloc-addr-err.s new file mode 100644 index 000000000000..ef423a1c2e2b --- /dev/null +++ b/lld/test/ELF/ppc64-reloc-addr-err.s @@ -0,0 +1,25 @@ +# REQUIRES: ppc +# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o +# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs255.s -o %t255.o +# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs256.s -o %t256.o +# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs257.s -o %t257.o + +# RUN: ld.lld %t.o %t256.o -o %t +# RUN: llvm-readelf -x .data %t | FileCheck %s +# CHECK: 0x{{[0-9a-f]+}} ffff0080 ffffffff 00000080 + +# RUN: not ld.lld %t.o %t255.o -o /dev/null 2>&1 | FileCheck --check-prefix=OVERFLOW1 %s +# OVERFLOW1: relocation R_PPC64_ADDR16 out of range: -32769 is not in [-32768, 65535]; references foo +# OVERFLOW1: relocation R_PPC64_ADDR32 out of range: -2147483649 is not in [-2147483648, 4294967295]; references foo + +# RUN: not ld.lld %t.o %t257.o -o /dev/null 2>&1 | FileCheck --check-prefix=OVERFLOW2 %s +# OVERFLOW2: relocation R_PPC64_ADDR16 out of range: 65536 is not in [-32768, 65535]; references foo +# OVERFLOW2: relocation R_PPC64_ADDR32 out of range: 4294967296 is not in [-2147483648, 4294967295]; references foo + +.globl _start +_start: +.data +.word foo + 0xfeff +.word foo - 0x8100 +.long foo + 0xfffffeff +.long foo - 0x80000100 diff --git a/lld/test/ELF/ppc64-reloc-addr.s b/lld/test/ELF/ppc64-reloc-addr.s index ef423a1c2e2b..7eb13c2ef5bc 100644 --- a/lld/test/ELF/ppc64-reloc-addr.s +++ b/lld/test/ELF/ppc64-reloc-addr.s @@ -1,25 +1,46 @@ # REQUIRES: ppc -# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o -# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs255.s -o %t255.o -# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs256.s -o %t256.o -# RUN: llvm-mc -filetype=obj -triple=powerpc64le %S/Inputs/abs257.s -o %t257.o - -# RUN: ld.lld %t.o %t256.o -o %t -# RUN: llvm-readelf -x .data %t | FileCheck %s -# CHECK: 0x{{[0-9a-f]+}} ffff0080 ffffffff 00000080 - -# RUN: not ld.lld %t.o %t255.o -o /dev/null 2>&1 | FileCheck --check-prefix=OVERFLOW1 %s -# OVERFLOW1: relocation R_PPC64_ADDR16 out of range: -32769 is not in [-32768, 65535]; references foo -# OVERFLOW1: relocation R_PPC64_ADDR32 out of range: -2147483649 is not in [-2147483648, 4294967295]; references foo - -# RUN: not ld.lld %t.o %t257.o -o /dev/null 2>&1 | FileCheck --check-prefix=OVERFLOW2 %s -# OVERFLOW2: relocation R_PPC64_ADDR16 out of range: 65536 is not in [-32768, 65535]; references foo -# OVERFLOW2: relocation R_PPC64_ADDR32 out of range: 4294967296 is not in [-2147483648, 4294967295]; references foo - -.globl _start -_start: -.data -.word foo + 0xfeff -.word foo - 0x8100 -.long foo + 0xfffffeff -.long foo - 0x80000100 +# RUN: llvm-mc -filetype=obj -triple=ppc64le %s -o %t.o +# RUN: ld.lld %t.o --defsym=a=0x0123456789abcdef --defsym=b=0x76543210 -o %t +# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s +# RUN: llvm-objdump -s --no-show-raw-insn %t | FileCheck --check-prefixes=HEX,HEXLE %s + +# HEX-LABEL: section .R_PPC64_ADDR32: +# HEXLE-NEXT: 10325476 +# HEXBE-NEXT: 76543210 +.section .R_PPC64_ADDR32,"a",@progbits + .long b + +# CHECK-LABEL: <.R_PPC64_ADDR16_LO>: +# CHECK-NEXT: addi 4, 4, 12816 +.section .R_PPC64_ADDR16_LO,"ax",@progbits + addi 4, 4, b@l + +# CHECK-LABEL: <.R_PPC64_ADDR16_HI>: +# CHECK-NEXT: lis 4, 30292 +.section .R_PPC64_ADDR16_HI,"ax",@progbits + lis 4, b@h + +# CHECK-LABEL: <.R_PPC64_ADDR16_HA>: +# CHECK-NEXT: lis 4, 30292 +.section .R_PPC64_ADDR16_HA,"ax",@progbits + lis 4, b@ha + +# CHECK-LABEL: <.R_PPC64_ADDR16_HIGHER>: +# CHECK-NEXT: li 3, 17767 +.section .R_PPC64_ADDR16_HIGHER,"ax",@progbits + li 3, a@higher + +# CHECK-LABEL: <.R_PPC64_ADDR16_HIGHERA>: +# CHECK-NEXT: li 3, 17767 +.section .R_PPC64_ADDR16_HIGHERA,"ax",@progbits + li 3, a@highera + +# CHECK-LABEL: <.R_PPC64_ADDR16_HIGHEST>: +# CHECK-NEXT: li 3, 291 +.section .R_PPC64_ADDR16_HIGHEST,"ax",@progbits + li 3, a@highest + +# CHECK-LABEL: <.R_PPC64_ADDR16_HIGHESTA>: +# CHECK-NEXT: li 3, 291 +.section .R_PPC64_ADDR16_HIGHESTA,"ax",@progbits + li 3, a@highesta diff --git a/lld/test/ELF/ppc64-relocs.s b/lld/test/ELF/ppc64-relocs.s index e3363b60488f..0b0be487521e 100644 --- a/lld/test/ELF/ppc64-relocs.s +++ b/lld/test/ELF/ppc64-relocs.s @@ -40,54 +40,6 @@ _start: # CHECK-LABEL: Disassembly of section .R_PPC64_TOC16_HI: # CHECK: addis 1, 2, -1 -.section .R_PPC64_TOC16_HA,"ax",@progbits - addis 1, 2, .L1@toc@ha - -# CHECK-LABEL: Disassembly of section .R_PPC64_TOC16_HA: -# CHECK: addis 1, 2, 0 - -.section .R_PPC64_ADDR16_LO,"ax",@progbits - li 1, .Lfoo@l - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_LO: -# CHECK: li 1, 464 - -.section .R_PPC64_ADDR16_HI,"ax",@progbits - li 1, .Lfoo@h - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HI: -# CHECK: li 1, 4097 - -.section .R_PPC64_ADDR16_HA,"ax",@progbits - li 1, .Lfoo@ha - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HA: -# CHECK: li 1, 4097 - -.section .R_PPC64_ADDR16_HIGHER,"ax",@progbits - li 1, .Lfoo@higher - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HIGHER: -# CHECK: li 1, 0 - -.section .R_PPC64_ADDR16_HIGHERA,"ax",@progbits - li 1, .Lfoo@highera - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HIGHERA: -# CHECK: li 1, 0 - -.section .R_PPC64_ADDR16_HIGHEST,"ax",@progbits - li 1, .Lfoo@highest - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HIGHEST: -# CHECK: li 1, 0 - -.section .R_PPC64_ADDR16_HIGHESTA,"ax",@progbits - li 1, .Lfoo@highesta - -# CHECK-LABEL: Disassembly of section .R_PPC64_ADDR16_HIGHESTA: -# CHECK: li 1, 0 - .section .R_PPC64_TOC,"a",@progbits .quad .TOC.@tocbase @@ -95,7 +47,7 @@ _start: ## tocbase = .got+0x8000 = 0x10028208 # DATALE-LABEL: section '.R_PPC64_TOC': -# DATALE: 08820210 00000000 +# DATALE-NEXT: e8810210 00000000 # DATABE-LABEL: section '.R_PPC64_TOC': -# DATABE: 00000000 10028208 +# DATABE-NEXT: 00000000 100281e8 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits