diff options
author | Stephen Hines <srhines@google.com> | 2014-05-29 02:49:00 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-05-29 02:49:00 -0700 |
commit | dce4a407a24b04eebc6a376f8e62b41aaa7b071f (patch) | |
tree | dcebc53f2b182f145a2e659393bf9a0472cedf23 /test/Object | |
parent | 220b921aed042f9e520c26cffd8282a94c66c3d5 (diff) | |
download | external_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')
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 Binary files differnew file mode 100644 index 0000000..b7628c8 --- /dev/null +++ b/test/Object/Inputs/macho-text-data-bss.macho-x86_64 diff --git a/test/Object/Inputs/macho-universal-archive.x86_64.i386 b/test/Object/Inputs/macho-universal-archive.x86_64.i386 Binary files differnew file mode 100644 index 0000000..1660714 --- /dev/null +++ b/test/Object/Inputs/macho-universal-archive.x86_64.i386 diff --git a/test/Object/Inputs/relocation-dynamic.elf-i386 b/test/Object/Inputs/relocation-dynamic.elf-i386 Binary files differnew file mode 100755 index 0000000..1548f13 --- /dev/null +++ b/test/Object/Inputs/relocation-dynamic.elf-i386 diff --git a/test/Object/Inputs/relocation-relocatable.elf-i386 b/test/Object/Inputs/relocation-relocatable.elf-i386 Binary files differnew file mode 100644 index 0000000..b8f375b --- /dev/null +++ b/test/Object/Inputs/relocation-relocatable.elf-i386 diff --git a/test/Object/Inputs/trivial-object-test.coff-x86-64 b/test/Object/Inputs/trivial-object-test.coff-x86-64 Binary files differindex 0775914..ed144d1 100644 --- a/test/Object/Inputs/trivial-object-test.coff-x86-64 +++ b/test/Object/Inputs/trivial-object-test.coff-x86-64 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) |