aboutsummaryrefslogtreecommitdiffstats
path: root/test/Object
diff options
context:
space:
mode:
authorStephen Hines <srhines@google.com>2014-05-29 02:49:00 -0700
committerStephen Hines <srhines@google.com>2014-05-29 02:49:00 -0700
commitdce4a407a24b04eebc6a376f8e62b41aaa7b071f (patch)
treedcebc53f2b182f145a2e659393bf9a0472cedf23 /test/Object
parent220b921aed042f9e520c26cffd8282a94c66c3d5 (diff)
downloadexternal_llvm-dce4a407a24b04eebc6a376f8e62b41aaa7b071f.zip
external_llvm-dce4a407a24b04eebc6a376f8e62b41aaa7b071f.tar.gz
external_llvm-dce4a407a24b04eebc6a376f8e62b41aaa7b071f.tar.bz2
Update LLVM for 3.5 rebase (r209712).
Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
Diffstat (limited to 'test/Object')
-rw-r--r--test/Object/Inputs/COFF/weak-external.yaml43
-rw-r--r--test/Object/Inputs/COFF/x86-64.yaml17
-rw-r--r--test/Object/Inputs/macho-text-data-bss.macho-x86_64bin0 -> 844 bytes
-rw-r--r--test/Object/Inputs/macho-universal-archive.x86_64.i386bin0 -> 1656 bytes
-rwxr-xr-xtest/Object/Inputs/relocation-dynamic.elf-i386bin0 -> 1504 bytes
-rw-r--r--test/Object/Inputs/relocation-relocatable.elf-i386bin0 -> 772 bytes
-rw-r--r--test/Object/Inputs/trivial-object-test.coff-x86-64bin347 -> 437 bytes
-rw-r--r--test/Object/X86/objdump-cfg-invalid-opcode.yaml2
-rw-r--r--test/Object/X86/objdump-disassembly-symbolic.test20
-rw-r--r--test/Object/X86/yaml2obj-elf-x86-rel.yaml41
-rw-r--r--test/Object/ar-error.test6
-rw-r--r--test/Object/archive-long-index.test26
-rw-r--r--test/Object/archive-symtab.test24
-rw-r--r--test/Object/archive-toc.test24
-rw-r--r--test/Object/extract.ll2
-rw-r--r--test/Object/nm-shared-object.test28
-rw-r--r--test/Object/nm-trivial-object.test46
-rw-r--r--test/Object/nm-universal-binary.test23
-rw-r--r--test/Object/obj2yaml-coff-weak-external.test3
-rw-r--r--test/Object/obj2yaml.test244
-rw-r--r--test/Object/size-trivial-macho.test15
-rw-r--r--test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml9
-rw-r--r--test/Object/yaml2obj-elf-rel.yaml118
-rw-r--r--test/Object/yaml2obj-elf-section-basic.yaml34
-rw-r--r--test/Object/yaml2obj-elf-section-invalid-size.yaml26
-rw-r--r--test/Object/yaml2obj-readobj.test3
26 files changed, 665 insertions, 89 deletions
diff --git a/test/Object/Inputs/COFF/weak-external.yaml b/test/Object/Inputs/COFF/weak-external.yaml
new file mode 100644
index 0000000..064b44a
--- /dev/null
+++ b/test/Object/Inputs/COFF/weak-external.yaml
@@ -0,0 +1,43 @@
+---
+header:
+ Machine: IMAGE_FILE_MACHINE_I386
+ Characteristics: [ IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ]
+sections:
+ - Name: .text
+ Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+ Alignment: 4
+ SectionData: 5589E583E4F0E800000000B800000000C9C39090
+ Relocations:
+ - VirtualAddress: 7
+ SymbolName: ___main
+ Type: IMAGE_REL_I386_REL32
+symbols:
+ - Name: .file
+ Value: 0
+ SectionNumber: 65534
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_FILE
+ File: 'file'
+ - Name: .text
+ Value: 0
+ SectionNumber: 1
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_STATIC
+ SectionDefinition:
+ Length: 18
+ NumberOfRelocations: 1
+ NumberOfLinenumbers: 0
+ CheckSum: 0
+ Number: 0
+ - Name: ___main
+ Value: 0
+ SectionNumber: 0
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
+ WeakExternal:
+ TagIndex: 0
+ Characteristics: 0
+...
diff --git a/test/Object/Inputs/COFF/x86-64.yaml b/test/Object/Inputs/COFF/x86-64.yaml
index 1dc2b10..b8a863a 100644
--- a/test/Object/Inputs/COFF/x86-64.yaml
+++ b/test/Object/Inputs/COFF/x86-64.yaml
@@ -30,6 +30,16 @@ sections:
Characteristics: [IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE, ] # 0xc0100040
SectionData: !hex "48656C6C6F20576F726C642100" # |Hello World!.|
+ - !Section
+ Name: '.CRT$XCU'
+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+ Alignment: 8
+ SectionData: !hex "0000000000000000"
+ Relocations:
+ - VirtualAddress: 0
+ SymbolName: '??__Ex@@YAXXZ'
+ Type: IMAGE_REL_AMD64_ADDR64
+
symbols:
- !Symbol
Name: .text
@@ -91,3 +101,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL # (0)
StorageClass: IMAGE_SYM_CLASS_EXTERNAL # (2)
+ - !Symbol
+ Name: '??__Ex@@YAXXZ'
+ Value: 0
+ SectionNumber: 3
+ SimpleType: IMAGE_SYM_TYPE_NULL # (0)
+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION # (2)
+ StorageClass: IMAGE_SYM_CLASS_STATIC # (3)
diff --git a/test/Object/Inputs/macho-text-data-bss.macho-x86_64 b/test/Object/Inputs/macho-text-data-bss.macho-x86_64
new file mode 100644
index 0000000..b7628c8
--- /dev/null
+++ b/test/Object/Inputs/macho-text-data-bss.macho-x86_64
Binary files differ
diff --git a/test/Object/Inputs/macho-universal-archive.x86_64.i386 b/test/Object/Inputs/macho-universal-archive.x86_64.i386
new file mode 100644
index 0000000..1660714
--- /dev/null
+++ b/test/Object/Inputs/macho-universal-archive.x86_64.i386
Binary files differ
diff --git a/test/Object/Inputs/relocation-dynamic.elf-i386 b/test/Object/Inputs/relocation-dynamic.elf-i386
new file mode 100755
index 0000000..1548f13
--- /dev/null
+++ b/test/Object/Inputs/relocation-dynamic.elf-i386
Binary files differ
diff --git a/test/Object/Inputs/relocation-relocatable.elf-i386 b/test/Object/Inputs/relocation-relocatable.elf-i386
new file mode 100644
index 0000000..b8f375b
--- /dev/null
+++ b/test/Object/Inputs/relocation-relocatable.elf-i386
Binary files differ
diff --git a/test/Object/Inputs/trivial-object-test.coff-x86-64 b/test/Object/Inputs/trivial-object-test.coff-x86-64
index 0775914..ed144d1 100644
--- a/test/Object/Inputs/trivial-object-test.coff-x86-64
+++ b/test/Object/Inputs/trivial-object-test.coff-x86-64
Binary files differ
diff --git a/test/Object/X86/objdump-cfg-invalid-opcode.yaml b/test/Object/X86/objdump-cfg-invalid-opcode.yaml
index 56ab1d2..d0a29be 100644
--- a/test/Object/X86/objdump-cfg-invalid-opcode.yaml
+++ b/test/Object/X86/objdump-cfg-invalid-opcode.yaml
@@ -38,7 +38,7 @@ Sections:
#CFG: Type: Data
## 4: 06 (bad)
-#CFG: Content: 06
+#CFG: Content: '06'
#CFG: - StartAddress: 0x0000000000000005
#CFG: Size: 1
diff --git a/test/Object/X86/objdump-disassembly-symbolic.test b/test/Object/X86/objdump-disassembly-symbolic.test
index 858653e..95a5fc8 100644
--- a/test/Object/X86/objdump-disassembly-symbolic.test
+++ b/test/Object/X86/objdump-disassembly-symbolic.test
@@ -46,3 +46,23 @@ MACHO-STUBS-x86-64: 1faa: e8 09 00 00 00
MACHO-STUBS-x86-64: 1faf: 8b 44 24 04 movl 4(%rsp), %eax
MACHO-STUBS-x86-64: 1fb3: 48 83 c4 08 addq $8, %rsp
MACHO-STUBS-x86-64: 1fb7: c3 ret
+
+
+RUN: llvm-objdump -d -symbolize %p/../Inputs/relocation-relocatable.elf-i386 \
+RUN: | FileCheck %s -check-prefix ELF-i386-REL
+
+ELF-i386-REL: Disassembly of section .text:
+ELF-i386-REL-NEXT: f:
+ELF-i386-REL-NEXT: 0: e9 fc ff ff ff jmp h
+ELF-i386-REL: g:
+ELF-i386-REL-NEXT: 5: e9 fc ff ff ff jmp f
+
+
+RUN: llvm-objdump -d -symbolize %p/../Inputs/relocation-dynamic.elf-i386 \
+RUN: | FileCheck %s -check-prefix ELF-i386-DYN
+
+ELF-i386-DYN: Disassembly of section .text:
+ELF-i386-DYN-NEXT: f:
+ELF-i386-DYN-NEXT: 1a4: e9 fc ff ff ff jmp h
+ELF-i386-DYN: g:
+ELF-i386-DYN-NEXT: 1a9: e9 fc ff ff ff jmp f
diff --git a/test/Object/X86/yaml2obj-elf-x86-rel.yaml b/test/Object/X86/yaml2obj-elf-x86-rel.yaml
new file mode 100644
index 0000000..5ca6614
--- /dev/null
+++ b/test/Object/X86/yaml2obj-elf-x86-rel.yaml
@@ -0,0 +1,41 @@
+# RUN: yaml2obj -format=elf %s > %t
+# RUN: llvm-readobj -r %t | FileCheck %s
+
+# CHECK: Relocations [
+# CHECK-NEXT: Section (2) .rel.text {
+# CHECK-NEXT: 0x0 R_386_32 main 0x0
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
+
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_386
+Sections:
+ - Type: SHT_PROGBITS
+ Name: .text
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x04
+ Content: 0000000000000000
+ - Type: SHT_REL
+ Name: .rel.text
+ Link: .symtab
+ Info: .text
+ AddressAlign: 0x04
+ Relocations:
+ - Offset: 0
+ Symbol: main
+ Type: R_386_32
+
+Symbols:
+ Local:
+ - Name: .text
+ Type: STT_SECTION
+ Section: .text
+
+ Global:
+ - Name: main
+ Type: STT_FUNC
+ Section: .text
+ Size: 0x08
diff --git a/test/Object/ar-error.test b/test/Object/ar-error.test
new file mode 100644
index 0000000..7add9b4
--- /dev/null
+++ b/test/Object/ar-error.test
@@ -0,0 +1,6 @@
+Test if we get a proper error with a filename that doesn't exist
+
+RUN: not llvm-ar r %t.out.a sparkle.o %t 2>&1 | FileCheck %s
+
+# Don't check the message "No such file or directory".
+CHECK: llvm-ar{{(.exe|.EXE)?}}: sparkle.o:
diff --git a/test/Object/archive-long-index.test b/test/Object/archive-long-index.test
index bd530ed..f2f4df6 100644
--- a/test/Object/archive-long-index.test
+++ b/test/Object/archive-long-index.test
@@ -17,24 +17,24 @@ CHECKIDX: b in abcdefghijklmnopqrstuvwxyz2.o
CHECKIDX: bda in abcdefghijklmnopqrstuvwxyz2.o
CHECKIDX: b in abcdefghijklmnopq.o
CHECKIDX: 1.o:
-CHECKIDX: 00000000 D abcdefghijklmnopqrstuvwxyz12345678
-CHECKIDX: U bda
-CHECKIDX: 00000000 T main
+CHECKIDX: 0000000000000000 D abcdefghijklmnopqrstuvwxyz12345678
+CHECKIDX: U bda
+CHECKIDX: 0000000000000000 T main
CHECKIDX: 2.o:
-CHECKIDX: 00000000 T fn1
+CHECKIDX: 0000000000000000 T fn1
CHECKIDX: 3.o:
-CHECKIDX: 0000000b T fn1
-CHECKIDX: 00000000 T fn3
+CHECKIDX: 000000000000000b T fn1
+CHECKIDX: 0000000000000000 T fn3
CHECKIDX: 4.o:
-CHECKIDX: C shankar
+CHECKIDX: C shankar
CHECKIDX: 5.o:
-CHECKIDX: C a
+CHECKIDX: C a
CHECKIDX: 6.o:
-CHECKIDX: C b
+CHECKIDX: C b
CHECKIDX: abcdefghijklmnopqrstuvwxyz1.o:
-CHECKIDX: C a
+CHECKIDX: C a
CHECKIDX: abcdefghijklmnopqrstuvwxyz2.o:
-CHECKIDX: C b
-CHECKIDX: 00000000 T bda
+CHECKIDX: C b
+CHECKIDX: 0000000000000000 T bda
CHECKIDX: abcdefghijklmnopq.o:
-CHECKIDX: C b
+CHECKIDX: C b
diff --git a/test/Object/archive-symtab.test b/test/Object/archive-symtab.test
index 6379504..88c9c98 100644
--- a/test/Object/archive-symtab.test
+++ b/test/Object/archive-symtab.test
@@ -9,13 +9,13 @@ CHECK-NEXT: main in trivial-object-test2.elf-x86-64
CHECK-NOT: bar
CHECK: trivial-object-test.elf-x86-64:
-CHECK-NEXT: U SomeOtherFunction
-CHECK-NEXT: 00000000 T main
-CHECK-NEXT: U puts
+CHECK-NEXT: U SomeOtherFunction
+CHECK-NEXT: 0000000000000000 T main
+CHECK-NEXT: U puts
CHECK-NEXT: trivial-object-test2.elf-x86-64:
-CHECK-NEXT: 00000000 t bar
-CHECK-NEXT: 00000006 T foo
-CHECK-NEXT: 00000016 T main
+CHECK-NEXT: 0000000000000000 t bar
+CHECK-NEXT: 0000000000000006 T foo
+CHECK-NEXT: 0000000000000016 T main
RUN: rm -f %t.a
RUN: llvm-ar rcS %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
@@ -37,13 +37,13 @@ CORRUPT-NEXT: foo in trivial-object-test2.elf-x86-64
CORRUPT-NEXT: main in trivial-object-test2.elf-x86-64
CORRUPT: trivial-object-test.elf-x86-64:
-CORRUPT-NEXT: U SomeOtherFunction
-CORRUPT-NEXT: 00000000 T main
-CORRUPT-NEXT: U puts
+CORRUPT-NEXT: U SomeOtherFunction
+CORRUPT-NEXT: 0000000000000000 T main
+CORRUPT-NEXT: U puts
CORRUPT-NEXT: trivial-object-test2.elf-x86-64:
-CORRUPT-NEXT: 00000000 t bar
-CORRUPT-NEXT: 00000006 T foo
-CORRUPT-NEXT: 00000016 T main
+CORRUPT-NEXT: 0000000000000000 t bar
+CORRUPT-NEXT: 0000000000000006 T foo
+CORRUPT-NEXT: 0000000000000016 T main
check that the we *don't* update the symbol table.
RUN: llvm-ar s %t.a
diff --git a/test/Object/archive-toc.test b/test/Object/archive-toc.test
index 0a5e72b..4195c40 100644
--- a/test/Object/archive-toc.test
+++ b/test/Object/archive-toc.test
@@ -1,20 +1,20 @@
Test reading an archive created by gnu ar
RUN: env TZ=GMT llvm-ar tv %p/Inputs/GNU.a | FileCheck %s --check-prefix=GNU -strict-whitespace
-GNU: rw-r--r-- 500/500 8 Nov 19 02:57 2004 evenlen
-GNU-NEXT: rw-r--r-- 500/500 7 Nov 19 02:57 2004 oddlen
-GNU-NEXT: rwxr-xr-x 500/500 1465 Nov 19 03:01 2004 very_long_bytecode_file_name.bc
-GNU-NEXT: rw-r--r-- 500/500 2280 Nov 19 03:04 2004 IsNAN.o
+GNU: rw-r--r-- 500/500 8 2004-11-19 02:57:37.000000000 evenlen
+GNU-NEXT: rw-r--r-- 500/500 7 2004-11-19 02:57:21.000000000 oddlen
+GNU-NEXT: rwxr-xr-x 500/500 1465 2004-11-19 03:01:31.000000000 very_long_bytecode_file_name.bc
+GNU-NEXT: rw-r--r-- 500/500 2280 2004-11-19 03:04:30.000000000 IsNAN.o
Test reading an archive createdy by Mac OS X ar
RUN: env TZ=GMT llvm-ar tv %p/Inputs/MacOSX.a | FileCheck %s --check-prefix=OSX -strict-whitespace
OSX-NOT: __.SYMDEF
-OSX: rw-r--r-- 501/501 8 Nov 19 02:57 2004 evenlen
-OSX-NEXT: rw-r--r-- 501/501 8 Nov 19 02:57 2004 oddlen
-OSX-NEXT: rw-r--r-- 502/502 1465 Feb 4 06:59 2010 very_long_bytecode_file_name.bc
-OSX-NEXT: rw-r--r-- 501/501 2280 Nov 19 04:32 2004 IsNAN.o
+OSX: rw-r--r-- 501/501 8 2004-11-19 02:57:37.000000000 evenlen
+OSX-NEXT: rw-r--r-- 501/501 8 2004-11-19 02:57:21.000000000 oddlen
+OSX-NEXT: rw-r--r-- 502/502 1465 2010-02-04 06:59:14.000000000 very_long_bytecode_file_name.bc
+OSX-NEXT: rw-r--r-- 501/501 2280 2004-11-19 04:32:06.000000000 IsNAN.o
Test reading an archive created on Solaris by /usr/ccs/bin/ar
RUN: env TZ=GMT llvm-ar tv %p/Inputs/SVR4.a | FileCheck %s -strict-whitespace
@@ -22,7 +22,7 @@ RUN: env TZ=GMT llvm-ar tv %p/Inputs/SVR4.a | FileCheck %s -strict-whitespace
Test reading an archive created on Solaris by /usr/xpg4/bin/ar
RUN: env TZ=GMT llvm-ar tv %p/Inputs/xpg4.a | FileCheck %s -strict-whitespace
-CHECK: rw-r--r-- 1002/102 8 Nov 19 03:24 2004 evenlen
-CHECK-NEXT: rw-r--r-- 1002/102 7 Nov 19 03:24 2004 oddlen
-CHECK-NEXT: rwxr-xr-x 1002/102 1465 Nov 19 03:24 2004 very_long_bytecode_file_name.bc
-CHECK-NEXT: rw-r--r-- 1002/102 2280 Nov 19 03:24 2004 IsNAN.o
+CHECK: rw-r--r-- 1002/102 8 2004-11-19 03:24:02.000000000 evenlen
+CHECK-NEXT: rw-r--r-- 1002/102 7 2004-11-19 03:24:02.000000000 oddlen
+CHECK-NEXT: rwxr-xr-x 1002/102 1465 2004-11-19 03:24:02.000000000 very_long_bytecode_file_name.bc
+CHECK-NEXT: rw-r--r-- 1002/102 2280 2004-11-19 03:24:02.000000000 IsNAN.o
diff --git a/test/Object/extract.ll b/test/Object/extract.ll
index 9f93c68..a4e7649 100644
--- a/test/Object/extract.ll
+++ b/test/Object/extract.ll
@@ -44,4 +44,4 @@
; RUN: llvm-ar rc %t.a very_long_bytecode_file_name.bc
; RUN: env TZ=GMT llvm-ar tv %t.a | FileCheck %s
-CHECK: 1465 Nov 19 03:01 2004 very_long_bytecode_file_name.bc
+CHECK: 1465 2004-11-19 03:01:31.000000000 very_long_bytecode_file_name.bc
diff --git a/test/Object/nm-shared-object.test b/test/Object/nm-shared-object.test
index b77b2ce..32ae6a8 100644
--- a/test/Object/nm-shared-object.test
+++ b/test/Object/nm-shared-object.test
@@ -2,25 +2,25 @@ RUN: llvm-nm -D %p/Inputs/shared-object-test.elf-i386 \
RUN: | FileCheck %s -check-prefix ELF-32
ELF-32-NOT: U
-ELF-32: 0012c8 A __bss_start
-ELF-32: 0012c8 A _edata
-ELF-32: 0012cc A _end
-ELF-32: 0012c8 B common_sym
-ELF-32: 0012c4 D defined_sym
-ELF-32: 0001f0 T global_func
-ELF-32: 000000 D tls_sym
+ELF-32: 000012c8 A __bss_start
+ELF-32: 000012c8 A _edata
+ELF-32: 000012cc A _end
+ELF-32: 000012c8 B common_sym
+ELF-32: 000012c4 D defined_sym
+ELF-32: 000001f0 T global_func
+ELF-32: 00000000 D tls_sym
RUN: llvm-nm -D %p/Inputs/shared-object-test.elf-x86-64 \
RUN: | FileCheck %s -check-prefix ELF-64
ELF-64-NOT: U
-ELF-64: 200454 A __bss_start
-ELF-64: 200454 A _edata
-ELF-64: 200458 A _end
-ELF-64: 200454 B common_sym
-ELF-64: 200450 D defined_sym
-ELF-64: 0002f0 T global_func
-ELF-64: 000000 D tls_sym
+ELF-64: 0000000000200454 A __bss_start
+ELF-64: 0000000000200454 A _edata
+ELF-64: 0000000000200458 A _end
+ELF-64: 0000000000200454 B common_sym
+ELF-64: 0000000000200450 D defined_sym
+ELF-64: 00000000000002f0 T global_func
+ELF-64: 0000000000000000 D tls_sym
RUN: not llvm-nm -D %p/Inputs/weak-global-symbol.macho-i386 2>&1 \
RUN: | FileCheck %s -check-prefix ERROR
diff --git a/test/Object/nm-trivial-object.test b/test/Object/nm-trivial-object.test
index 4e90f96..20ac662 100644
--- a/test/Object/nm-trivial-object.test
+++ b/test/Object/nm-trivial-object.test
@@ -5,11 +5,11 @@ RUN: | FileCheck %s -check-prefix COFF
RUN: llvm-nm %p/Inputs/trivial-object-test.elf-i386 \
RUN: | FileCheck %s -check-prefix ELF
RUN: llvm-nm %p/Inputs/trivial-object-test.elf-x86-64 \
-RUN: | FileCheck %s -check-prefix ELF
+RUN: | FileCheck %s -check-prefix ELF64
RUN: llvm-nm %p/Inputs/weak.elf-x86-64 \
-RUN: | FileCheck %s -check-prefix WEAK-ELF
+RUN: | FileCheck %s -check-prefix WEAK-ELF64
RUN: llvm-nm %p/Inputs/absolute.elf-x86-64 \
-RUN: | FileCheck %s -check-prefix ABSOLUTE-ELF
+RUN: | FileCheck %s -check-prefix ABSOLUTE-ELF64
RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \
RUN: | FileCheck %s -check-prefix macho
RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \
@@ -17,7 +17,7 @@ RUN: | FileCheck %s -check-prefix macho64
RUN: llvm-nm %p/Inputs/common.coff-i386 \
RUN: | FileCheck %s -check-prefix COFF-COMMON
RUN: llvm-nm %p/Inputs/relocatable-with-section-address.elf-x86-64 \
-RUN: | FileCheck %s -check-prefix ELF-SEC-ADDR
+RUN: | FileCheck %s -check-prefix ELF-SEC-ADDR64
RUN: llvm-nm %p/Inputs/thumb-symbols.elf.arm \
RUN: | FileCheck %s -check-prefix ELF-THUMB
@@ -43,30 +43,34 @@ ELF: U SomeOtherFunction
ELF: 00000000 T main
ELF: U puts
-WEAK-ELF: w f1
-WEAK-ELF: 00000000 W f2
-WEAK-ELF: v x1
-WEAK-ELF: 00000000 V x2
+ELF64: U SomeOtherFunction
+ELF64: 0000000000000000 T main
+ELF64: U puts
+
+WEAK-ELF64: w f1
+WEAK-ELF64: 0000000000000000 W f2
+WEAK-ELF64: v x1
+WEAK-ELF64: 0000000000000000 V x2
-ABSOLUTE-ELF: 00000123 a a1
-ABSOLUTE-ELF: 00000123 A a2
+ABSOLUTE-ELF64: 0000000000000123 a a1
+ABSOLUTE-ELF64: 0000000000000123 A a2
-macho: 00000000 U _SomeOtherFunction
+macho: U _SomeOtherFunction
macho: 00000000 T _main
-macho: 00000000 U _puts
+macho: U _puts
-macho64: 00000028 s L_.str
-macho64: 00000000 U _SomeOtherFunction
-macho64: 00000000 T _main
-macho64: 00000000 U _puts
+macho64: 0000000000000028 s L_.str
+macho64: U _SomeOtherFunction
+macho64: 0000000000000000 T _main
+macho64: U _puts
Test that nm uses addresses even with ELF .o files.
-ELF-SEC-ADDR: 00000058 D a
-ELF-SEC-ADDR-NEXT: 0000005c D b
-ELF-SEC-ADDR-NEXT: 00000040 T f
-ELF-SEC-ADDR-NEXT: 00000050 T g
-ELF-SEC-ADDR-NEXT: 00000060 D p
+ELF-SEC-ADDR64: 0000000000000058 D a
+ELF-SEC-ADDR64-NEXT: 000000000000005c D b
+ELF-SEC-ADDR64-NEXT: 0000000000000040 T f
+ELF-SEC-ADDR64-NEXT: 0000000000000050 T g
+ELF-SEC-ADDR64-NEXT: 0000000000000060 D p
Test that we drop the thumb bit only from function addresses.
diff --git a/test/Object/nm-universal-binary.test b/test/Object/nm-universal-binary.test
index 8febfdf..c20c733 100644
--- a/test/Object/nm-universal-binary.test
+++ b/test/Object/nm-universal-binary.test
@@ -1,6 +1,19 @@
-RUN: llvm-nm %p/Inputs/macho-universal.x86_64.i386 | FileCheck %s
+RUN: llvm-nm %p/Inputs/macho-universal.x86_64.i386 \
+RUN: | FileCheck %s -check-prefix CHECK-OBJ
+RUN: llvm-nm %p/Inputs/macho-universal-archive.x86_64.i386 \
+RUN: | FileCheck %s -check-prefix CHECK-AR
-CHECK: macho-universal.x86_64.i386:x86_64
-CHECK: main
-CHECK: macho-universal.x86_64.i386:i386
-CHECK: main
+CHECK-OBJ: macho-universal.x86_64.i386:x86_64
+CHECK-OBJ: 0000000100000f60 T _main
+CHECK-OBJ: macho-universal.x86_64.i386:i386
+CHECK-OBJ: 00001fa0 T _main
+
+CHECK-AR: macho-universal-archive.x86_64.i386:x86_64:hello.o:
+CHECK-AR: 0000000000000068 s EH_frame0
+CHECK-AR: 000000000000003b s L_.str
+CHECK-AR: 0000000000000000 T _main
+CHECK-AR: 0000000000000080 S _main.eh
+CHECK-AR: U _printf
+CHECK-AR: macho-universal-archive.x86_64.i386:i386:foo.o:
+CHECK-AR: 00000008 S _bar
+CHECK-AR: 00000000 T _foo
diff --git a/test/Object/obj2yaml-coff-weak-external.test b/test/Object/obj2yaml-coff-weak-external.test
new file mode 100644
index 0000000..4ecdc1b
--- /dev/null
+++ b/test/Object/obj2yaml-coff-weak-external.test
@@ -0,0 +1,3 @@
+RUN: yaml2obj %p/Inputs/COFF/weak-external.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386
+
+COFF-I386: Characteristics: 0
diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test
index d96275f..1c15263 100644
--- a/test/Object/obj2yaml.test
+++ b/test/Object/obj2yaml.test
@@ -1,6 +1,8 @@
RUN: obj2yaml %p/Inputs/trivial-object-test.coff-i386 | FileCheck %s --check-prefix COFF-I386
RUN: obj2yaml %p/Inputs/trivial-object-test.coff-x86-64 | FileCheck %s --check-prefix COFF-X86-64
-
+RUN: obj2yaml %p/Inputs/trivial-object-test.elf-mipsel | FileCheck %s --check-prefix ELF-MIPSEL
+RUN: obj2yaml %p/Inputs/trivial-object-test.elf-mips64el | FileCheck %s --check-prefix ELF-MIPS64EL
+RUN: obj2yaml %p/Inputs/trivial-object-test.elf-x86-64 | FileCheck %s --check-prefix ELF-X86-64
COFF-I386: header:
COFF-I386-NEXT: Machine: IMAGE_FILE_MACHINE_I386
@@ -112,6 +114,16 @@ COFF-X86-64-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_S
COFF-X86-64-NEXT: Alignment: 1
COFF-X86-64-NEXT: SectionData: 48656C6C6F20576F726C642100
+COFF-X86-64: - Name: '.CRT$XCU'
+COFF-X86-64-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+COFF-X86-64-NEXT: Alignment: 8
+COFF-X86-64-NEXT: SectionData: '0000000000000000'
+
+COFF-X86-64: Relocations:
+COFF-X86-64-NEXT: - VirtualAddress: 0
+COFF-X86-64-NEXT: SymbolName: '??__Ex@@YAXXZ'
+COFF-X86-64-NEXT: Type: IMAGE_REL_AMD64_ADDR64
+
COFF-X86-64: symbols:
COFF-X86-64-NEXT: - Name: .text
COFF-X86-64-NEXT: Value: 0
@@ -143,7 +155,7 @@ COFF-X86-64: - Name: main
COFF-X86-64-NEXT: Value: 0
COFF-X86-64-NEXT: SectionNumber: 1
COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL
-COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_NULL
+COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_FUNCTION
COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_EXTERNAL
COFF-X86-64: - Name: L.str
@@ -166,4 +178,230 @@ COFF-X86-64-NEXT: SectionNumber: 0
COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL
COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_NULL
COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-COFF-X86-64-NOT: NumberOfAuxSymbols
+
+COFF-X86-64: - Name: '??__Ex@@YAXXZ'
+COFF-X86-64-NEXT: Value: 0
+COFF-X86-64-NEXT: SectionNumber: 3
+COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL
+COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_FUNCTION
+COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_STATIC
+
+ELF-MIPSEL: FileHeader:
+ELF-MIPSEL-NEXT: Class: ELFCLASS32
+ELF-MIPSEL-NEXT: Data: ELFDATA2LSB
+ELF-MIPSEL-NEXT: Type: ET_REL
+ELF-MIPSEL-NEXT: Machine: EM_MIPS
+ELF-MIPSEL-NEXT: Flags: [ EF_MIPS_NOREORDER, EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ]
+ELF-MIPSEL-NEXT: Sections:
+ELF-MIPSEL-NEXT: - Name: .text
+ELF-MIPSEL-NEXT: Type: SHT_PROGBITS
+ELF-MIPSEL-NEXT: Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004
+ELF-MIPSEL-NEXT: Content: 0000023C00004224E8FFBD271400BFAF1000B0AF218059000000018E000024240000198E09F8200321E000020000198E09F8200321E00002000002241000B08F1400BF8F0800E0031800BD27
+ELF-MIPSEL-NEXT: - Name: .rel.text
+ELF-MIPSEL-NEXT: Type: SHT_REL
+ELF-MIPSEL-NEXT: Link: .symtab
+ELF-MIPSEL-NEXT: Info: .text
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004
+ELF-MIPSEL-NEXT: Relocations:
+ELF-MIPSEL-NEXT: - Offset: 0
+ELF-MIPSEL-NEXT: Symbol: _gp_disp
+ELF-MIPSEL-NEXT: Type: R_MIPS_HI16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Offset: 0x0000000000000004
+ELF-MIPSEL-NEXT: Symbol: _gp_disp
+ELF-MIPSEL-NEXT: Type: R_MIPS_LO16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Offset: 0x0000000000000018
+ELF-MIPSEL-NEXT: Symbol: '$.str'
+ELF-MIPSEL-NEXT: Type: R_MIPS_GOT16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Offset: 0x000000000000001C
+ELF-MIPSEL-NEXT: Symbol: '$.str'
+ELF-MIPSEL-NEXT: Type: R_MIPS_LO16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Offset: 0x0000000000000020
+ELF-MIPSEL-NEXT: Symbol: puts
+ELF-MIPSEL-NEXT: Type: R_MIPS_CALL16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Offset: 0x000000000000002C
+ELF-MIPSEL-NEXT: Symbol: SomeOtherFunction
+ELF-MIPSEL-NEXT: Type: R_MIPS_CALL16
+ELF-MIPSEL-NEXT: Addend: 0
+ELF-MIPSEL-NEXT: - Name: .data
+ELF-MIPSEL-NEXT: Type: SHT_PROGBITS
+ELF-MIPSEL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004
+ELF-MIPSEL-NEXT: Content: ''
+ELF-MIPSEL-NEXT: - Name: .bss
+ELF-MIPSEL-NEXT: Type: SHT_NOBITS
+ELF-MIPSEL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004
+ELF-MIPSEL-NEXT: Content: ''
+ELF-MIPSEL-NEXT: - Name: .rodata.str1.1
+ELF-MIPSEL-NEXT: Type: SHT_PROGBITS
+ELF-MIPSEL-NEXT: Flags: [ SHF_ALLOC, SHF_MERGE, SHF_STRINGS ]
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000001
+ELF-MIPSEL-NEXT: Content: 48656C6C6F20576F726C640A00
+ELF-MIPSEL-NEXT: - Name: .reginfo
+ELF-MIPSEL-NEXT: Type: SHT_MIPS_REGINFO
+ELF-MIPSEL-NEXT: Flags: [ SHF_ALLOC ]
+ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000001
+ELF-MIPSEL-NEXT: Content: '000000000000000000000000000000000000000000000000'
+ELF-MIPSEL-NEXT: Symbols:
+ELF-MIPSEL-NEXT: Local:
+ELF-MIPSEL-NEXT: - Name: trivial.ll
+ELF-MIPSEL-NEXT: Type: STT_FILE
+ELF-MIPSEL-NEXT: - Name: '$.str'
+ELF-MIPSEL-NEXT: Type: STT_OBJECT
+ELF-MIPSEL-NEXT: Section: .rodata.str1.1
+ELF-MIPSEL-NEXT: Size: 0x000000000000000D
+ELF-MIPSEL-NEXT: - Name: .text
+ELF-MIPSEL-NEXT: Type: STT_SECTION
+ELF-MIPSEL-NEXT: Section: .text
+ELF-MIPSEL-NEXT: - Name: .data
+ELF-MIPSEL-NEXT: Type: STT_SECTION
+ELF-MIPSEL-NEXT: Section: .data
+ELF-MIPSEL-NEXT: - Name: .bss
+ELF-MIPSEL-NEXT: Type: STT_SECTION
+ELF-MIPSEL-NEXT: Section: .bss
+ELF-MIPSEL-NEXT: - Name: .rodata.str1.1
+ELF-MIPSEL-NEXT: Type: STT_SECTION
+ELF-MIPSEL-NEXT: Section: .rodata.str1.1
+ELF-MIPSEL-NEXT: - Name: .reginfo
+ELF-MIPSEL-NEXT: Type: STT_SECTION
+ELF-MIPSEL-NEXT: Section: .reginfo
+ELF-MIPSEL-NEXT: Global:
+ELF-MIPSEL-NEXT: - Name: main
+ELF-MIPSEL-NEXT: Type: STT_FUNC
+ELF-MIPSEL-NEXT: Section: .text
+ELF-MIPSEL-NEXT: Size: 0x000000000000004C
+ELF-MIPSEL-NEXT: - Name: SomeOtherFunction
+ELF-MIPSEL-NEXT: - Name: _gp_disp
+ELF-MIPSEL-NEXT: - Name: puts
+
+ELF-MIPS64EL: FileHeader:
+ELF-MIPS64EL-NEXT: Class: ELFCLASS64
+ELF-MIPS64EL-NEXT: Data: ELFDATA2LSB
+ELF-MIPS64EL-NEXT: Type: ET_REL
+ELF-MIPS64EL-NEXT: Machine: EM_MIPS
+ELF-MIPS64EL-NEXT: Flags: [ EF_MIPS_ARCH_3 ]
+ELF-MIPS64EL-NEXT: Sections:
+ELF-MIPS64EL-NEXT: - Name: .text
+ELF-MIPS64EL-NEXT: Type: SHT_PROGBITS
+ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010
+ELF-MIPS64EL-NEXT: Content: ''
+ELF-MIPS64EL-NEXT: - Name: .data
+ELF-MIPS64EL-NEXT: Type: SHT_PROGBITS
+ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010
+ELF-MIPS64EL-NEXT: Content: '00000000000000000000000000000000'
+ELF-MIPS64EL-NEXT: - Name: .rela.data
+ELF-MIPS64EL-NEXT: Type: SHT_RELA
+ELF-MIPS64EL-NEXT: Link: .symtab
+ELF-MIPS64EL-NEXT: Info: .data
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000008
+ELF-MIPS64EL-NEXT: Relocations:
+ELF-MIPS64EL-NEXT: - Offset: 0
+ELF-MIPS64EL-NEXT: Symbol: zed
+ELF-MIPS64EL-NEXT: Type: R_MIPS_64
+ELF-MIPS64EL-NEXT: Addend: 0
+ELF-MIPS64EL-NEXT: - Name: .bss
+ELF-MIPS64EL-NEXT: Type: SHT_NOBITS
+ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ]
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010
+ELF-MIPS64EL-NEXT: Content: ''
+ELF-MIPS64EL-NEXT: - Name: .MIPS.options
+ELF-MIPS64EL-NEXT: Type: SHT_MIPS_OPTIONS
+ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC ]
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000008
+ELF-MIPS64EL-NEXT: Content: '01280000000000000000000000000000000000000000000000000000000000000000000000000000'
+ELF-MIPS64EL-NEXT: - Name: .pdr
+ELF-MIPS64EL-NEXT: Type: SHT_PROGBITS
+ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000004
+ELF-MIPS64EL-NEXT: Content: ''
+ELF-MIPS64EL-NEXT: Symbols:
+ELF-MIPS64EL-NEXT: Local:
+ELF-MIPS64EL-NEXT: - Name: .text
+ELF-MIPS64EL-NEXT: Type: STT_SECTION
+ELF-MIPS64EL-NEXT: Section: .text
+ELF-MIPS64EL-NEXT: - Name: .data
+ELF-MIPS64EL-NEXT: Type: STT_SECTION
+ELF-MIPS64EL-NEXT: Section: .data
+ELF-MIPS64EL-NEXT: - Name: .bss
+ELF-MIPS64EL-NEXT: Type: STT_SECTION
+ELF-MIPS64EL-NEXT: Section: .bss
+ELF-MIPS64EL-NEXT: - Name: bar
+ELF-MIPS64EL-NEXT: Section: .data
+ELF-MIPS64EL-NEXT: - Name: .MIPS.options
+ELF-MIPS64EL-NEXT: Type: STT_SECTION
+ELF-MIPS64EL-NEXT: Section: .MIPS.options
+ELF-MIPS64EL-NEXT: - Name: .pdr
+ELF-MIPS64EL-NEXT: Type: STT_SECTION
+ELF-MIPS64EL-NEXT: Section: .pdr
+ELF-MIPS64EL-NEXT: Global:
+ELF-MIPS64EL-NEXT: - Name: zed
+
+ELF-X86-64: FileHeader:
+ELF-X86-64-NEXT: Class: ELFCLASS64
+ELF-X86-64-NEXT: Data: ELFDATA2LSB
+ELF-X86-64-NEXT: OSABI: ELFOSABI_GNU
+ELF-X86-64-NEXT: Type: ET_REL
+ELF-X86-64-NEXT: Machine: EM_X86_64
+ELF-X86-64-NEXT: Sections:
+ELF-X86-64-NEXT: - Name: .text
+ELF-X86-64-NEXT: Type: SHT_PROGBITS
+ELF-X86-64-NEXT: Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ELF-X86-64-NEXT: AddressAlign: 0x0000000000000010
+ELF-X86-64-NEXT: Content: 4883EC08C744240400000000BF00000000E80000000030C0E8000000008B4424044883C408C3
+ELF-X86-64-NEXT: - Name: .rodata.str1.1
+ELF-X86-64-NEXT: Type: SHT_PROGBITS
+ELF-X86-64-NEXT: Flags: [ SHF_ALLOC, SHF_MERGE, SHF_STRINGS ]
+ELF-X86-64-NEXT: Address: 0x0000000000000026
+ELF-X86-64-NEXT: AddressAlign: 0x0000000000000001
+ELF-X86-64-NEXT: Content: 48656C6C6F20576F726C642100
+ELF-X86-64-NEXT: - Name: .note.GNU-stack
+ELF-X86-64-NEXT: Type: SHT_PROGBITS
+ELF-X86-64-NEXT: Address: 0x0000000000000033
+ELF-X86-64-NEXT: AddressAlign: 0x0000000000000001
+ELF-X86-64-NEXT: Content: ''
+ELF-X86-64-NEXT: - Name: .rela.text
+ELF-X86-64-NEXT: Type: SHT_RELA
+ELF-X86-64-NEXT: Address: 0x0000000000000038
+ELF-X86-64-NEXT: Link: .symtab
+ELF-X86-64-NEXT: Info: .text
+ELF-X86-64-NEXT: AddressAlign: 0x0000000000000008
+ELF-X86-64-NEXT: Relocations:
+ELF-X86-64-NEXT: - Offset: 0x000000000000000D
+ELF-X86-64-NEXT: Symbol: .rodata.str1.1
+ELF-X86-64-NEXT: Type: R_X86_64_32S
+ELF-X86-64-NEXT: Addend: 0
+ELF-X86-64-NEXT: - Offset: 0x0000000000000012
+ELF-X86-64-NEXT: Symbol: puts
+ELF-X86-64-NEXT: Type: R_X86_64_PC32
+ELF-X86-64-NEXT: Addend: -4
+ELF-X86-64-NEXT: - Offset: 0x0000000000000019
+ELF-X86-64-NEXT: Symbol: SomeOtherFunction
+ELF-X86-64-NEXT: Type: R_X86_64_PC32
+ELF-X86-64-NEXT: Addend: -4
+ELF-X86-64-NEXT: Symbols:
+ELF-X86-64-NEXT: Local:
+ELF-X86-64-NEXT: - Name: trivial-object-test.s
+ELF-X86-64-NEXT: Type: STT_FILE
+ELF-X86-64-NEXT: - Name: .text
+ELF-X86-64-NEXT: Type: STT_SECTION
+ELF-X86-64-NEXT: Section: .text
+ELF-X86-64-NEXT: - Name: .rodata.str1.1
+ELF-X86-64-NEXT: Type: STT_SECTION
+ELF-X86-64-NEXT: Section: .rodata.str1.1
+ELF-X86-64-NEXT: - Name: .note.GNU-stack
+ELF-X86-64-NEXT: Type: STT_SECTION
+ELF-X86-64-NEXT: Section: .note.GNU-stack
+ELF-X86-64-NEXT: Global:
+ELF-X86-64-NEXT: - Name: main
+ELF-X86-64-NEXT: Type: STT_FUNC
+ELF-X86-64-NEXT: Section: .text
+ELF-X86-64-NEXT: Size: 0x0000000000000026
+ELF-X86-64-NEXT: - Name: SomeOtherFunction
+ELF-X86-64-NEXT: - Name: puts
diff --git a/test/Object/size-trivial-macho.test b/test/Object/size-trivial-macho.test
new file mode 100644
index 0000000..6ecdf5c
--- /dev/null
+++ b/test/Object/size-trivial-macho.test
@@ -0,0 +1,15 @@
+RUN: llvm-size -A %p/Inputs/macho-text-data-bss.macho-x86_64 \
+RUN: | FileCheck %s -check-prefix A
+RUN: llvm-size -B %p/Inputs/macho-text-data-bss.macho-x86_64 \
+RUN: | FileCheck %s -check-prefix B
+
+A: section size addr
+A: __text 12 0
+A: __data 4 12
+A: __bss 4 112
+A: __compact_unwind 32 16
+A: __eh_frame 64 48
+A: Total 116
+
+B: text data bss dec hex filename
+B: 12 100 4 116 74
diff --git a/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml b/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
index 19cc91e..7d09807 100644
--- a/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
+++ b/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
@@ -5,12 +5,13 @@ FileHeader:
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_MIPS
- Flags: [ EF_MIPS_NOREORDER, EF_MIPS_ABI_O32 ]
+ Flags: [ EF_MIPS_NOREORDER, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2 ]
# CHECK: Format: ELF32-mips
# CHECK: Arch: mipsel
# CHECK: Machine: EM_MIPS
-# CHECK: Flags [ (0x1001)
-# CHECK-NEXT: 0x1
-# CHECK-NEXT: 0x1000
+# CHECK: Flags [ (0x70001001)
+# CHECK-NEXT: EF_MIPS_ABI_O32 (0x1000)
+# CHECK-NEXT: EF_MIPS_ARCH_32R2 (0x70000000)
+# CHECK-NEXT: EF_MIPS_NOREORDER (0x1)
# CHECK-NEXT: ]
diff --git a/test/Object/yaml2obj-elf-rel.yaml b/test/Object/yaml2obj-elf-rel.yaml
new file mode 100644
index 0000000..6a7ed45
--- /dev/null
+++ b/test/Object/yaml2obj-elf-rel.yaml
@@ -0,0 +1,118 @@
+# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s
+
+!ELF
+FileHeader: !FileHeader
+ Class: ELFCLASS32
+ Data: ELFDATA2MSB
+ Type: ET_REL
+ Machine: EM_MIPS
+
+Sections:
+- Name: .text
+ Type: SHT_PROGBITS
+ Content: "0000000000000000"
+ AddressAlign: 16
+ Flags: [SHF_ALLOC]
+
+- Name: .rel.text
+ Type: SHT_REL
+ Info: .text
+ AddressAlign: 4
+ Relocations:
+ - Offset: 0x1
+ Symbol: glob1
+ Type: R_MIPS_32
+ - Offset: 0x1
+ Symbol: glob2
+ Type: R_MIPS_CALL16
+ - Offset: 0x2
+ Symbol: loc1
+ Type: R_MIPS_LO16
+
+- Name: .rela.text
+ Type: SHT_RELA
+ Link: .symtab
+ Info: .text
+ AddressAlign: 4
+ Relocations:
+ - Offset: 0x1
+ Addend: 1
+ Symbol: glob1
+ Type: R_MIPS_32
+ - Offset: 0x1
+ Addend: 2
+ Symbol: glob2
+ Type: R_MIPS_CALL16
+ - Offset: 0x2
+ Addend: 3
+ Symbol: loc1
+ Type: R_MIPS_LO16
+
+Symbols:
+ Local:
+ - Name: loc1
+ - Name: loc2
+ Global:
+ - Name: glob1
+ Section: .text
+ Value: 0x0
+ Size: 4
+ - Name: glob2
+ Weak:
+ - Name: weak1
+
+# CHECK: Section {
+# CHECK-NEXT: Index: 0
+# CHECK: }
+# CHECK: Section {
+# CHECK-NEXT: Index: 1
+# CHECK-NEXT: Name: .text (16)
+# CHECK: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Index: 2
+# CHECK-NEXT: Name: .rel.text (1)
+# CHECK-NEXT: Type: SHT_REL (0x9)
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x160
+# CHECK-NEXT: Size: 24
+# CHECK-NEXT: Link: 4
+# CHECK-NEXT: Info: 1
+# CHECK-NEXT: AddressAlignment: 4
+# CHECK-NEXT: EntrySize: 8
+# CHECK-NEXT: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Index: 3
+# CHECK-NEXT: Name: .rela.text (11)
+# CHECK-NEXT: Type: SHT_RELA (0x4)
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset: 0x180
+# CHECK-NEXT: Size: 36
+# CHECK-NEXT: Link: 4
+# CHECK-NEXT: Info: 1
+# CHECK-NEXT: AddressAlignment: 4
+# CHECK-NEXT: EntrySize: 12
+# CHECK-NEXT: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Index: 4
+# CHECK-NEXT: Name: .symtab (40)
+# CHECK: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Index: 5
+# CHECK-NEXT: Name: .strtab (32)
+# CHECK: }
+# CHECK: Relocations [
+# CHECK-NEXT: Section (2) .rel.text {
+# CHECK-NEXT: 0x1 R_MIPS_32 glob1 0x0
+# CHECK-NEXT: 0x1 R_MIPS_CALL16 glob2 0x0
+# CHECK-NEXT: 0x2 R_MIPS_LO16 loc1 0x0
+# CHECK-NEXT: }
+# CHECK-NEXT: Section (3) .rela.text {
+# CHECK-NEXT: 0x1 R_MIPS_32 glob1 0x1
+# CHECK-NEXT: 0x1 R_MIPS_CALL16 glob2 0x2
+# CHECK-NEXT: 0x2 R_MIPS_LO16 loc1 0x3
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
diff --git a/test/Object/yaml2obj-elf-section-basic.yaml b/test/Object/yaml2obj-elf-section-basic.yaml
index c1f6935..56a3fd6 100644
--- a/test/Object/yaml2obj-elf-section-basic.yaml
+++ b/test/Object/yaml2obj-elf-section-basic.yaml
@@ -1,4 +1,7 @@
# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -section-data - | FileCheck %s
+# RUN: yaml2obj -format=elf -o %t %s
+# RUN: llvm-readobj -sections -section-data %t | FileCheck %s
+
!ELF
FileHeader:
Class: ELFCLASS64
@@ -14,6 +17,14 @@ Sections:
Content: EBFE
AddressAlign: 2
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ Address: 0xCAFECAFE
+ Content: FEBF
+ Size: 8
+ AddressAlign: 2
+
# CHECK: Section {
# CHECK: Index: 0
# CHECK: Type: SHT_NULL (0x0)
@@ -35,14 +46,31 @@ Sections:
# CHECK-NEXT: )
#
# CHECK: Section {
-# CHECK: Name: .symtab (7)
+# CHECK: Name: .data
+# CHECK-NEXT: Type: SHT_PROGBITS (0x1)
+# CHECK-NEXT: Flags [ (0x2)
+# CHECK-NEXT: SHF_ALLOC (0x2)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0xCAFECAFE
+# CHECK-NEXT: Offset: 0x1D0
+# CHECK-NEXT: Size: 8
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 2
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: FEBF0000 00000000 |........|
+# CHECK-NEXT: )
+#
+# CHECK: Section {
+# CHECK: Name: .symtab (25)
# CHECK: Type: SHT_SYMTAB (0x2)
# CHECK: }
# CHECK: Section {
-# CHECK: Name: .strtab (15)
+# CHECK: Name: .strtab (17)
# CHECK: Type: SHT_STRTAB (0x3)
# CHECK: }
# CHECK: Section {
-# CHECK: Name: .shstrtab (23)
+# CHECK: Name: .shstrtab (7)
# CHECK: Type: SHT_STRTAB (0x3)
# CHECK: }
diff --git a/test/Object/yaml2obj-elf-section-invalid-size.yaml b/test/Object/yaml2obj-elf-section-invalid-size.yaml
new file mode 100644
index 0000000..d0cb370
--- /dev/null
+++ b/test/Object/yaml2obj-elf-section-invalid-size.yaml
@@ -0,0 +1,26 @@
+# RUN: not yaml2obj -format=elf -o %t %s 2>&1 | FileCheck %s
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Content: EBFE
+ AddressAlign: 2
+
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ Content: 0000000000000000
+ Size: 2
+
+# CHECK: YAML:17:5: error: Section size must be greater or equal to the content size
+# CHECK-NEXT: - Name: .data
+# CHECK-NEXT: ^
+# CHECK-NEXT: yaml2obj: Failed to parse YAML file!
diff --git a/test/Object/yaml2obj-readobj.test b/test/Object/yaml2obj-readobj.test
index 3031f5e..3bd0c6b 100644
--- a/test/Object/yaml2obj-readobj.test
+++ b/test/Object/yaml2obj-readobj.test
@@ -1,4 +1,7 @@
RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-readobj -file-headers -relocations -expand-relocs - | FileCheck %s --check-prefix COFF-I386
+RUN: yaml2obj -o %t %p/Inputs/COFF/i386.yaml
+RUN: llvm-readobj -file-headers -relocations -expand-relocs %t \
+RUN: | FileCheck %s --check-prefix COFF-I386
// COFF-I386: Characteristics [ (0x200)
// COFF-I386-NEXT: IMAGE_FILE_DEBUG_STRIPPED (0x200)