diff options
Diffstat (limited to 'test/Object')
69 files changed, 586 insertions, 84 deletions
diff --git a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml index c27e888a47c08..e3017a24a97d4 100644 --- a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml +++ b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: obj2yaml %t | FileCheck %s # CHECK: - Name: .rela.text @@ -14,6 +14,7 @@ # CHECK-NEXT: Symbol: main # CHECK-NEXT: Type: R_AARCH64_TLSGD_ADR_PREL21 +!ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB diff --git a/test/Object/AMDGPU/elf-definitios.yaml b/test/Object/AMDGPU/elf-definitios.yaml index 5f5e200b49b33..819786aa19026 100644 --- a/test/Object/AMDGPU/elf-definitios.yaml +++ b/test/Object/AMDGPU/elf-definitios.yaml @@ -1,6 +1,8 @@ -# RUN: yaml2obj -format=elf %s > %t.o +# RUN: yaml2obj %s > %t.o # RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s +# CHECK: Format: ELF64-amdgpu-hsacobj +# CHECK: Arch: amdgcn # CHECK: Machine: EM_AMDGPU (0xE0) # CHECK: Sections [ # CHECK: Section { @@ -12,12 +14,13 @@ # CHECK: SHF_AMDGPU_HSA_READONLY (0x200000) # CHECK: } ---- +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_AMDGPU + OSABI: ELFOSABI_AMDGPU_HSA Sections: - Name: .shf_amdgpu diff --git a/test/Object/AMDGPU/elf32-unknown.yaml b/test/Object/AMDGPU/elf32-unknown.yaml new file mode 100644 index 0000000000000..c4305950607e5 --- /dev/null +++ b/test/Object/AMDGPU/elf32-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF32-amdgpu + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU diff --git a/test/Object/AMDGPU/elf64-relocs.yaml b/test/Object/AMDGPU/elf64-relocs.yaml new file mode 100644 index 0000000000000..896fcdbefa091 --- /dev/null +++ b/test/Object/AMDGPU/elf64-relocs.yaml @@ -0,0 +1,66 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-readobj -r %t | FileCheck %s + +# CHECK: Relocations [ +# CHECK: Section (2) .rela.text { +# CHECK: 0x0 R_AMDGPU_NONE main 0x0 +# CHECK: 0x8 R_AMDGPU_ABS32_LO - 0x0 +# CHECK: 0x10 R_AMDGPU_ABS32_HI - 0x0 +# CHECK: 0x18 R_AMDGPU_ABS64 - 0x0 +# CHECK: 0x20 R_AMDGPU_REL32 - 0x0 +# CHECK: 0x28 R_AMDGPU_REL64 - 0x0 +# CHECK: 0x30 R_AMDGPU_ABS32 - 0x0 +# CHECK: } +# CHECK: ] + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU +Sections: + - Type: SHT_PROGBITS + Name: .text + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x08 + Content: 0000000000000000 + - Type: SHT_RELA + Name: .rela.text + Link: .symtab + Info: .text + AddressAlign: 0x08 + Relocations: + - Offset: 0x0 + Symbol: main + Type: R_AMDGPU_NONE + - Offset: 0x8 + Symbol: a + Type: R_AMDGPU_ABS32_LO + - Offset: 0x10 + Symbol: b + Type: R_AMDGPU_ABS32_HI + - Offset: 0x18 + Symbol: c + Type: R_AMDGPU_ABS64 + - Offset: 0x20 + Symbol: d + Type: R_AMDGPU_REL32 + - Offset: 0x28 + Symbol: e + Type: R_AMDGPU_REL64 + - Offset: 0x30 + Symbol: f + Type: R_AMDGPU_ABS32 + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 diff --git a/test/Object/AMDGPU/elf64-unknown.yaml b/test/Object/AMDGPU/elf64-unknown.yaml new file mode 100644 index 0000000000000..600eb7442d5aa --- /dev/null +++ b/test/Object/AMDGPU/elf64-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF64-amdgpu + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU diff --git a/test/Object/AMDGPU/lit.local.cfg b/test/Object/AMDGPU/lit.local.cfg new file mode 100644 index 0000000000000..2a665f06be72e --- /dev/null +++ b/test/Object/AMDGPU/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/test/Object/AMDGPU/objdump.s b/test/Object/AMDGPU/objdump.s new file mode 100644 index 0000000000000..ca02a7ac20592 --- /dev/null +++ b/test/Object/AMDGPU/objdump.s @@ -0,0 +1,75 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga %s -filetype=obj | llvm-objdump -disassemble -arch-name=amdgcn -mcpu=tonga - | FileCheck %s + + .text + + .amdgpu_hsa_kernel hello_world +hello_world: + .amd_kernel_code_t + .end_amd_kernel_code_t + + s_mov_b32 m0, 0x10000 + s_load_dwordx2 s[0:1], s[4:5], 0x8 + s_waitcnt lgkmcnt(0) + s_add_u32 s0, s7, s0 + v_add_i32_e32 v1, vcc, s0, v1 + s_movk_i32 s0, 0x483 + v_cmp_ge_i32_e32 vcc, s0, v0 + s_and_saveexec_b64 s[0:1], vcc + v_lshlrev_b32_e32 v4, 2, v0 + s_cbranch_execz 21 + s_mov_b64 s[2:3], exec + s_mov_b64 s[10:11], exec + v_mov_b32_e32 v3, v0 + s_endpgm + + .amdgpu_hsa_kernel hello_world2 +hello_world2: + .amd_kernel_code_t + .end_amd_kernel_code_t + + s_and_saveexec_b64 s[0:1], vcc + s_cbranch_execz 85 + s_load_dwordx4 s[8:11], s[4:5], 0x40 + v_ashrrev_i32_e32 v77, 31, v76 + v_lshlrev_b64 v[10:11], 2, v[76:77] + s_waitcnt lgkmcnt(0) + v_add_i32_e32 v10, vcc, s8, v10 + v_mov_b32_e32 v6, s9 + v_addc_u32_e32 v11, vcc, v6, v11, vcc + flat_load_dword v0, v[10:11] + v_lshlrev_b32_e32 v6, 5, v8 + v_lshlrev_b32_e32 v7, 2, v7 + s_endpgm + +// CHECK: file format ELF64-amdgpu-hsacobj +// CHECK: Disassembly of section .text: +// CHECK: hello_world: +// CHECK: s_mov_b32 m0, 0x10000 // 000000000100: BEFC00FF 00010000 +// CHECK: s_load_dwordx2 s[0:1], s[4:5], 0x8 // 000000000108: C0060002 00000008 +// CHECK: s_waitcnt lgkmcnt(0) // 000000000110: BF8C007F +// CHECK: s_add_u32 s0, s7, s0 // 000000000114: 80000007 +// CHECK: v_add_i32_e32 v1, vcc, s0, v1 // 000000000118: 32020200 +// CHECK: s_movk_i32 s0, 0x483 // 00000000011C: B0000483 +// CHECK: v_cmp_ge_i32_e32 vcc, s0, v0 // 000000000120: 7D8C0000 +// CHECK: s_and_saveexec_b64 s[0:1], vcc // 000000000124: BE80206A +// CHECK: v_lshlrev_b32_e32 v4, 2, v0 // 000000000128: 24080082 +// CHECK: s_cbranch_execz 21 // 00000000012C: BF880015 +// CHECK: s_mov_b64 s[2:3], exec // 000000000130: BE82017E +// CHECK: s_mov_b64 s[10:11], exec // 000000000134: BE8A017E +// CHECK: v_mov_b32_e32 v3, v0 // 000000000138: 7E060300 +// CHECK: s_endpgm // 00000000013C: BF810000 + +// CHECK: hello_world2: +// CHECK: s_and_saveexec_b64 s[0:1], vcc // 000000000240: BE80206A +// CHECK: s_cbranch_execz 85 // 000000000244: BF880055 +// CHECK: s_load_dwordx4 s[8:11], s[4:5], 0x40 // 000000000248: C00A0202 00000040 +// CHECK: v_ashrrev_i32_e32 v77, 31, v76 // 000000000250: 229A989F +// CHECK: v_lshlrev_b64 v[10:11], 2, v[76:77] // 000000000254: D28F000A 00029882 +// CHECK: s_waitcnt lgkmcnt(0) // 00000000025C: BF8C007F +// CHECK: v_add_i32_e32 v10, vcc, s8, v10 // 000000000260: 32141408 +// CHECK: v_mov_b32_e32 v6, s9 // 000000000264: 7E0C0209 +// CHECK: v_addc_u32_e32 v11, vcc, v6, v11, vcc // 000000000268: 38161706 +// CHECK: flat_load_dword v0, v[10:11] // 00000000026C: DC500000 0000000A +// CHECK: v_lshlrev_b32_e32 v6, 5, v8 // 000000000274: 240C1085 +// CHECK: v_lshlrev_b32_e32 v7, 2, v7 // 000000000278: 240E0E82 +// CHECK: s_endpgm // 00000000027C: BF810000 diff --git a/test/Object/Inputs/COFF/i386.yaml b/test/Object/Inputs/COFF/i386.yaml index 7873df0a7e25d..ad1a4f100fa3a 100644 --- a/test/Object/Inputs/COFF/i386.yaml +++ b/test/Object/Inputs/COFF/i386.yaml @@ -1,3 +1,4 @@ +!COFF header: !Header Machine: IMAGE_FILE_MACHINE_I386 # (0x14c) Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ] diff --git a/test/Object/Inputs/COFF/long-file-symbol.yaml b/test/Object/Inputs/COFF/long-file-symbol.yaml index 37caad7962089..4a37a433e4362 100644 --- a/test/Object/Inputs/COFF/long-file-symbol.yaml +++ b/test/Object/Inputs/COFF/long-file-symbol.yaml @@ -1,4 +1,4 @@ ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_AMD64 Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED ] diff --git a/test/Object/Inputs/COFF/long-section-name.yaml b/test/Object/Inputs/COFF/long-section-name.yaml index a86f9019cd5c2..120418583170f 100644 --- a/test/Object/Inputs/COFF/long-section-name.yaml +++ b/test/Object/Inputs/COFF/long-section-name.yaml @@ -1,4 +1,4 @@ ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_LOCAL_SYMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ] diff --git a/test/Object/Inputs/COFF/section-aux-symbol.yaml b/test/Object/Inputs/COFF/section-aux-symbol.yaml index 623af5589595b..67fba68afd47c 100644 --- a/test/Object/Inputs/COFF/section-aux-symbol.yaml +++ b/test/Object/Inputs/COFF/section-aux-symbol.yaml @@ -1,4 +1,4 @@ ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE, IMAGE_FILE_DEBUG_STRIPPED ] diff --git a/test/Object/Inputs/COFF/weak-external.yaml b/test/Object/Inputs/COFF/weak-external.yaml index 064b44a4a38ff..3963bcdc557cb 100644 --- a/test/Object/Inputs/COFF/weak-external.yaml +++ b/test/Object/Inputs/COFF/weak-external.yaml @@ -1,4 +1,4 @@ ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ] diff --git a/test/Object/Inputs/COFF/weak-externals.yaml b/test/Object/Inputs/COFF/weak-externals.yaml new file mode 100644 index 0000000000000..d0ec3137c7165 --- /dev/null +++ b/test/Object/Inputs/COFF/weak-externals.yaml @@ -0,0 +1,26 @@ +--- !COFF +header: + Machine: IMAGE_FILE_MACHINE_ARMNT + Characteristics: [ ] +sections: + - Name: .rdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] + Alignment: 1 + SectionData: '' +symbols: + - Name: Function + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_WEAK_EXTERNAL + WeakExternal: + TagIndex: 9 + Characteristics: IMAGE_WEAK_EXTERN_SEARCH_LIBRARY + - Name: .weak.Function.default + Value: 0 + SectionNumber: -1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_EXTERNAL +... diff --git a/test/Object/Inputs/COFF/x86-64.yaml b/test/Object/Inputs/COFF/x86-64.yaml index b8a863a429cde..2fd5a4d19ffd5 100644 --- a/test/Object/Inputs/COFF/x86-64.yaml +++ b/test/Object/Inputs/COFF/x86-64.yaml @@ -1,3 +1,4 @@ +!COFF header: !Header Machine: IMAGE_FILE_MACHINE_AMD64 # (0x8664) diff --git a/test/Object/Inputs/dyn-rel.so.elf-mips b/test/Object/Inputs/dyn-rel.so.elf-mips Binary files differnew file mode 100755 index 0000000000000..08fe70eae3031 --- /dev/null +++ b/test/Object/Inputs/dyn-rel.so.elf-mips diff --git a/test/Object/Inputs/invalid-sh_entsize.elf b/test/Object/Inputs/invalid-sh_entsize.elf Binary files differindex 9ea80731491c1..ed501311b29bf 100755 --- a/test/Object/Inputs/invalid-sh_entsize.elf +++ b/test/Object/Inputs/invalid-sh_entsize.elf diff --git a/test/Object/Inputs/macho-invalid-fat b/test/Object/Inputs/macho-invalid-fat Binary files differnew file mode 100644 index 0000000000000..1fa01903c531c --- /dev/null +++ b/test/Object/Inputs/macho-invalid-fat diff --git a/test/Object/Inputs/macho-invalid-fat.obj.elf-x86_64 b/test/Object/Inputs/macho-invalid-fat.obj.elf-x86_64 Binary files differnew file mode 100644 index 0000000000000..4fa5afb9087f7 --- /dev/null +++ b/test/Object/Inputs/macho-invalid-fat.obj.elf-x86_64 diff --git a/test/Object/Inputs/macho-invalid-too-small-segment-load-command.1 b/test/Object/Inputs/macho-invalid-too-small-segment-load-command.1 Binary files differnew file mode 100644 index 0000000000000..24e570665e7bd --- /dev/null +++ b/test/Object/Inputs/macho-invalid-too-small-segment-load-command.1 diff --git a/test/Object/Inputs/macho-universal-archive-bad1.x86_64.i386 b/test/Object/Inputs/macho-universal-archive-bad1.x86_64.i386 Binary files differnew file mode 100644 index 0000000000000..30ab297b09013 --- /dev/null +++ b/test/Object/Inputs/macho-universal-archive-bad1.x86_64.i386 diff --git a/test/Object/Inputs/macho-universal-archive-bad2.x86_64.i386 b/test/Object/Inputs/macho-universal-archive-bad2.x86_64.i386 Binary files differnew file mode 100644 index 0000000000000..763dbbc01caf8 --- /dev/null +++ b/test/Object/Inputs/macho-universal-archive-bad2.x86_64.i386 diff --git a/test/Object/Inputs/macho-universal-bad1.x86_64.i386 b/test/Object/Inputs/macho-universal-bad1.x86_64.i386 Binary files differnew file mode 100644 index 0000000000000..7fe21dc324a68 --- /dev/null +++ b/test/Object/Inputs/macho-universal-bad1.x86_64.i386 diff --git a/test/Object/Inputs/macho-universal-bad2.x86_64.i386 b/test/Object/Inputs/macho-universal-bad2.x86_64.i386 Binary files differnew file mode 100644 index 0000000000000..ec83c38fe60b8 --- /dev/null +++ b/test/Object/Inputs/macho-universal-bad2.x86_64.i386 diff --git a/test/Object/Inputs/macho-universal64-archive.x86_64.i386 b/test/Object/Inputs/macho-universal64-archive.x86_64.i386 Binary files differnew file mode 100644 index 0000000000000..1597357910c0f --- /dev/null +++ b/test/Object/Inputs/macho-universal64-archive.x86_64.i386 diff --git a/test/Object/Inputs/macho-universal64.x86_64.i386 b/test/Object/Inputs/macho-universal64.x86_64.i386 Binary files differnew file mode 100755 index 0000000000000..add12e44a354d --- /dev/null +++ b/test/Object/Inputs/macho-universal64.x86_64.i386 diff --git a/test/Object/Inputs/macho-valid-0-nsyms b/test/Object/Inputs/macho-valid-0-nsyms Binary files differnew file mode 100644 index 0000000000000..1a170ff8161ef --- /dev/null +++ b/test/Object/Inputs/macho-valid-0-nsyms diff --git a/test/Object/Inputs/macho64-invalid-incomplete-load-command.1 b/test/Object/Inputs/macho64-invalid-incomplete-load-command.1 Binary files differnew file mode 100644 index 0000000000000..f7b0789d4d0e3 --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-incomplete-load-command.1 diff --git a/test/Object/Inputs/macho64-invalid-too-small-load-command.1 b/test/Object/Inputs/macho64-invalid-too-small-load-command.1 Binary files differnew file mode 100644 index 0000000000000..cb8886ed3f7e1 --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-too-small-load-command.1 diff --git a/test/Object/Lanai/lit.local.cfg b/test/Object/Lanai/lit.local.cfg new file mode 100644 index 0000000000000..f1b8b4f4e21f9 --- /dev/null +++ b/test/Object/Lanai/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'Lanai' in config.root.targets: + config.unsupported = True diff --git a/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml b/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml new file mode 100644 index 0000000000000..df81a5b8bde04 --- /dev/null +++ b/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml @@ -0,0 +1,67 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-readobj -r %t | FileCheck %s + +# CHECK: Relocations [ +# CHECK-NEXT: Section (2) .rel.text { +# CHECK-NEXT: 0x0 R_LANAI_32 main 0x0 +# CHECK-NEXT: 0x4 R_LANAI_NONE - 0x0 +# CHECK-NEXT: 0x8 R_LANAI_21 - 0x0 +# CHECK-NEXT: 0xC R_LANAI_21_F - 0x0 +# CHECK-NEXT: 0x10 R_LANAI_25 - 0x0 +# CHECK-NEXT: 0x14 R_LANAI_HI16 - 0x0 +# CHECK-NEXT: 0x18 R_LANAI_LO16 - 0x0 +# CHECK-NEXT: } +# CHECK-NEXT: ] + +!ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_LANAI +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: 0x0 + Symbol: main + Type: R_LANAI_32 + - Offset: 0x4 + Symbol: a + Type: R_LANAI_NONE + - Offset: 0x8 + Symbol: b + Type: R_LANAI_21 + - Offset: 0xC + Symbol: c + Type: R_LANAI_21_F + - Offset: 0x10 + Symbol: d + Type: R_LANAI_25 + - Offset: 0x14 + Symbol: e + Type: R_LANAI_HI16 + - Offset: 0x18 + Symbol: f + Type: R_LANAI_LO16 + + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 diff --git a/test/Object/Mips/abi-flags.yaml b/test/Object/Mips/abi-flags.yaml index 8a11fc4124c3b..0d9fb369423af 100644 --- a/test/Object/Mips/abi-flags.yaml +++ b/test/Object/Mips/abi-flags.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: llvm-readobj -mips-abi-flags %t | FileCheck -check-prefix=OBJ %s # RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s @@ -34,6 +34,7 @@ # YAML-NEXT: CPR1Size: REG_64 # YAML-NEXT: Flags1: [ ODDSPREG ] +!ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2MSB diff --git a/test/Object/Mips/elf-abi.yaml b/test/Object/Mips/elf-abi.yaml index 5f11b14da5966..3a7b05e01cd3c 100644 --- a/test/Object/Mips/elf-abi.yaml +++ b/test/Object/Mips/elf-abi.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf -docnum=1 %s > %t.o32 +# RUN: yaml2obj -docnum=1 %s > %t.o32 # RUN: llvm-readobj -file-headers %t.o32 | FileCheck -check-prefix=O32OBJ %s # RUN: obj2yaml %t.o32 | FileCheck -check-prefix=O32YAML %s @@ -10,7 +10,7 @@ # O32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ] -# RUN: yaml2obj -format=elf -docnum=2 %s > %t.o64 +# RUN: yaml2obj -docnum=2 %s > %t.o64 # RUN: llvm-readobj -file-headers %t.o64 | FileCheck -check-prefix=O64OBJ %s # RUN: obj2yaml %t.o64 | FileCheck -check-prefix=O64YAML %s @@ -22,7 +22,7 @@ # O64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O64, EF_MIPS_ARCH_64 ] -# RUN: yaml2obj -format=elf -docnum=3 %s > %t.eabi32 +# RUN: yaml2obj -docnum=3 %s > %t.eabi32 # RUN: llvm-readobj -file-headers %t.eabi32 | FileCheck -check-prefix=E32OBJ %s # RUN: obj2yaml %t.eabi32 | FileCheck -check-prefix=E32YAML %s @@ -34,7 +34,7 @@ # E32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI32, EF_MIPS_ARCH_32 ] -# RUN: yaml2obj -format=elf -docnum=4 %s > %t.eabi64 +# RUN: yaml2obj -docnum=4 %s > %t.eabi64 # RUN: llvm-readobj -file-headers %t.eabi64 | FileCheck -check-prefix=E64OBJ %s # RUN: obj2yaml %t.eabi64 | FileCheck -check-prefix=E64YAML %s @@ -47,7 +47,7 @@ # E64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI64, EF_MIPS_ARCH_64 ] # o32 ---- +--- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB @@ -69,7 +69,7 @@ Symbols: Size: 4 # o64 ---- +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB @@ -91,7 +91,7 @@ Symbols: Size: 4 # eabio32 ---- +--- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB @@ -113,7 +113,7 @@ Symbols: Size: 4 # eabi64 ---- +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB diff --git a/test/Object/Mips/elf-flags.yaml b/test/Object/Mips/elf-flags.yaml index f79be9d4e078d..dceabc05c8b1d 100644 --- a/test/Object/Mips/elf-flags.yaml +++ b/test/Object/Mips/elf-flags.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: llvm-readobj -file-headers %t | FileCheck -check-prefix=OBJ %s # RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s @@ -25,7 +25,7 @@ # YAML-NEXT: Machine: EM_MIPS # YAML-NEXT: Flags: [ EF_MIPS_NOREORDER, EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI2, EF_MIPS_32BITMODE, EF_MIPS_FP64, EF_MIPS_NAN2008, EF_MIPS_MICROMIPS, EF_MIPS_ARCH_ASE_M16, EF_MIPS_ARCH_ASE_MDMX, EF_MIPS_ABI_O32, EF_MIPS_MACH_OCTEON, EF_MIPS_ARCH_32R6 ] ---- +--- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB diff --git a/test/Object/Mips/elf-mips64-rel.yaml b/test/Object/Mips/elf-mips64-rel.yaml index 7c41b78e6adc9..3e56555347539 100644 --- a/test/Object/Mips/elf-mips64-rel.yaml +++ b/test/Object/Mips/elf-mips64-rel.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: llvm-readobj -r %t | FileCheck -check-prefix=OBJ %s # RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s @@ -41,7 +41,7 @@ # YAML-NEXT: Type2: R_MIPS_LO16 # YAML-NEXT: SpecSym: RSS_GP0 ---- +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB diff --git a/test/Object/Mips/feature.test b/test/Object/Mips/feature.test index 340301450a50d..eea33b9325ba1 100644 --- a/test/Object/Mips/feature.test +++ b/test/Object/Mips/feature.test @@ -1,5 +1,4 @@ -RUN: llvm-objdump -disassemble -triple mips64el -mattr +mips64r2 %p/../Inputs/dext-test.elf-mips64r2 \ -RUN: | FileCheck %s +RUN: llvm-objdump -disassemble %p/../Inputs/dext-test.elf-mips64r2 | FileCheck %s CHECK: Disassembly of section .text: CHECK: dext: diff --git a/test/Object/Mips/objdump-micro-mips.test b/test/Object/Mips/objdump-micro-mips.test index 0f28dc1a5f1c6..6ce1cdc1c19b6 100644 --- a/test/Object/Mips/objdump-micro-mips.test +++ b/test/Object/Mips/objdump-micro-mips.test @@ -1,5 +1,4 @@ -RUN: llvm-objdump -d -mattr=micromips %p/../Inputs/micro-mips.elf-mipsel \ -RUN: | FileCheck %s +RUN: llvm-objdump -d %p/../Inputs/micro-mips.elf-mipsel | FileCheck %s CHECK: foo: CHECK-NEXT: 330: bd 33 f8 ff addiu $sp, $sp, -8 diff --git a/test/Object/X86/nm-bitcodeweak.test b/test/Object/X86/nm-bitcodeweak.test new file mode 100644 index 0000000000000..3333068bb36df --- /dev/null +++ b/test/Object/X86/nm-bitcodeweak.test @@ -0,0 +1,10 @@ +; RUN: llvm-as %s -o=%t1 +; RUN: llvm-nm %t1 | FileCheck %s + +; CHECK: W __libc_blah + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-freebsd11.0" + +module asm ".weak __libc_blah" +module asm ".equ __libc_blah, blah" diff --git a/test/Object/X86/nm-ir.ll b/test/Object/X86/nm-ir.ll index d517b09d3e92c..1742a8f938e27 100644 --- a/test/Object/X86/nm-ir.ll +++ b/test/Object/X86/nm-ir.ll @@ -6,6 +6,7 @@ ; CHECK-NEXT: t f2 ; CHECK-NEXT: W f3 ; CHECK-NEXT: U f4 +; CHECK-NEXT: w f5 ; CHECK-NEXT: D g1 ; CHECK-NEXT: d g2 ; CHECK-NEXT: C g3 @@ -31,6 +32,7 @@ module asm ".long undef_asm_sym" @a2 = internal alias i32, i32* @g1 define void @f1() { + call void @f5() ret void } @@ -43,3 +45,5 @@ define linkonce_odr void @f3() { } declare void @f4() + +declare extern_weak void @f5() diff --git a/test/Object/X86/yaml2obj-elf-x86-rel.yaml b/test/Object/X86/yaml2obj-elf-x86-rel.yaml index 5ca6614d23806..0cb26fca995b0 100644 --- a/test/Object/X86/yaml2obj-elf-x86-rel.yaml +++ b/test/Object/X86/yaml2obj-elf-x86-rel.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: llvm-readobj -r %t | FileCheck %s # CHECK: Relocations [ @@ -7,6 +7,7 @@ # CHECK-NEXT: } # CHECK-NEXT: ] +!ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB diff --git a/test/Object/archive-format.test b/test/Object/archive-format.test index 651a9b9ef1571..70458d51be115 100644 --- a/test/Object/archive-format.test +++ b/test/Object/archive-format.test @@ -62,3 +62,6 @@ THIN-PATH-NEXT: /0 0 0 0 644 4 ` THIN-PATH-NEXT: /20 0 0 0 644 4 ` THIN-PATH-NEXT: /41 0 0 0 644 4 ` THIN-PATH-NEXT: /65 0 0 0 644 4 ` + +RUN: not llvm-ar --format=bsd rcT bad.a 0123456789abcde 0123456789abcdef 2>&1 | FileCheck --check-prefix=BSD-THIN %s +BSD-THIN: Only the gnu format has a thin mode. diff --git a/test/Object/archive-symtab.test b/test/Object/archive-symtab.test index 6bad783a8c82c..0fcf9adf916c4 100644 --- a/test/Object/archive-symtab.test +++ b/test/Object/archive-symtab.test @@ -99,6 +99,12 @@ MACHO-NEXT: 0000000000000000 t _bar MACHO-NEXT: 0000000000000001 T _foo MACHO-NEXT: 0000000000000002 T _main +RUN: llvm-nm -M %p/Inputs/macho-toc64-archive-x86_64.a | FileCheck --check-prefix=MACHO-TOC64 %s + +MACHO-TOC64: Archive map +MACHO-TOC64-NEXT: _test in test.o +MACHO-TOC64-NEXT: _test in xtest.o + RUN: rm -f %t.a RUN: llvm-ar --format=gnu rcsU %t.a %p/Inputs/coff-short-import-code %p/Inputs/coff-short-import-data RUN: llvm-nm -M %t.a | FileCheck --check-prefix=COFF-SHORT-IMPORT %s diff --git a/test/Object/archive-thin-read.test b/test/Object/archive-thin-read.test new file mode 100644 index 0000000000000..830696056d640 --- /dev/null +++ b/test/Object/archive-thin-read.test @@ -0,0 +1,6 @@ +RUN: echo hello > %t.file +RUN: rm -f %t.a +RUN: llvm-ar --format=gnu rcsT %t.a %t.file +RUN: llvm-ar p %t.a | FileCheck %s + +CHECK: hello diff --git a/test/Object/coff-weak-externals.test b/test/Object/coff-weak-externals.test new file mode 100644 index 0000000000000..62005ad46b9bb --- /dev/null +++ b/test/Object/coff-weak-externals.test @@ -0,0 +1,5 @@ +RUN: yaml2obj %p/Inputs/COFF/weak-externals.yaml | llvm-objdump -t - | FileCheck %s + +CHECK: [ 0](sec 0)(fl 0x00)(ty 0)(scl 69) (nx 1) 0x00000000 Function +CHECK: AUX indx 9 srch 2 + diff --git a/test/Object/corrupt.test b/test/Object/corrupt.test index 0d9aad378f880..3ce7dc7f5e99f 100644 --- a/test/Object/corrupt.test +++ b/test/Object/corrupt.test @@ -49,13 +49,13 @@ RUN: not llvm-readobj -dyn-relocations \ RUN: %p/Inputs/corrupt-invalid-relocation-size.elf.x86-64 2>&1 | \ RUN: FileCheck --check-prefix=RELOC %s -RELOC: Invalid relocation entry size +RELOC: Invalid entity size RUN: not llvm-readobj -dyn-relocations \ RUN: %p/Inputs/corrupt-invalid-dynamic-table-size.elf.x86-64 2>&1 | \ RUN: FileCheck --check-prefix=DYN-TABLE-SIZE %s -DYN-TABLE-SIZE: Invalid dynamic table size +DYN-TABLE-SIZE: Invalid entity size RUN: not llvm-readobj -dyn-relocations \ diff --git a/test/Object/dyn-rel-relocation.test b/test/Object/dyn-rel-relocation.test new file mode 100644 index 0000000000000..4b528a7ef917c --- /dev/null +++ b/test/Object/dyn-rel-relocation.test @@ -0,0 +1,71 @@ +// Check that 'llvm-readobj -dyn-relocations' shows dynamic relocations +// if they have REL record format. + +// dyn-rel.so.elf-mips +// % cat test.s +// .globl __start +// __start: +// nop +// +// .data +// .type v1,@object +// .size v1,4 +// v1: +// .word 0 +// +// .globl v2 +// .type v2,@object +// .size v2,8 +// v2: +// .word v2+4 # R_MIPS_32 target v2 addend 4 +// .word v1 # R_MIPS_32 target v1 addend 0 +// +// % llvm-mc -filetype=obj -triple=mips-unknown-linux -o test.o test.s +// % ld -m elf32btsmip -shared -o dyn-rel.so.elf-mips test.o + +RUN: llvm-readobj -relocations -dyn-relocations -expand-relocs \ +RUN: %p/Inputs/dyn-rel.so.elf-mips | FileCheck %s + +// CHECK: Relocations [ +// CHECK-NEXT: Section (6) .rel.dyn { +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x0 +// CHECK-NEXT: Type: R_MIPS_NONE (0) +// CHECK-NEXT: Symbol: - (0) +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x102F8 +// CHECK-NEXT: Type: R_MIPS_REL32 (3) +// CHECK-NEXT: Symbol: - (0) +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x102F4 +// CHECK-NEXT: Type: R_MIPS_REL32 (3) +// CHECK-NEXT: Symbol: v2 (9) +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: ] + +// CHECK: Dynamic Relocations { +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x0 +// CHECK-NEXT: Type: R_MIPS_NONE (0) +// CHECK-NEXT: Symbol: - +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x102F8 +// CHECK-NEXT: Type: R_MIPS_REL32 (3) +// CHECK-NEXT: Symbol: - +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: Relocation { +// CHECK-NEXT: Offset: 0x102F4 +// CHECK-NEXT: Type: R_MIPS_REL32 (3) +// CHECK-NEXT: Symbol: v2 +// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: } +// CHECK-NEXT: } diff --git a/test/Object/dynamic-reloc.test b/test/Object/dynamic-reloc.test new file mode 100644 index 0000000000000..6a9a5cee44d5b --- /dev/null +++ b/test/Object/dynamic-reloc.test @@ -0,0 +1,12 @@ +RUN: llvm-readobj -r %p/Inputs/dynamic-reloc.so | FileCheck --check-prefix=READOBJ %s + +READOBJ: Relocations [ +READOBJ-NEXT: Section (4) .rela.dyn { +READOBJ-NEXT: 0x1328 R_X86_64_RELATIVE - 0x1320 +READOBJ-NEXT: } +READOBJ-NEXT: ] + +RUN: llvm-objdump -r %p/Inputs/dynamic-reloc.so | FileCheck --check-prefix=OBJDUMP %s + +OBJDUMP: file format ELF64-x86-64 +OBJDUMP-NOT: RELOCATION diff --git a/test/Object/elf-unknown-type.test b/test/Object/elf-unknown-type.test index 9993c096376cd..1ef4f58085de9 100644 --- a/test/Object/elf-unknown-type.test +++ b/test/Object/elf-unknown-type.test @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s !ELF FileHeader: !FileHeader diff --git a/test/Object/invalid.test b/test/Object/invalid.test index cc5cd68304c6a..a32c621cca61c 100644 --- a/test/Object/invalid.test +++ b/test/Object/invalid.test @@ -35,9 +35,11 @@ SECTION-NEXT: AddressAlignment: SECTION-NEXT: EntrySize: 32 RUN: not llvm-readobj -t %p/Inputs/invalid-sh_entsize.elf 2>&1 | FileCheck --check-prefix=INVALID-SYM-SIZE %s -RUN: not llvm-readobj --dyn-symbols %p/Inputs/invalid-sh_entsize.elf 2>&1 | FileCheck --check-prefix=INVALID-SYM-SIZE %s INVALID-SYM-SIZE: Invalid symbol size +RUN: not llvm-readobj --dyn-symbols %p/Inputs/invalid-sh_entsize.elf 2>&1 | FileCheck --check-prefix=INVALID-DYNSYM-SIZE %s +INVALID-DYNSYM-SIZE: Invalid entity size + RUN: not llvm-readobj -t %p/Inputs/invalid-section-index.elf 2>&1 | FileCheck --check-prefix=INVALID-SECTION-INDEX %s INVALID-SECTION-INDEX: Invalid section index diff --git a/test/Object/macho-invalid.test b/test/Object/macho-invalid.test index f4aa1e0c2984b..9c4e37c65a6f0 100644 --- a/test/Object/macho-invalid.test +++ b/test/Object/macho-invalid.test @@ -1,42 +1,105 @@ -// No crash, might not be totally invalid -RUN: llvm-objdump -private-headers %p/Inputs/macho-invalid-zero-ncmds +// An odd Mach-O file, with just a mach header with all but the magic field +// and filetype zeros. The cputype and cpusubtype fields being zero are invalid, +// but that does not mater for the most part to display some of the contents. +RUN: llvm-objdump -private-headers %p/Inputs/macho-invalid-zero-ncmds -macho \ +RUN: | FileCheck -check-prefix ZERO-NCMDS %s +ZERO-NCMDS: MH_MAGIC_64 0 0 0x00 OBJECT 0 0 0x00000000 -RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-incomplete-load-command 2>&1 \ +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho64-invalid-incomplete-load-command 2>&1 \ RUN: | FileCheck -check-prefix INCOMPLETE-LOADC %s -INCOMPLETE-LOADC: Invalid data was encountered while parsing the file. +INCOMPLETE-LOADC: truncated or malformed object (load command 0 extends past the end all load commands in the file) -RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-too-small-load-command 2>&1 \ +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho64-invalid-incomplete-load-command.1 2>&1 \ +RUN: | FileCheck -check-prefix INCOMPLETE-LOADC-1 %s +INCOMPLETE-LOADC-1: truncated or malformed object (load command 1 extends past the end all load commands in the file) + +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho-invalid-too-small-load-command 2>&1 \ RUN: | FileCheck -check-prefix SMALL-LOADC-SIZE %s -RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-too-small-load-command 2>&1 \ +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho64-invalid-too-small-load-command 2>&1 \ RUN: | FileCheck -check-prefix SMALL-LOADC-SIZE %s -SMALL-LOADC-SIZE: Mach-O load command with size < 8 bytes +SMALL-LOADC-SIZE: truncated or malformed object (load commands extend past the end of the file) + +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho64-invalid-too-small-load-command.1 2>&1 \ +RUN: | FileCheck -check-prefix SMALL-LOADC-SIZE-1 %s +SMALL-LOADC-SIZE-1: truncated or malformed object (load command 1 with size less than 8 bytes) RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-too-small-segment-load-command 2>&1 \ +RUN: | FileCheck -check-prefix MULTIPLE-NOT-4 %s +MULTIPLE-NOT-4: truncated or malformed object (load command 0 cmdsize not a multiple of 4) + +RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-too-small-segment-load-command.1 2>&1 \ RUN: | FileCheck -check-prefix SMALL-SEGLOADC-SIZE %s +SMALL-SEGLOADC-SIZE: truncated or malformed object (load command 0 LC_SEGMENT cmdsize too small) + RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-too-small-segment-load-command 2>&1 \ -RUN: | FileCheck -check-prefix SMALL-SEGLOADC-SIZE %s -SMALL-SEGLOADC-SIZE: Mach-O segment load command size is too small +RUN: | FileCheck -check-prefix MULTIPLE-NOT-8 %s +MULTIPLE-NOT-8: truncated or malformed object (load command 0 cmdsize not a multiple of 8) RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-no-size-for-sections 2>&1 \ RUN: | FileCheck -check-prefix TOO-MANY-SECTS %s +TOO-MANY-SECTS: truncated or malformed object (load command 0 inconsistent cmdsize in LC_SEGMENT for the number of sections) RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-no-size-for-sections 2>&1 \ -RUN: | FileCheck -check-prefix TOO-MANY-SECTS %s -TOO-MANY-SECTS: Mach-O segment load command contains too many sections +RUN: | FileCheck -check-prefix TOO-MANY-SECTS-64 %s +TOO-MANY-SECTS-64: truncated or malformed object (load command 0 inconsistent cmdsize in LC_SEGMENT_64 for the number of sections) -RUN: not llvm-objdump -t %p/Inputs/macho-invalid-bad-symbol-index 2>&1 \ +RUN: not llvm-objdump -macho -t %p/Inputs/macho-invalid-bad-symbol-index 2>&1 \ RUN: | FileCheck -check-prefix BAD-SYMBOL %s -BAD-SYMBOL: Requested symbol index is out of range +BAD-SYMBOL: truncated or malformed object (ilocalsym plus nlocalsym in LC_DYSYMTAB load command extends past the end of the symbol table) +RUN: llvm-objdump -macho -t %p/Inputs/macho-valid-0-nsyms 2>&1 \ +RUN: | FileCheck -check-prefix ZERO-NSYMS %s +ZERO-NSYMS: SYMBOL TABLE RUN: not llvm-objdump -t %p/Inputs/macho-invalid-symbol-name-past-eof 2>&1 \ RUN: | FileCheck -check-prefix NAME-PAST-EOF %s -NAME-PAST-EOF: Symbol name entry points before beginning or past end of file +NAME-PAST-EOF: truncated or malformed object (bad string index: 4261412866 for symbol at index 0) +RUN: llvm-nm -pa %p/Inputs/macho-invalid-symbol-name-past-eof 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF-nm-pa %s +NAME-PAST-EOF-nm-pa: 0000000000000000 - 00 0000 SO bad string index +RUN: llvm-nm -pax %p/Inputs/macho-invalid-symbol-name-past-eof 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF-nm-pax %s +NAME-PAST-EOF-nm-pax: 0000000000000000 64 00 0000 fe000002 bad string index + +RUN: not llvm-objdump -t %p/Inputs/macho-bad-archive1.a 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF-ARCHIVE %s +NAME-PAST-EOF-ARCHIVE: macho-bad-archive1.a(macho-invalid-symbol-name-past-eof) truncated or malformed object (bad string index: 4261412866 for symbol at index 0) -RUN: not llvm-nm %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ +RUN: not llvm-objdump -macho -arch all -t %p/Inputs/macho-universal-bad1.x86_64.i386 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF-FAT %s +NAME-PAST-EOF-FAT: macho-universal-bad1.x86_64.i386 (for architecture x86_64) truncated or malformed object (bad string index: 4261412866 for symbol at index 0) +RUN: not llvm-objdump -macho -arch all -t %p/Inputs/macho-universal-archive-bad1.x86_64.i386 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF-FAT-ARCHIVE %s +NAME-PAST-EOF-FAT-ARCHIVE: macho-universal-archive-bad1.x86_64.i386(macho-invalid-symbol-name-past-eof) (for architecture x86_64) truncated or malformed object (bad string index: 4261412866 for symbol at index 0) + +RUN: llvm-nm %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ RUN: | FileCheck -check-prefix INVALID-SECTION-IDX-SYMBOL-SEC %s -INVALID-SECTION-IDX-SYMBOL-SEC: getSymbolSection: Invalid section index +INVALID-SECTION-IDX-SYMBOL-SEC: 0000000100000000 S __mh_execute_header +RUN: llvm-nm -m %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ +RUN: | FileCheck -check-prefix INVALID-SECTION-IDX-SYMBOL-SEC-m %s +INVALID-SECTION-IDX-SYMBOL-SEC-m: 0000000100000000 (?,?) [referenced dynamically] external __mh_execute_header +RUN: llvm-nm -pax %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ +RUN: | FileCheck -check-prefix INVALID-SECTION-IDX-SYMBOL-SEC-pax %s +INVALID-SECTION-IDX-SYMBOL-SEC-pax: 0000000100000000 0f 42 0010 00000065 __mh_execute_header +RUN: not llvm-objdump -t %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ +RUN: | FileCheck -check-prefix INVALID-SECTION-IDX-SYMBOL-SEC-objdump %s +INVALID-SECTION-IDX-SYMBOL-SEC-objdump: truncated or malformed object (bad section index: 66 for symbol at index 8) + +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho-invalid-header 2>&1 | FileCheck -check-prefix INVALID-HEADER %s +INVALID-HEADER: The file was not recognized as a valid object file + +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho64-invalid-incomplete-segment-load-command 2>&1 | FileCheck -check-prefix INCOMPLETE-SEGMENT-LOADC %s +INCOMPLETE-SEGMENT-LOADC: truncated or malformed object (load commands extend past the end of the file) + +RUN: not llvm-objdump -macho -private-headers %p/Inputs/macho-bad-archive2.a 2>&1 | FileCheck -check-prefix INCOMPLETE-SEGMENT-LOADC-ARCHIVE %s +INCOMPLETE-SEGMENT-LOADC-ARCHIVE: macho-bad-archive2.a(macho64-invalid-incomplete-segment-load-command) truncated or malformed object (load commands extend past the end of the file) + +RUN: not llvm-objdump -macho -private-headers -arch all %p/Inputs/macho-universal-bad2.x86_64.i386 2>&1 | FileCheck -check-prefix INCOMPLETE-SEGMENT-LOADC-FAT %s +INCOMPLETE-SEGMENT-LOADC-FAT: macho-universal-bad2.x86_64.i386 (for architecture x86_64) truncated or malformed object (load commands extend past the end of the file) + +RUN: not llvm-objdump -macho -private-headers -arch all %p/Inputs/macho-universal-archive-bad2.x86_64.i386 2>&1 | FileCheck -check-prefix INCOMPLETE-SEGMENT-LOADC-FAT-ARCHIVE %s +INCOMPLETE-SEGMENT-LOADC-FAT-ARCHIVE: macho-universal-archive-bad2.x86_64.i386(macho64-invalid-incomplete-segment-load-command) (for architecture x86_64) truncated or malformed object (load commands extend past the end of the file) -RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-header 2>&1 | FileCheck -check-prefix INVALID-HEADER %s -INVALID-HEADER: Invalid data was encountered while parsing the file +RUN: not llvm-objdump -macho -universal-headers %p/Inputs/macho-invalid-fat 2>&1 | FileCheck -check-prefix INVALID-FAT %s +INVALID-FAT: truncated or malformed fat file (fat_arch_64 structs would extend past the end of the file) -RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-incomplete-segment-load-command 2>&1 | FileCheck -check-prefix INCOMPLETE-SEGMENT-LOADC %s -INCOMPLETE-SEGMENT-LOADC: Invalid data was encountered while parsing the file +RUN: not llvm-objdump -macho -private-headers -arch all %p/Inputs/macho-invalid-fat.obj.elf-x86_64 2>&1 | FileCheck -check-prefix INVALID-FAT-ELF %s +INVALID-FAT-ELF: Mach-O universal file: {{.*}}/macho-invalid-fat.obj.elf-x86_64 for architecture x86_64 is not a Mach-O file or an archive file diff --git a/test/Object/nm-archive.test b/test/Object/nm-archive.test index 8f8cdbe9f08cf..1a13c23f2450e 100644 --- a/test/Object/nm-archive.test +++ b/test/Object/nm-archive.test @@ -55,9 +55,10 @@ RUN: llvm-nm %p/Inputs/archive-test.a-empty This archive has an unaligned member and a unknown format member. GNU AR is able to parse the unaligned member and warns about the member with -the unknown format. We should probably simply warn on both. For now just check -that we don't produce an error. -RUN: llvm-nm %p/Inputs/corrupt-archive.a +the unknown format. We should probably simply warn on both. For now we just +produce an error for the unknown format. +RUN: not llvm-nm %p/Inputs/corrupt-archive.a 2>&1 | FileCheck %s -check-prefix CORRUPT +CORRUPT: corrupt-archive.a(trivial-object-test2.elf-x86-64) Invalid data was encountered while parsing the file RUN: llvm-nm %p/Inputs/thin.a | FileCheck %s -check-prefix THIN diff --git a/test/Object/nm-universal-binary.test b/test/Object/nm-universal-binary.test index 0cced1829c3f6..1fce0eea6452b 100644 --- a/test/Object/nm-universal-binary.test +++ b/test/Object/nm-universal-binary.test @@ -1,5 +1,7 @@ RUN: llvm-nm -arch all %p/Inputs/macho-universal.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ +RUN: llvm-nm -arch all %p/Inputs/macho-universal64.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-64-OBJ RUN: llvm-nm -arch x86_64 %p/Inputs/macho-universal.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ-x86_64 RUN: not llvm-nm -arch armv7m %p/Inputs/macho-universal.x86_64.i386 2>&1 \ @@ -8,6 +10,8 @@ RUN: not llvm-nm -arch foobar %p/Inputs/macho-universal.x86_64.i386 2>&1 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ-foobar RUN: llvm-nm -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-AR +RUN: llvm-nm -arch all %p/Inputs/macho-universal64-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-64-AR RUN: llvm-nm -arch i386 %p/Inputs/macho-universal-archive.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-AR-i386 RUN: llvm-nm -o -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ @@ -18,6 +22,11 @@ CHECK-OBJ: 0000000100000f60 T _main CHECK-OBJ: macho-universal.x86_64.i386 (for architecture i386): CHECK-OBJ: 00001fa0 T _main +CHECK-64-OBJ: macho-universal64.x86_64.i386 (for architecture x86_64): +CHECK-64-OBJ: 0000000100000f60 T _main +CHECK-64-OBJ: macho-universal64.x86_64.i386 (for architecture i386): +CHECK-64-OBJ: 00001fa0 T _main + CHECK-OBJ-x86_64: 0000000100000000 T __mh_execute_header CHECK-OBJ-x86_64: 0000000100000f60 T _main CHECK-OBJ-x86_64: U dyld_stub_binder @@ -38,6 +47,16 @@ CHECK-AR: macho-universal-archive.x86_64.i386(foo.o) (for architecture i386): CHECK-AR: 00000008 D _bar CHECK-AR: 00000000 T _foo +CHECK-64-AR: macho-universal64-archive.x86_64.i386(foo.o) (for architecture i386): +CHECK-64-AR: 00000008 D _bar +CHECK-64-AR: 00000000 T _foo +CHECK-64-AR: macho-universal64-archive.x86_64.i386(hello.o) (for architecture x86_64): +CHECK-64-AR: 0000000000000068 s EH_frame0 +CHECK-64-AR: 000000000000003b s L_.str +CHECK-64-AR: 0000000000000000 T _main +CHECK-64-AR: 0000000000000080 S _main.eh +CHECK-64-AR: U _printf + CHECK-AR-i386: macho-universal-archive.x86_64.i386(foo.o): CHECK-AR-i386: 00000008 D _bar CHECK-AR-i386: 00000000 T _foo diff --git a/test/Object/no-section-table.test b/test/Object/no-section-table.test index 77fb98a4d406d..bd60e681b71f3 100644 --- a/test/Object/no-section-table.test +++ b/test/Object/no-section-table.test @@ -25,7 +25,7 @@ CHECK: 0x0000000000000009 RELAENT 24 (bytes) CHECK: 0x000000006FFFFFFE VERNEED 0x3A8 CHECK: 0x000000006FFFFFFF VERNEEDNUM 1 CHECK: 0x000000006FFFFFF0 VERSYM 0x38C -CHECK: 0x000000006FFFFFF9 unknown 0x3 +CHECK: 0x000000006FFFFFF9 RELACOUNT 3 CHECK: 0x0000000000000000 NULL 0x0 CHECK: ] CHECK: HashTable { diff --git a/test/Object/obj2yaml-sectiongroup.test b/test/Object/obj2yaml-sectiongroup.test index 66e8e3875be20..2387c75494f80 100644 --- a/test/Object/obj2yaml-sectiongroup.test +++ b/test/Object/obj2yaml-sectiongroup.test @@ -1,7 +1,7 @@ # Checks that the tool is able to read section groups with ELF. RUN: obj2yaml %p/Inputs/sectionGroup.elf.x86-64 > %t1.sectiongroup.yaml RUN: FileCheck %s --check-prefix ELF-GROUP < %t1.sectiongroup.yaml -RUN: yaml2obj -format=elf %t1.sectiongroup.yaml -o %t2.o.elf +RUN: yaml2obj %t1.sectiongroup.yaml -o %t2.o.elf RUN: llvm-readobj -sections %t2.o.elf | FileCheck %s -check-prefix=SECTIONS #ELF-GROUP: - Name: .group #ELF-GROUP: Type: SHT_GROUP diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index 60d46a83a52e2..171488da78fbc 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -327,7 +327,7 @@ ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ] ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010 ELF-MIPS64EL-NEXT: - Name: .MIPS.options ELF-MIPS64EL-NEXT: Type: SHT_MIPS_OPTIONS -ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC ] +ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC, SHF_MIPS_NOSTRIP ] ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000008 ELF-MIPS64EL-NEXT: Content: '01280000000000000000000000000000000000000000000000000000000000000000000000000000' ELF-MIPS64EL-NEXT: - Name: .pdr diff --git a/test/Object/relocation-executable.test b/test/Object/relocation-executable.test index 93d4dee3089ba..bb0bb157b6a1d 100644 --- a/test/Object/relocation-executable.test +++ b/test/Object/relocation-executable.test @@ -34,6 +34,18 @@ RUN: %p/Inputs/hello-world.elf-x86-64 | FileCheck %s --check-prefix=DYN // DYN-NEXT: Symbol: __gmon_start__ // DYN-NEXT: Addend: 0x0 // DYN-NEXT: } +// DYN-NEXT: Relocation { +// DYN-NEXT: Offset: 0x4018F8 +// DYN-NEXT: Type: R_X86_64_JUMP_SLOT (7) +// DYN-NEXT: Symbol: __libc_start_main +// DYN-NEXT: Addend: 0x0 +// DYN-NEXT: } +// DYN-NEXT: Relocation { +// DYN-NEXT: Offset: 0x401900 +// DYN-NEXT: Type: R_X86_64_JUMP_SLOT (7) +// DYN-NEXT: Symbol: puts +// DYN-NEXT: Addend: 0x0 +// DYN-NEXT: } // DYN-NEXT: } RUN: llvm-readobj -dyn-relocations -expand-relocs \ diff --git a/test/Object/yaml2obj-coff-invalid-alignment.test b/test/Object/yaml2obj-coff-invalid-alignment.test new file mode 100644 index 0000000000000..3e760310f5714 --- /dev/null +++ b/test/Object/yaml2obj-coff-invalid-alignment.test @@ -0,0 +1,14 @@ +# RUN: not yaml2obj %s 2>&1 | FileCheck %s + +# CHECK: Section alignment is too large + +--- !COFF +header: + Machine: IMAGE_FILE_MACHINE_AMD64 + Characteristics: [] +sections: + - Name: '.text' + Characteristics: [] + SectionData: 00 + Alignment: 16384 +symbols: diff --git a/test/Object/yaml2obj-coff-multi-doc.test b/test/Object/yaml2obj-coff-multi-doc.test index 1cf720306bf7b..0335a72bfcf48 100644 --- a/test/Object/yaml2obj-coff-multi-doc.test +++ b/test/Object/yaml2obj-coff-multi-doc.test @@ -1,15 +1,15 @@ -# RUN: yaml2obj -format=coff -docnum=1 %s \ +# RUN: yaml2obj -docnum=1 %s \ # RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s -# RUN: yaml2obj -format=coff -docnum=2 %s \ +# RUN: yaml2obj -docnum=2 %s \ # RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s -# RUN: not yaml2obj -format=coff -docnum=3 %s 2>&1 \ +# RUN: not yaml2obj -docnum=3 %s 2>&1 \ # RUN: | FileCheck -check-prefix=DOC3 %s # DOC1: Name: _sym1 # DOC2: Name: _sym2 # DOC3: yaml2obj: Cannot find the 3rd document ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ] @@ -49,7 +49,7 @@ symbols: ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL ---- +--- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ] diff --git a/test/Object/yaml2obj-elf-alignment.yaml b/test/Object/yaml2obj-elf-alignment.yaml index 8f2f985177f76..341966d9a5bea 100644 --- a/test/Object/yaml2obj-elf-alignment.yaml +++ b/test/Object/yaml2obj-elf-alignment.yaml @@ -1,6 +1,6 @@ # Check that yaml2obj takes in account section AddressAlign field. -# RUN: yaml2obj -format=elf %s > %t +# RUN: yaml2obj %s > %t # RUN: llvm-readobj -s %t | FileCheck %s # CHECK: Section { @@ -20,7 +20,7 @@ # CHECK-NEXT: EntrySize: 0 # CHECK-NEXT: } ---- +--- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB diff --git a/test/Object/yaml2obj-elf-bits-endian.test b/test/Object/yaml2obj-elf-bits-endian.test index 4be9a4465b813..e8bd2f1d8d102 100644 --- a/test/Object/yaml2obj-elf-bits-endian.test +++ b/test/Object/yaml2obj-elf-bits-endian.test @@ -1,7 +1,7 @@ -RUN: yaml2obj -format=elf %p/Inputs/ELF/LE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE64 -RUN: yaml2obj -format=elf %p/Inputs/ELF/BE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE64 -RUN: yaml2obj -format=elf %p/Inputs/ELF/LE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE32 -RUN: yaml2obj -format=elf %p/Inputs/ELF/BE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE32 +RUN: yaml2obj %p/Inputs/ELF/LE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE64 +RUN: yaml2obj %p/Inputs/ELF/BE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE64 +RUN: yaml2obj %p/Inputs/ELF/LE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE32 +RUN: yaml2obj %p/Inputs/ELF/BE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE32 LE64: Class: 64-bit (0x2) LE64-NEXT: DataEncoding: LittleEndian (0x1) 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 dddc7d97f6280..ad032e80d64f4 100644 --- a/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml +++ b/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s !ELF FileHeader: Class: ELFCLASS32 diff --git a/test/Object/yaml2obj-elf-file-headers.yaml b/test/Object/yaml2obj-elf-file-headers.yaml index 285170170a20c..4dfee5f9387d5 100644 --- a/test/Object/yaml2obj-elf-file-headers.yaml +++ b/test/Object/yaml2obj-elf-file-headers.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s !ELF FileHeader: Class: ELFCLASS64 diff --git a/test/Object/yaml2obj-elf-multi-doc.test b/test/Object/yaml2obj-elf-multi-doc.test index c51f803300ec6..b3c8335a36b78 100644 --- a/test/Object/yaml2obj-elf-multi-doc.test +++ b/test/Object/yaml2obj-elf-multi-doc.test @@ -1,8 +1,8 @@ -# RUN: yaml2obj -format=elf -docnum=1 %s \ +# RUN: yaml2obj -docnum=1 %s \ # RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s -# RUN: yaml2obj -format=elf -docnum=2 %s \ +# RUN: yaml2obj -docnum=2 %s \ # RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s -# RUN: not yaml2obj -format=elf -docnum=3 %s 2>&1 \ +# RUN: not yaml2obj -docnum=3 %s 2>&1 \ # RUN: | FileCheck -check-prefix=DOC3 %s # DOC1: Name: T1 (1) diff --git a/test/Object/yaml2obj-elf-rel-noref.yaml b/test/Object/yaml2obj-elf-rel-noref.yaml index 4a13acd1fd382..8eb6b0dca3b69 100644 --- a/test/Object/yaml2obj-elf-rel-noref.yaml +++ b/test/Object/yaml2obj-elf-rel-noref.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -sections -relocations - | FileCheck %s !ELF FileHeader: !FielHeader diff --git a/test/Object/yaml2obj-elf-rel.yaml b/test/Object/yaml2obj-elf-rel.yaml index ba3640cfefad3..f98c8e262a7ad 100644 --- a/test/Object/yaml2obj-elf-rel.yaml +++ b/test/Object/yaml2obj-elf-rel.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -sections -relocations - | FileCheck %s !ELF FileHeader: !FileHeader diff --git a/test/Object/yaml2obj-elf-section-basic.yaml b/test/Object/yaml2obj-elf-section-basic.yaml index 69d3ae91b7179..c2dde8c26ff3f 100644 --- a/test/Object/yaml2obj-elf-section-basic.yaml +++ b/test/Object/yaml2obj-elf-section-basic.yaml @@ -1,5 +1,5 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -section-data - | FileCheck %s -# RUN: yaml2obj -format=elf -o %t %s +# RUN: yaml2obj %s | llvm-readobj -sections -section-data - | FileCheck %s +# RUN: yaml2obj -o %t %s # RUN: llvm-readobj -sections -section-data %t | FileCheck %s !ELF diff --git a/test/Object/yaml2obj-elf-section-invalid-size.yaml b/test/Object/yaml2obj-elf-section-invalid-size.yaml index d0cb370072dd2..b896c9d6afcbb 100644 --- a/test/Object/yaml2obj-elf-section-invalid-size.yaml +++ b/test/Object/yaml2obj-elf-section-invalid-size.yaml @@ -1,4 +1,4 @@ -# RUN: not yaml2obj -format=elf -o %t %s 2>&1 | FileCheck %s +# RUN: not yaml2obj -o %t %s 2>&1 | FileCheck %s !ELF FileHeader: diff --git a/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml b/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml index 3c4e830c0df64..c044d711a34df 100644 --- a/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml +++ b/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -symbols - | FileCheck %s !ELF FileHeader: Class: ELFCLASS64 diff --git a/test/Object/yaml2obj-elf-symbol-basic.yaml b/test/Object/yaml2obj-elf-symbol-basic.yaml index b17c0429bd47b..e1f5ce4e725a1 100644 --- a/test/Object/yaml2obj-elf-symbol-basic.yaml +++ b/test/Object/yaml2obj-elf-symbol-basic.yaml @@ -1,4 +1,4 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | FileCheck %s +# RUN: yaml2obj %s | llvm-readobj -symbols - | FileCheck %s !ELF FileHeader: Class: ELFCLASS64 diff --git a/test/Object/yaml2obj-elf-symbol-visibility.yaml b/test/Object/yaml2obj-elf-symbol-visibility.yaml index 6c4037c831d12..82b3d48f0a3fc 100644 --- a/test/Object/yaml2obj-elf-symbol-visibility.yaml +++ b/test/Object/yaml2obj-elf-symbol-visibility.yaml @@ -1,6 +1,6 @@ -# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | \ +# RUN: yaml2obj %s | llvm-readobj -symbols - | \ # RUN: FileCheck --check-prefix OBJ %s -# RUN: yaml2obj -format=elf %s | obj2yaml - | FileCheck --check-prefix YAML %s +# RUN: yaml2obj %s | obj2yaml - | FileCheck --check-prefix YAML %s # OBJ: Symbol { # OBJ: Name: default1 (36) @@ -26,7 +26,9 @@ # OBJ-NEXT: Size: 4 # OBJ-NEXT: Binding: Global (0x1) # OBJ-NEXT: Type: Object (0x1) -# OBJ-NEXT: Other: 1 +# OBJ-NEXT: Other [ (0x1) +# OBJ-NEXT: STV_INTERNAL +# OBJ-NEXT: ] # OBJ-NEXT: Section: .data (0x1) # OBJ-NEXT: } # OBJ-NEXT: Symbol { @@ -35,7 +37,9 @@ # OBJ-NEXT: Size: 4 # OBJ-NEXT: Binding: Global (0x1) # OBJ-NEXT: Type: Object (0x1) -# OBJ-NEXT: Other: 2 +# OBJ-NEXT: Other [ (0x2) +# OBJ-NEXT: STV_HIDDEN +# OBJ-NEXT: ] # OBJ-NEXT: Section: .data (0x1) # OBJ-NEXT: } # OBJ-NEXT: Symbol { @@ -44,7 +48,11 @@ # OBJ-NEXT: Size: 4 # OBJ-NEXT: Binding: Global (0x1) # OBJ-NEXT: Type: Object (0x1) -# OBJ-NEXT: Other: 163 +# OBJ-NEXT: Other [ (0xA3) +# OBJ-NEXT: STO_MIPS_MICROMIPS +# OBJ-NEXT: STO_MIPS_PIC +# OBJ-NEXT: STV_PROTECTED +# OBJ-NEXT: ] # OBJ-NEXT: Section: .data (0x1) # OBJ-NEXT: } @@ -79,7 +87,7 @@ # YAML-NEXT: Visibility: STV_PROTECTED # YAML-NEXT: Other: [ STO_MIPS_PIC, STO_MIPS_MICROMIPS ] ---- +--- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB |