aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2019-05-31 22:44:16 +0000
committerTom Stellard <tstellar@redhat.com>2019-05-31 22:44:16 +0000
commitf1cacab458fe9a80b3dcbc6a230d3c7b798a9f57 (patch)
tree2f7eaa33826a3fb23ac246bb60cd2a8991e305c1
parent5733e36371a242a2fc11ac4adcacccca75d0df9f (diff)
downloadllvm-f1cacab458fe9a80b3dcbc6a230d3c7b798a9f57.zip
llvm-f1cacab458fe9a80b3dcbc6a230d3c7b798a9f57.tar.gz
llvm-f1cacab458fe9a80b3dcbc6a230d3c7b798a9f57.tar.bz2
Merging part of r358975:
Only merged the test changes in files that were also changed in r360405. ------------------------------------------------------------------------ r358975 | maskray | 2019-04-23 04:47:28 -0700 (Tue, 23 Apr 2019) | 18 lines [PPC][PPC64] Improve some llvm-objdump -d -D tests Various improvement: Some offsets in disassembly are incorrect after several layout adjustment. Fix them. llvm-objdump -D should not be used. -D dumps unrelated non-text sections. Replace them with llvm-objdump -d, llvm-readelf -x, etc Many llvm-objdump -d tests use {{.*}} . Add the option --no-show-raw-insn to avoid check hex bytes. ppc64-long-branch.s does not need a shared object. Delete it. Make ppc64-ifunc.s check 2 ifuncs. Reviewers: ruiu, espindola Subscribers: emaste, nemanjai, arichardson, kbarton, jsji, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60998 ------------------------------------------------------------------------ llvm-svn: 362273
-rw-r--r--lld/test/ELF/ppc64-call-reach.s33
-rw-r--r--lld/test/ELF/ppc64-ifunc.s100
-rw-r--r--lld/test/ELF/ppc64-toc-restore-recursive-call.s10
-rw-r--r--lld/test/ELF/ppc64-toc-restore.s32
4 files changed, 81 insertions, 94 deletions
diff --git a/lld/test/ELF/ppc64-call-reach.s b/lld/test/ELF/ppc64-call-reach.s
index e32497b..085e68f 100644
--- a/lld/test/ELF/ppc64-call-reach.s
+++ b/lld/test/ELF/ppc64-call-reach.s
@@ -3,16 +3,16 @@
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck --check-prefix=NEGOFFSET %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=NEGOFFSET %s
# RUN: ld.lld --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck --check-prefix=THUNK %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=THUNK %s
# RUN: llvm-readelf --sections %t | FileCheck --check-prefix=BRANCHLT %s
# RUN: not ld.lld --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: %t.o -o %t 2>&1 | FileCheck --check-prefix=MISSALIGNED %s
@@ -20,16 +20,16 @@
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck --check-prefix=NEGOFFSET %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=NEGOFFSET %s
# RUN: ld.lld --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: %t.o -o %t
-# RUN: llvm-objdump -d %t | FileCheck --check-prefix=THUNK %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=THUNK %s
# RUN: llvm-readelf --sections %t | FileCheck --check-prefix=BRANCHLT %s
# RUN: not ld.lld --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: %t.o -o %t 2>&1 | FileCheck --check-prefix=MISSALIGNED %s
@@ -58,23 +58,23 @@ test:
# Check that we are branching to the definitions, and not range-extending
# thunks.
# CHECK-LABEL: test
-# CHECK: 10010014: {{.*}} bl .+33554428
-# CHECK: 10010024: {{.*}} b .+33554428
+# CHECK: 10010014: bl .+33554428
+# CHECK: 10010024: b .+33554428
# NEGOFFSET-LABEL: test
-# NEGOFFSET: 10010014: {{.*}} bl .-33554432
-# NEGOFFSET: 10010024: {{.*}} b .+33554432
+# NEGOFFSET: 10010014: bl .-33554432
+# NEGOFFSET: 10010024: b .+33554432
# .branch_lt[0]
# THUNK-LABEL: __long_branch_callee:
-# THUNK-NEXT: 10010000: {{.*}} addis 12, 2, -1
+# THUNK-NEXT: 10010000: addis 12, 2, -1
# THUNK-NEXT: ld 12, -32768(12)
# THUNK-NEXT: mtctr 12
# THUNK-NEXT: bctr
# .branch_lt[1]
# THUNK-LABEL: __long_branch_tail_callee:
-# THUNK-NEXT: 10010010: {{.*}} addis 12, 2, -1
+# THUNK-NEXT: 10010010: addis 12, 2, -1
# THUNK-NEXT: ld 12, -32760(12)
# THUNK-NEXT: mtctr 12
# THUNK-NEXT: bctr
@@ -83,12 +83,11 @@ test:
# the offset is interpreted as a signed 26 bit value so 67108812 is actually
# -52.
# THUNK-LABEL: test:
-# THUNK: 10010034: {{.*}} bl .-52
-# THUNK: 10010044: {{.*}} b .+67108812
+# THUNK: 10010034: bl .-52
+# THUNK: 10010044: b .+67108812
# The offset from the TOC to the .branch_lt section is (-1 << 16) - 32768.
# Name Type Address Off Size
# BRANCHLT: .branch_lt PROGBITS 0000000010020000 020000 000010
# BRANCHLT: .got PROGBITS 0000000010030000 030000 000008
# BRANCHLT-NOT: .plt
-
diff --git a/lld/test/ELF/ppc64-ifunc.s b/lld/test/ELF/ppc64-ifunc.s
index bd7f761..4bf50b9 100644
--- a/lld/test/ELF/ppc64-ifunc.s
+++ b/lld/test/ELF/ppc64-ifunc.s
@@ -1,79 +1,67 @@
# REQUIRES: ppc
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
-# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
-# RUN: ld.lld -shared %t2.o -o %t2.so
-# RUN: ld.lld %t.o %t2.so -o %t
-# RUN: llvm-objdump -D %t | FileCheck %s
-# RUN: llvm-readelf -dynamic-table %t | FileCheck --check-prefix=DT %s
-# RUN: llvm-readelf -dyn-relocations %t | FileCheck --check-prefix=DYNREL %s
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-nm %t | FileCheck --check-prefix=NM %s
+# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SECTIONS %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
+# RUN: llvm-readelf -r %t | FileCheck --check-prefix=DYNREL %s
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
-# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
-# RUN: ld.lld -shared %t2.o -o %t2.so
-# RUN: ld.lld %t.o %t2.so -o %t
-# RUN: llvm-objdump -D %t | FileCheck %s
-# RUN: llvm-readelf -dynamic-table %t | FileCheck --check-prefix=DT %s
-# RUN: llvm-readelf -dyn-relocations %t | FileCheck --check-prefix=DYNREL %s
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-nm %t | FileCheck --check-prefix=NM %s
+# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SECTIONS %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
+# RUN: llvm-readelf -r %t | FileCheck --check-prefix=DYNREL %s
-# CHECK: Disassembly of section .text:
+# NM-DAG: 0000000010028000 d .TOC.
+# NM-DAG: 0000000010010028 T ifunc
+# NM-DAG: 000000001001002c T ifunc2
-# Tocbase + (0 << 16) + 32560
-# 0x100280e0 + 0 + 32560 = 0x10030010 (.plt[2])
-# CHECK: __plt_foo:
+# SECTIONS: .plt NOBITS 0000000010030000
+
+# .plt[0] - .TOC. = 0x10030000 - 0x10028000 = (1<<16) - 32768
+# CHECK: __plt_ifunc:
# CHECK-NEXT: std 2, 24(1)
-# CHECK-NEXT: addis 12, 2, 0
-# CHECK-NEXT: ld 12, 32560(12)
+# CHECK-NEXT: addis 12, 2, 1
+# CHECK-NEXT: ld 12, -32768(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
-# Tocbase + (0 << 16) + 32568
-# 0x100280e0 + 0 + 32568 = 0x1003018 (.plt[3])
-# CHECK: __plt_ifunc:
+# .plt[1] - .TOC. = 0x10030000+8 - 0x10028000 = (1<<16) - 32760
+# CHECK: __plt_ifunc2:
# CHECK-NEXT: std 2, 24(1)
-# CHECK-NEXT: addis 12, 2, 0
-# CHECK-NEXT: ld 12, 32568(12)
+# CHECK-NEXT: addis 12, 2, 1
+# CHECK-NEXT: ld 12, -32760(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
-# CHECK: ifunc:
-# CHECK-NEXT: 10010028: {{.*}} nop
-
+# __plt_ifunc - . = 0x10010000 - 0x10010038 = -56
+# __plt_ifunc2 - . = 0x10010014 - 0x10010040 = -44
# CHECK: _start:
-# CHECK-NEXT: addis 2, 12, 2
-# CHECK-NEXT: addi 2, 2, -32588
-# CHECK-NEXT: bl .-52
-# CHECK-NEXT: ld 2, 24(1)
-# CHECK-NEXT: bl .-40
-# CHECK-NEXT: ld 2, 24(1)
-
-# Check tocbase
-# CHECK: Disassembly of section .got:
-# CHECK-NEXT: .got:
-# CHECK-NEXT: 100200e0
-
-# Check .plt address
-# DT_PLTGOT should point to the start of the .plt section.
-# DT: 0x0000000000000003 PLTGOT 0x10030000
-
-# Check that we emit the correct dynamic relocation type for an ifunc
-# DYNREL: 'PLT' relocation section at offset 0x{{[0-9a-f]+}} contains 48 bytes:
-# 48 bytes --> 2 Elf64_Rela relocations
-# DYNREL-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
-# DYNREL-NEXT: {{[0-9a-f]+}} {{[0-9a-f]+}} R_PPC64_JMP_SLOT {{0+}} foo + 0
-# DYNREL-NEXT: {{[0-9a-f]+}} {{[0-9a-f]+}} R_PPC64_IRELATIVE 10010028
+# CHECK-NEXT: addis 2, 12, 1
+# CHECK-NEXT: addi 2, 2, 32720
+# CHECK-NEXT: 10010038: bl .-56
+# CHECK-NEXT: ld 2, 24(1)
+# CHECK-NEXT: 10010040: bl .-44
+# CHECK-NEXT: ld 2, 24(1)
-
- .text
- .abiversion 2
+# Check that we emit 2 R_PPC64_IRELATIVE.
+# DYNREL: R_PPC64_IRELATIVE 10010028
+# DYNREL: R_PPC64_IRELATIVE 1001002c
.type ifunc STT_GNU_IFUNC
.globl ifunc
ifunc:
- nop
+ nop
+
+.type ifunc2 STT_GNU_IFUNC
+.globl ifunc2
+ifunc2:
+ nop
- .global _start
- .type _start,@function
+.global _start
+.type _start,@function
_start:
.Lfunc_gep0:
@@ -81,7 +69,7 @@ _start:
addi 2, 2, .TOC.-.Lfunc_gep0@l
.Lfunc_lep0:
.localentry _start, .Lfunc_lep0-.Lfunc_gep0
- bl foo
- nop
bl ifunc
nop
+ bl ifunc2
+ nop
diff --git a/lld/test/ELF/ppc64-toc-restore-recursive-call.s b/lld/test/ELF/ppc64-toc-restore-recursive-call.s
index d194ada..538b12c 100644
--- a/lld/test/ELF/ppc64-toc-restore-recursive-call.s
+++ b/lld/test/ELF/ppc64-toc-restore-recursive-call.s
@@ -1,8 +1,8 @@
# REQUIRES: ppc
-# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
-# RUN: ld.lld -shared %t1.o -o %t
-# RUN: llvm-objdump -d -r %t | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
+# RUN: ld.lld -shared %t.o -o %t.so
+# RUN: llvm-objdump -d --no-show-raw-insn -r %t.so | FileCheck %s
# For a recursive call that is interposable the linker calls the plt-stub rather
# then calling the function directly. Since the call is through a plt stub and
@@ -18,8 +18,8 @@
# CHECK-NEXT: 10000:
# CHECK-LABEL: recursive_func
# CHECK-NEXT: 10014:
-# CHECK: 1003c: {{.*}} bl .-60
-# CHECK-NEXT: ld 2, 24(1)
+# CHECK: 1003c: bl .-60
+# CHECK-NEXT: 10040: ld 2, 24(1)
.abiversion 2
.section ".text"
diff --git a/lld/test/ELF/ppc64-toc-restore.s b/lld/test/ELF/ppc64-toc-restore.s
index 8c26207..8ffe213 100644
--- a/lld/test/ELF/ppc64-toc-restore.s
+++ b/lld/test/ELF/ppc64-toc-restore.s
@@ -5,14 +5,14 @@
// RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-func.s -o %t3.o
// RUN: ld.lld -shared %t2.o -o %t2.so
// RUN: ld.lld %t.o %t2.so %t3.o -o %t
-// RUN: llvm-objdump -d %t | FileCheck %s
+// RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-func.s -o %t3.o
// RUN: ld.lld -shared %t2.o -o %t2.so
// RUN: ld.lld %t.o %t2.so %t3.o -o %t
-// RUN: llvm-objdump -d %t | FileCheck %s
+// RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
.text
.abiversion 2
@@ -32,12 +32,12 @@ _start:
// CHECK: Disassembly of section .text:
// CHECK: _start:
-// CHECK: 1001001c: {{.*}} bl .-28
-// CHECK-NOT: 10010020: {{.*}} nop
-// CHECK: 10010020: {{.*}} ld 2, 24(1)
-// CHECK: 10010024: {{.*}} bl .-16
-// CHECK-NOT: 10010028: {{.*}} nop
-// CHECK-NOT: 10010028: {{.*}} ld 2, 24(1)
+// CHECK: 1001001c: bl .-28
+// CHECK-NOT: 10010020: nop
+// CHECK: 10010020: ld 2, 24(1)
+// CHECK: 10010024: bl .-16
+// CHECK-NOT: 10010028: nop
+// CHECK-NOT: 10010028: ld 2, 24(1)
# Calling a function in another object file which will have same
# TOC base does not need a nop. If nop present, do not rewrite to
@@ -49,18 +49,18 @@ _diff_object:
nop
// CHECK: _diff_object:
-// CHECK-NEXT: 10010028: {{.*}} bl .+24
-// CHECK-NEXT: 1001002c: {{.*}} bl .+20
-// CHECK-NEXT: 10010030: {{.*}} nop
+// CHECK-NEXT: 10010028: bl .+24
+// CHECK-NEXT: 1001002c: bl .+20
+// CHECK-NEXT: 10010030: nop
# Branching to a local function does not need a nop
.global noretbranch
noretbranch:
b bar_local
// CHECK: noretbranch:
-// CHECK: 10010034: {{.*}} b .+67108832
-// CHECK-NOT: 10010038: {{.*}} nop
-// CHECK-NOT: 1001003c: {{.*}} ld 2, 24(1)
+// CHECK: 10010034: b .+67108832
+// CHECK-NOT: 10010038: nop
+// CHECK-NOT: 1001003c: ld 2, 24(1)
// This should come last to check the end-of-buffer condition.
.global last
@@ -68,5 +68,5 @@ last:
bl foo
nop
// CHECK: last:
-// CHECK: 10010038: {{.*}} bl .-56
-// CHECK-NEXT: 1001003c: {{.*}} ld 2, 24(1)
+// CHECK: 10010038: bl .-56
+// CHECK-NEXT: 1001003c: ld 2, 24(1)