summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/tools/llvm-objcopy/COFF/Inputs/strip-symbols.yaml53
-rw-r--r--llvm/test/tools/llvm-objcopy/COFF/strip-reloc-symbol.test5
-rw-r--r--llvm/test/tools/llvm-objcopy/COFF/strip-symbol.test32
3 files changed, 90 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/COFF/Inputs/strip-symbols.yaml b/llvm/test/tools/llvm-objcopy/COFF/Inputs/strip-symbols.yaml
new file mode 100644
index 00000000000..1d652691198
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/COFF/Inputs/strip-symbols.yaml
@@ -0,0 +1,53 @@
+--- !COFF
+header:
+ Machine: IMAGE_FILE_MACHINE_AMD64
+ Characteristics: [ ]
+sections:
+ - Name: .text
+ Characteristics: [ ]
+ Alignment: 4
+ SectionData: 488B0500000000488B0500000000488B0500000000
+ Relocations:
+ - VirtualAddress: 3
+ SymbolTableIndex: 0
+ Type: IMAGE_REL_AMD64_REL32
+ - VirtualAddress: 10
+ SymbolTableIndex: 1
+ Type: IMAGE_REL_AMD64_REL32
+ - VirtualAddress: 17
+ SymbolName: foo
+ Type: IMAGE_REL_AMD64_REL32
+ - Name: .rdata
+ Characteristics: [ ]
+ Alignment: 1
+ SectionData: '00'
+ - Name: .rdata
+ Characteristics: [ ]
+ Alignment: 1
+ SectionData: '01'
+symbols:
+ - Name: .rdata
+ Value: 0
+ SectionNumber: 2
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_STATIC
+ - Name: .rdata
+ Value: 0
+ SectionNumber: 3
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_STATIC
+ - Name: mainfunc
+ Value: 0
+ SectionNumber: 1
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
+ - Name: foo
+ Value: 0
+ SectionNumber: 3
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
+...
diff --git a/llvm/test/tools/llvm-objcopy/COFF/strip-reloc-symbol.test b/llvm/test/tools/llvm-objcopy/COFF/strip-reloc-symbol.test
new file mode 100644
index 00000000000..50740d9ee01
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/COFF/strip-reloc-symbol.test
@@ -0,0 +1,5 @@
+# RUN: yaml2obj %p/Inputs/strip-symbols.yaml > %t.o
+# RUN: not llvm-objcopy -N foo %t.o 2>&1 | FileCheck %s --check-prefix=ERROR
+# RUN: not llvm-objcopy --strip-symbol foo %t.o 2>&1 | FileCheck %s --check-prefix=ERROR
+
+# ERROR: error: '{{.*}}/strip-reloc-symbol.test.tmp.o': not stripping symbol 'foo' because it is named in a relocation.
diff --git a/llvm/test/tools/llvm-objcopy/COFF/strip-symbol.test b/llvm/test/tools/llvm-objcopy/COFF/strip-symbol.test
new file mode 100644
index 00000000000..5355b22328a
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/COFF/strip-symbol.test
@@ -0,0 +1,32 @@
+# RUN: yaml2obj %p/Inputs/strip-symbols.yaml > %t.in.o
+
+# RUN: llvm-readobj -relocations %t.in.o | FileCheck %s --check-prefixes=RELOCS,RELOCS-PRE
+# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-PRE
+
+# RUN: llvm-objcopy -N mainfunc %t.in.o %t.out.o
+# RUN: llvm-readobj -relocations %t.out.o | FileCheck %s --check-prefixes=RELOCS,RELOCS-POST
+# RUN: llvm-objdump -t %t.out.o | FileCheck %s --check-prefix=SYMBOLS
+
+# RUN: llvm-objcopy --strip-symbol mainfunc %t.in.o %t.out.o
+# RUN: llvm-readobj -relocations %t.out.o | FileCheck %s --check-prefixes=RELOCS,RELOCS-POST
+# RUN: llvm-objdump -t %t.out.o | FileCheck %s --check-prefix=SYMBOLS
+
+# Explicitly listing the relocations for the input as well, to show
+# that the symbol index of the symbol foo is updated in the relocations,
+# while keeping relocations to two distinct .rdata symbols separate.
+
+# RELOCS: Relocations [
+# RELOCS-NEXT: Section (1) .text {
+# RELOCS-NEXT: 0x3 IMAGE_REL_AMD64_REL32 .rdata (0)
+# RELOCS-NEXT: 0xA IMAGE_REL_AMD64_REL32 .rdata (1)
+# RELOCS-PRE-NEXT: 0x11 IMAGE_REL_AMD64_REL32 foo (3)
+# RELOCS-POST-NEXT: 0x11 IMAGE_REL_AMD64_REL32 foo (2)
+# RELOCS-NEXT: }
+# RELOCS-NEXT: ]
+
+# SYMBOLS: SYMBOL TABLE:
+# SYMBOLS-NEXT: .rdata
+# SYMBOLS-NEXT: .rdata
+# SYMBOLS-PRE-NEXT: mainfunc
+# SYMBOLS-NEXT: foo
+# SYMBOLS-EMPTY:
OpenPOWER on IntegriCloud