diff options
Diffstat (limited to 'test/Object')
37 files changed, 594 insertions, 56 deletions
diff --git a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml index b8fb68113c76..c27e888a47c0 100644 --- a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml +++ b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml @@ -10,11 +10,9 @@ # CHECK-NEXT: - Offset: 0x0000000000000000 # CHECK-NEXT: Symbol: main # CHECK-NEXT: Type: R_AARCH64_ABS64 -# CHECK-NEXT: Addend: 0 # CHECK-NEXT: - Offset: 0x0000000000000008 # CHECK-NEXT: Symbol: main # CHECK-NEXT: Type: R_AARCH64_TLSGD_ADR_PREL21 -# CHECK-NEXT: Addend: 0 FileHeader: Class: ELFCLASS64 diff --git a/test/Object/Inputs/archive-test.a-irix6-mips64el b/test/Object/Inputs/archive-test.a-irix6-mips64el Binary files differnew file mode 100644 index 000000000000..ccc2634be7a2 --- /dev/null +++ b/test/Object/Inputs/archive-test.a-irix6-mips64el diff --git a/test/Object/Inputs/macho-empty-kext-bundle-x86-64 b/test/Object/Inputs/macho-empty-kext-bundle-x86-64 Binary files differnew file mode 100755 index 000000000000..bf75d3041ce0 --- /dev/null +++ b/test/Object/Inputs/macho-empty-kext-bundle-x86-64 diff --git a/test/Object/Inputs/macho-invalid-bad-symbol-index b/test/Object/Inputs/macho-invalid-bad-symbol-index Binary files differnew file mode 100644 index 000000000000..294bbde3ddff --- /dev/null +++ b/test/Object/Inputs/macho-invalid-bad-symbol-index diff --git a/test/Object/Inputs/macho-invalid-no-size-for-sections b/test/Object/Inputs/macho-invalid-no-size-for-sections Binary files differnew file mode 100644 index 000000000000..89fa95acbcf8 --- /dev/null +++ b/test/Object/Inputs/macho-invalid-no-size-for-sections diff --git a/test/Object/Inputs/macho-invalid-section-index-getSectionRawName b/test/Object/Inputs/macho-invalid-section-index-getSectionRawName Binary files differnew file mode 100644 index 000000000000..9cd3e1cace8c --- /dev/null +++ b/test/Object/Inputs/macho-invalid-section-index-getSectionRawName diff --git a/test/Object/Inputs/macho-invalid-symbol-name-past-eof b/test/Object/Inputs/macho-invalid-symbol-name-past-eof Binary files differnew file mode 100644 index 000000000000..874788407879 --- /dev/null +++ b/test/Object/Inputs/macho-invalid-symbol-name-past-eof diff --git a/test/Object/Inputs/macho-invalid-too-small-load-command b/test/Object/Inputs/macho-invalid-too-small-load-command Binary files differnew file mode 100644 index 000000000000..36021692ee55 --- /dev/null +++ b/test/Object/Inputs/macho-invalid-too-small-load-command diff --git a/test/Object/Inputs/macho-invalid-too-small-segment-load-command b/test/Object/Inputs/macho-invalid-too-small-segment-load-command Binary files differnew file mode 100644 index 000000000000..8cbfbf965785 --- /dev/null +++ b/test/Object/Inputs/macho-invalid-too-small-segment-load-command diff --git a/test/Object/Inputs/macho-zero-ncmds b/test/Object/Inputs/macho-invalid-zero-ncmds Binary files differindex 0505419195e9..0505419195e9 100644 --- a/test/Object/Inputs/macho-zero-ncmds +++ b/test/Object/Inputs/macho-invalid-zero-ncmds diff --git a/test/Object/Inputs/macho64-invalid-incomplete-load-command b/test/Object/Inputs/macho64-invalid-incomplete-load-command Binary files differnew file mode 100644 index 000000000000..a569c9e14b3a --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-incomplete-load-command diff --git a/test/Object/Inputs/macho64-invalid-no-size-for-sections b/test/Object/Inputs/macho64-invalid-no-size-for-sections Binary files differnew file mode 100644 index 000000000000..5aae5ffed3ae --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-no-size-for-sections diff --git a/test/Object/Inputs/macho64-invalid-too-small-load-command b/test/Object/Inputs/macho64-invalid-too-small-load-command Binary files differnew file mode 100644 index 000000000000..0028451d1905 --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-too-small-load-command diff --git a/test/Object/Inputs/macho64-invalid-too-small-segment-load-command b/test/Object/Inputs/macho64-invalid-too-small-segment-load-command Binary files differnew file mode 100644 index 000000000000..ce6a20134a99 --- /dev/null +++ b/test/Object/Inputs/macho64-invalid-too-small-segment-load-command diff --git a/test/Object/Inputs/program-headers.mips b/test/Object/Inputs/program-headers.mips Binary files differindex 54ebfea31f0c..e3485b223747 100755 --- a/test/Object/Inputs/program-headers.mips +++ b/test/Object/Inputs/program-headers.mips diff --git a/test/Object/Inputs/sectionGroup.elf.x86-64 b/test/Object/Inputs/sectionGroup.elf.x86-64 Binary files differnew file mode 100644 index 000000000000..b88ad0c596e6 --- /dev/null +++ b/test/Object/Inputs/sectionGroup.elf.x86-64 diff --git a/test/Object/Inputs/trivial.ll b/test/Object/Inputs/trivial.ll index 463442eb90ac..37a6bc20a8c2 100644 --- a/test/Object/Inputs/trivial.ll +++ b/test/Object/Inputs/trivial.ll @@ -2,7 +2,7 @@ define i32 @main() nounwind { entry: - %call = tail call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @.str, i32 0, i32 0)) nounwind + %call = tail call i32 @puts(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0)) nounwind tail call void bitcast (void (...)* @SomeOtherFunction to void ()*)() nounwind ret i32 0 } diff --git a/test/Object/Mips/abi-flags.yaml b/test/Object/Mips/abi-flags.yaml new file mode 100644 index 000000000000..8a11fc4124c3 --- /dev/null +++ b/test/Object/Mips/abi-flags.yaml @@ -0,0 +1,63 @@ +# RUN: yaml2obj -format=elf %s > %t +# RUN: llvm-readobj -mips-abi-flags %t | FileCheck -check-prefix=OBJ %s +# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s + +# OBJ: MIPS ABI Flags { +# OBJ-NEXT: Version: 0 +# OBJ-NEXT: ISA: MIPS64r5 +# OBJ-NEXT: ISA Extension: Cavium Networks Octeon3 (0x13) +# OBJ-NEXT: ASEs [ (0x103) +# OBJ-NEXT: DSP (0x1) +# OBJ-NEXT: DSPR2 (0x2) +# OBJ-NEXT: VZ (0x100) +# OBJ-NEXT: ] +# OBJ-NEXT: FP ABI: Hard float (double precision) (0x1) +# OBJ-NEXT: GPR size: 64 +# OBJ-NEXT: CPR1 size: 64 +# OBJ-NEXT: CPR2 size: 0 +# OBJ-NEXT: Flags 1 [ (0x1) +# OBJ-NEXT: ODDSPREG (0x1) +# OBJ-NEXT: ] +# OBJ-NEXT: Flags 2: 0x0 +# OBJ-NEXT: } + +# YAML: Sections: +# YAML-NEXT: - Name: .MIPS.abiflags +# YAML-NEXT: Type: SHT_MIPS_ABIFLAGS +# YAML-NEXT: AddressAlign: 0x0000000000000008 +# YAML-NEXT: ISA: MIPS64 +# YAML-NEXT: ISARevision: 0x05 +# YAML-NEXT: ISAExtension: EXT_OCTEON3 +# YAML-NEXT: ASEs: [ DSP, DSPR2, VIRT ] +# YAML-NEXT: FpABI: FP_DOUBLE +# YAML-NEXT: GPRSize: REG_64 +# YAML-NEXT: CPR1Size: REG_64 +# YAML-NEXT: Flags1: [ ODDSPREG ] + +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2MSB + Type: ET_REL + Machine: EM_MIPS + +Sections: +- Name: .MIPS.abiflags + Type: SHT_MIPS_ABIFLAGS + AddressAlign: 8 + Version: 0 + ISA: MIPS64 + ISARevision: 5 + ISAExtension: EXT_OCTEON3 + ASEs: [ DSP, DSPR2, VIRT ] + FpABI: FP_DOUBLE + GPRSize: REG_64 + CPR1Size: REG_64 + CPR2Size: REG_NONE + Flags1: [ ODDSPREG ] + Flags2: 0x0 + +Symbols: + Local: + - Name: .MIPS.abiflags + Type: STT_SECTION + Section: .MIPS.abiflags diff --git a/test/Object/Mips/elf-abi.yaml b/test/Object/Mips/elf-abi.yaml new file mode 100644 index 000000000000..5f11b14da596 --- /dev/null +++ b/test/Object/Mips/elf-abi.yaml @@ -0,0 +1,136 @@ +# RUN: yaml2obj -format=elf -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 + +# O32OBJ: Flags [ (0x50001002) +# O32OBJ-NEXT: EF_MIPS_ABI_O32 (0x1000) +# O32OBJ-NEXT: EF_MIPS_ARCH_32 (0x50000000) +# O32OBJ-NEXT: EF_MIPS_PIC (0x2) +# O32OBJ-NEXT: ] + +# O32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ] + +# RUN: yaml2obj -format=elf -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 + +# O64OBJ: Flags [ (0x60002002) +# O64OBJ-NEXT: EF_MIPS_ABI_O64 (0x2000) +# O64OBJ-NEXT: EF_MIPS_ARCH_64 (0x60000000) +# O64OBJ-NEXT: EF_MIPS_PIC (0x2) +# O64OBJ-NEXT: ] + +# O64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O64, EF_MIPS_ARCH_64 ] + +# RUN: yaml2obj -format=elf -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 + +# E32OBJ: Flags [ (0x50003002) +# E32OBJ-NEXT: EF_MIPS_ABI_EABI32 (0x3000) +# E32OBJ-NEXT: EF_MIPS_ARCH_32 (0x50000000) +# E32OBJ-NEXT: EF_MIPS_PIC (0x2) +# E32OBJ-NEXT: ] + +# E32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI32, EF_MIPS_ARCH_32 ] + +# RUN: yaml2obj -format=elf -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 + +# E64OBJ: Flags [ (0x60004002) +# E64OBJ-NEXT: EF_MIPS_ABI_EABI64 (0x4000) +# E64OBJ-NEXT: EF_MIPS_ARCH_64 (0x60000000) +# E64OBJ-NEXT: EF_MIPS_PIC (0x2) +# E64OBJ-NEXT: ] + +# E64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI64, EF_MIPS_ARCH_64 ] + +# o32 +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Size: 4 + +Symbols: + Global: + - Name: T1 + Section: .text + Value: 0 + Size: 4 + +# o64 +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O64, EF_MIPS_ARCH_64 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Size: 4 + +Symbols: + Global: + - Name: T1 + Section: .text + Value: 0 + Size: 4 + +# eabio32 +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI32, EF_MIPS_ARCH_32 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Size: 4 + +Symbols: + Global: + - Name: T1 + Section: .text + Value: 0 + Size: 4 + +# eabi64 +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI64, EF_MIPS_ARCH_64 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Size: 4 + +Symbols: + Global: + - Name: T1 + Section: .text + Value: 0 + Size: 4 +... diff --git a/test/Object/Mips/elf-flags.yaml b/test/Object/Mips/elf-flags.yaml new file mode 100644 index 000000000000..f79be9d4e078 --- /dev/null +++ b/test/Object/Mips/elf-flags.yaml @@ -0,0 +1,52 @@ +# RUN: yaml2obj -format=elf %s > %t +# RUN: llvm-readobj -file-headers %t | FileCheck -check-prefix=OBJ %s +# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s + +# OBJ: Flags [ (0x9E8B1727) +# OBJ-NEXT: EF_MIPS_32BITMODE (0x100) +# OBJ-NEXT: EF_MIPS_ABI2 (0x20) +# OBJ-NEXT: EF_MIPS_ABI_O32 (0x1000) +# OBJ-NEXT: EF_MIPS_ARCH_32R6 (0x90000000) +# OBJ-NEXT: EF_MIPS_ARCH_ASE_M16 (0x4000000) +# OBJ-NEXT: EF_MIPS_ARCH_ASE_MDMX (0x8000000) +# OBJ-NEXT: EF_MIPS_CPIC (0x4) +# OBJ-NEXT: EF_MIPS_FP64 (0x200) +# OBJ-NEXT: EF_MIPS_MACH_OCTEON (0x8B0000) +# OBJ-NEXT: EF_MIPS_MICROMIPS (0x2000000) +# OBJ-NEXT: EF_MIPS_NAN2008 (0x400) +# OBJ-NEXT: EF_MIPS_NOREORDER (0x1) +# OBJ-NEXT: EF_MIPS_PIC (0x2) +# OBJ-NEXT: ] + +# YAML: FileHeader: +# YAML-NEXT: Class: ELFCLASS32 +# YAML-NEXT: Data: ELFDATA2LSB +# YAML-NEXT: Type: ET_REL +# 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 ] + +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_NOREORDER, EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI2, + EF_MIPS_32BITMODE, EF_MIPS_FP64, EF_MIPS_NAN2008, + EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R6, + EF_MIPS_MICROMIPS, EF_MIPS_ARCH_ASE_M16, + EF_MIPS_ARCH_ASE_MDMX, EF_MIPS_MACH_OCTEON ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Size: 4 + +Symbols: + Global: + - Name: T1 + Section: .text + Value: 0 + Size: 4 +... diff --git a/test/Object/Mips/elf-mips64-rel.yaml b/test/Object/Mips/elf-mips64-rel.yaml new file mode 100644 index 000000000000..8b595099b9e5 --- /dev/null +++ b/test/Object/Mips/elf-mips64-rel.yaml @@ -0,0 +1,113 @@ +# RUN: yaml2obj -format=elf %s > %t +# RUN: llvm-readobj -r %t | FileCheck -check-prefix=OBJ %s +# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s + +# OBJ: Relocations [ +# OBJ-NEXT: Section (2) .rela.text { +# OBJ-NEXT: 0x14 R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 main 0x4 +# OBJ-NEXT: 0x1C R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 main 0x8 +# OBJ-NEXT: 0x20 R_MIPS_GOT_PAGE/R_MIPS_NONE/R_MIPS_NONE .rodata 0x0 +# OBJ-NEXT: 0x24 R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE .rodata 0x0 +# OBJ-NEXT: 0x28 R_MIPS_CALL16/R_MIPS_NONE/R_MIPS_NONE printf 0x0 +# OBJ-NEXT: 0x30 R_MIPS_GPREL16/R_MIPS_LO16/R_MIPS_NONE printf 0x0 +# OBJ-NEXT: } +# OBJ-NEXT: ] + +# YAML: Relocations: +# YAML-NEXT: - Offset: 0x0000000000000014 +# YAML-NEXT: Symbol: main +# YAML-NEXT: Type: R_MIPS_GPREL16 +# YAML-NEXT: Type2: R_MIPS_SUB +# YAML-NEXT: Type3: R_MIPS_HI16 +# YAML-NEXT: Addend: 4 +# YAML-NEXT: - Offset: 0x000000000000001C +# YAML-NEXT: Symbol: main +# YAML-NEXT: Type: R_MIPS_GPREL16 +# YAML-NEXT: Type2: R_MIPS_SUB +# YAML-NEXT: Type3: R_MIPS_LO16 +# YAML-NEXT: Addend: 8 +# YAML-NEXT: - Offset: 0x0000000000000020 +# YAML-NEXT: Symbol: .rodata +# YAML-NEXT: Type: R_MIPS_GOT_PAGE +# YAML-NEXT: - Offset: 0x0000000000000024 +# YAML-NEXT: Symbol: .rodata +# YAML-NEXT: Type: R_MIPS_GOT_OFST +# YAML-NEXT: - Offset: 0x0000000000000028 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_MIPS_CALL16 +# YAML-NEXT: - Offset: 0x0000000000000030 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_MIPS_GPREL16 +# YAML-NEXT: Type2: R_MIPS_LO16 +# YAML-NEXT: SpecSym: RSS_GP0 + +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_PIC, EF_MIPS_CPIC, + EF_MIPS_NOREORDER, EF_MIPS_ARCH_64R2 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x10 + Size: 0x60 + - Name: .rela.text + Type: SHT_RELA + Flags: [ SHF_INFO_LINK ] + Info: .text + Relocations: + - Offset: 0x14 + Symbol: main + Type: R_MIPS_GPREL16 + Type2: R_MIPS_SUB + Type3: R_MIPS_HI16 + Addend: 4 + - Offset: 0x1C + Symbol: main + Type: R_MIPS_GPREL16 + Type2: R_MIPS_SUB + Type3: R_MIPS_LO16 + Addend: 8 + - Offset: 0x20 + Symbol: .rodata + Type: R_MIPS_GOT_PAGE + Addend: 0 + - Offset: 0x24 + Symbol: .rodata + Type: R_MIPS_GOT_OFST + Addend: 0 + - Offset: 0x28 + Symbol: printf + Type: R_MIPS_CALL16 + Addend: 0 + - Offset: 0x30 + Symbol: printf + Type: R_MIPS_GPREL16 + Type2: R_MIPS_LO16 + SpecSym: RSS_GP0 + Addend: 0 + - Name: .rodata + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + AddressAlign: 0x10 + Size: 0x0F + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .rodata + Type: STT_SECTION + Section: .rodata + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x58 + - Name: printf +... diff --git a/test/Object/archive-delete.test b/test/Object/archive-delete.test index 552b0e709f61..c8530beafce4 100644 --- a/test/Object/archive-delete.test +++ b/test/Object/archive-delete.test @@ -1,7 +1,5 @@ Test the 'd' operation in llvm-ar -REQUIRES: shell - RUN: cd %T RUN: rm -f %t.a diff --git a/test/Object/archive-extract-dir.test b/test/Object/archive-extract-dir.test index c718f90275b6..5182a2f91411 100644 --- a/test/Object/archive-extract-dir.test +++ b/test/Object/archive-extract-dir.test @@ -1,5 +1,3 @@ -REQUIRES: shell - RUN: mkdir -p %t RUN: cd %t RUN: rm -rf foo @@ -10,4 +8,4 @@ RUN: rm foo RUN: mkdir foo RUN: not llvm-ar x test.a foo 2>&1 | FileCheck %s -CHECK: foo: Is a directory +CHECK: foo: {{[Ii]}}s a directory diff --git a/test/Object/archive-format.test b/test/Object/archive-format.test index 20ac1a0d78fb..f076123d2ea1 100644 --- a/test/Object/archive-format.test +++ b/test/Object/archive-format.test @@ -1,13 +1,11 @@ Test the exact archive format. In particular, test which file names use the string table or not. -REQUIRES: shell - RUN: mkdir -p %t RUN: cd %t -RUN: echo bar > 0123456789abcde -RUN: echo zed > 0123456789abcdef +RUN: echo -n bar. > 0123456789abcde +RUN: echo -n zed. > 0123456789abcdef RUN: rm -f test.a RUN: llvm-ar rc test.a 0123456789abcde 0123456789abcdef @@ -17,6 +15,5 @@ CHECK: !<arch> CHECK-NEXT: // 18 ` CHECK-NEXT: 0123456789abcdef/ CHECK-NEXT: 0123456789abcde/{{................................}}4 ` -CHECK-NEXT: bar -CHECK-NEXT: /0 {{................................}}4 ` -CHECK-NEXT: zed +CHECK-NEXT: bar./0 {{................................}}4 ` +CHECK-NEXT: zed. diff --git a/test/Object/archive-move.test b/test/Object/archive-move.test index 0378e9111a96..adc114994d28 100644 --- a/test/Object/archive-move.test +++ b/test/Object/archive-move.test @@ -1,7 +1,5 @@ Test the 'm' operation in llvm-ar -REQUIRES: shell - RUN: cd %T RUN: rm -f %t.a diff --git a/test/Object/archive-update.test b/test/Object/archive-update.test index 20286d2669ad..91ca8102c7e1 100644 --- a/test/Object/archive-update.test +++ b/test/Object/archive-update.test @@ -1,7 +1,5 @@ Test the 'u' option of llvm-ar -REQUIRES: shell - RUN: cd %T RUN: rm -f %t.a diff --git a/test/Object/elf-unknown-type.test b/test/Object/elf-unknown-type.test new file mode 100644 index 000000000000..9993c096376c --- /dev/null +++ b/test/Object/elf-unknown-type.test @@ -0,0 +1,10 @@ +# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s + +!ELF +FileHeader: !FileHeader + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: 42 + Machine: EM_X86_64 + +# CHECK: Type: 0x2A diff --git a/test/Object/extract.ll b/test/Object/extract.ll index a4e76499ca6c..8d77f09fe88c 100644 --- a/test/Object/extract.ll +++ b/test/Object/extract.ll @@ -3,8 +3,6 @@ ; This test just makes sure that llvm-ar can extract bytecode members ; from various style archives. -; REQUIRES: shell - ; RUN: cd %T ; RUN: rm -f very_long_bytecode_file_name.bc diff --git a/test/Object/kext.test b/test/Object/kext.test new file mode 100644 index 000000000000..8e7c3d148719 --- /dev/null +++ b/test/Object/kext.test @@ -0,0 +1,7 @@ +// Check that we understand kext bundles. +// Test input generated by "clang -x c++ -fapple-kext -Wl,-kext /dev/null" + +RUN: llvm-readobj %p/Inputs/macho-empty-kext-bundle-x86-64 | FileCheck %s +CHECK: Format: Mach-O 64-bit x86-64 +CHECK: Arch: x86_64 +CHECK: AddressSize: 64bit diff --git a/test/Object/macho-invalid.test b/test/Object/macho-invalid.test new file mode 100644 index 000000000000..e2c9b6b7360e --- /dev/null +++ b/test/Object/macho-invalid.test @@ -0,0 +1,38 @@ +// No crash, might not be totally invalid +RUN: llvm-objdump -private-headers %p/Inputs/macho-invalid-zero-ncmds + +RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-incomplete-load-command 2>&1 \ +RUN: | FileCheck -check-prefix INCOMPLETE-LOADC %s + +RUN: not llvm-objdump -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: | FileCheck -check-prefix SMALL-LOADC-SIZE %s + +RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-too-small-segment-load-command 2>&1 \ +RUN: | FileCheck -check-prefix SMALL-SEGLOADC-SIZE %s +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 + +RUN: not llvm-objdump -private-headers %p/Inputs/macho-invalid-no-size-for-sections 2>&1 \ +RUN: | FileCheck -check-prefix TOO-MANY-SECTS %s +RUN: not llvm-objdump -private-headers %p/Inputs/macho64-invalid-no-size-for-sections 2>&1 \ +RUN: | FileCheck -check-prefix TOO-MANY-SECTS %s + +RUN: not llvm-objdump -t %p/Inputs/macho-invalid-bad-symbol-index 2>&1 \ +RUN: | FileCheck -check-prefix BAD-SYMBOL %s + +RUN: not llvm-objdump -t %p/Inputs/macho-invalid-symbol-name-past-eof 2>&1 \ +RUN: | FileCheck -check-prefix NAME-PAST-EOF %s + +RUN: not llvm-nm %p/Inputs/macho-invalid-section-index-getSectionRawName 2>&1 \ +RUN: | FileCheck -check-prefix INVALID-SECTION-IDX-SYMBOL-SEC %s + +SMALL-LOADC-SIZE: Load command with size < 8 bytes +SMALL-SEGLOADC-SIZE: Segment load command size is too small +INCOMPLETE-LOADC: Malformed MachO file +TOO-MANY-SECTS: Number of sections too large for size of load command +BAD-SYMBOL: Requested symbol index is out of range +NAME-PAST-EOF: Symbol name entry points before beginning or past end of file + +INVALID-SECTION-IDX-SYMBOL-SEC: getSymbolSection: Invalid section index diff --git a/test/Object/nm-irix6.test b/test/Object/nm-irix6.test new file mode 100644 index 000000000000..047665cbf32b --- /dev/null +++ b/test/Object/nm-irix6.test @@ -0,0 +1,27 @@ +# Check reading IRIX 6.0 64-bit archive file. +RUN: llvm-nm %p/Inputs/archive-test.a-irix6-mips64el | FileCheck %s + +CHECK: f1.o: +CHECK-NEXT: 00000028 T f1 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f2.o: +CHECK-NEXT: 00000028 T f2 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f3.o: +CHECK-NEXT: 00000028 T f3 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f4.o: +CHECK-NEXT: 00000028 T f4 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f5.o: +CHECK-NEXT: 00000028 T f5 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo diff --git a/test/Object/nm-trivial-object.test b/test/Object/nm-trivial-object.test index 0135f2df3cb0..def6549d6563 100644 --- a/test/Object/nm-trivial-object.test +++ b/test/Object/nm-trivial-object.test @@ -1,9 +1,11 @@ RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm -a -S - \ -RUN: | FileCheck %s -check-prefix COFF +RUN: | FileCheck %s -check-prefix COFF32 RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm -a -S - \ -RUN: | FileCheck %s -check-prefix COFF +RUN: | FileCheck %s -check-prefix COFF64 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-i386 -S \ +RUN: | FileCheck %s -check-prefix ELF-SIZE RUN: llvm-nm -o %p/Inputs/trivial-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF-o RUN: llvm-nm -u %p/Inputs/trivial-object-test.elf-i386 \ @@ -46,23 +48,30 @@ RUN: mkdir -p %t RUN: cd %t RUN: cp %p/Inputs/trivial-object-test.macho-i386 a.out RUN: llvm-nm | FileCheck %s -check-prefix A-OUT -REQUIRES: shell -COFF: 00000000 {{.*}} d .data -COFF: 00000000 {{.*}} t .text -COFF: 00000000 0000000d d L{{_?}}.str -COFF: U {{_?}}SomeOtherFunction -COFF: 00000000 {{.*}} T {{_?}}main -COFF: U {{_?}}puts +COFF32: 00000000 d .data +COFF32-NEXT: 00000000 t .text +COFF32-NEXT: 00000000 d L_.str +COFF32-NEXT: U _SomeOtherFunction +COFF32-NEXT: 00000000 T _main +COFF32-NEXT: U _puts -COFF-COMMON: 00000000 00000000 b .bss -COFF-COMMON-NEXT: 00000000 00000000 d .data -COFF-COMMON-NEXT: 00000000 00000014 d .drectve -COFF-COMMON-NEXT: 00000000 00000000 n .file -COFF-COMMON-NEXT: 00000000 00000014 r .rdata$zzz -COFF-COMMON-NEXT: 00000000 00000000 t .text -COFF-COMMON-NEXT: 00000004 C _a +COFF64: 00000000 d .data +COFF64-NEXT: 00000000 t .text +COFF64-NEXT: 00000000 r ??__Ex@@YAXXZ +COFF64-NEXT: 00000000 d L.str +COFF64-NEXT: U SomeOtherFunction +COFF64-NEXT: 00000000 T main +COFF64-NEXT: U puts + +COFF-COMMON: 00000000 b .bss +COFF-COMMON-NEXT: 00000000 d .data +COFF-COMMON-NEXT: 00000000 d .drectve +COFF-COMMON-NEXT: 00000000 n .file +COFF-COMMON-NEXT: 00000000 r .rdata$zzz +COFF-COMMON-NEXT: 00000000 t .text +COFF-COMMON-NEXT: C _a ELF-NOT: U @@ -70,6 +79,11 @@ ELF: U SomeOtherFunction ELF: 00000000 T main ELF: U puts +FIXME: we should not print the size of undefined symbols. +ELF-SIZE: 00000000 U SomeOtherFunction +ELF-SIZE-NEXT: 00000000 00000024 T main +ELF-SIZE-NEXT: 00000000 U puts + ELF-o: {{.*}}/trivial-object-test.elf-i386: U SomeOtherFunction ELF-o: {{.*}}/trivial-object-test.elf-i386: 00000000 T main ELF-o: {{.*}}/trivial-object-test.elf-i386: U puts diff --git a/test/Object/obj2yaml-sectiongroup.test b/test/Object/obj2yaml-sectiongroup.test new file mode 100644 index 000000000000..66e8e3875be2 --- /dev/null +++ b/test/Object/obj2yaml-sectiongroup.test @@ -0,0 +1,26 @@ +# 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: llvm-readobj -sections %t2.o.elf | FileCheck %s -check-prefix=SECTIONS +#ELF-GROUP: - Name: .group +#ELF-GROUP: Type: SHT_GROUP +#ELF-GROUP: Link: .symtab +#ELF-GROUP: Info: a +#ELF-GROUP: Members: +#ELF-GROUP: - SectionOrType: GRP_COMDAT +#ELF-GROUP: - SectionOrType: .rodata.a +#SECTIONS: Format: ELF64-x86-64 +#SECTIONS: Arch: x86_64 +#SECTIONS: AddressSize: 64bit +#SECTIONS: Section { +#SECTIONS: Index: 1 +#SECTIONS: Name: .group (21) +#SECTIONS: Type: SHT_GROUP (0x11) +#SECTIONS: Flags [ (0x0) +#SECTIONS: ] +#SECTIONS: Address: 0x0 +#SECTIONS: Size: 8 +#SECTIONS: AddressAlignment: 4 +#SECTIONS: EntrySize: 4 +#SECTIONS: } diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index 1c79e98fdc3b..2a3f7c841dd1 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -210,27 +210,21 @@ ELF-MIPSEL-NEXT: Relocations: ELF-MIPSEL-NEXT: - Offset: 0x0000000000000000 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 ] @@ -259,7 +253,12 @@ ELF-MIPSEL-NEXT: - Name: .MIPS.abiflags ELF-MIPSEL-NEXT: Type: SHT_MIPS_ABIFLAGS ELF-MIPSEL-NEXT: Flags: [ SHF_ALLOC ] ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000008 -ELF-MIPSEL-NEXT: Content: '000020010101000100000000000000000100000000000000' +ELF-MIPSEL-NEXT: ISA: MIPS32 +ELF-MIPSEL-NEXT: ISARevision: 0x01 +ELF-MIPSEL-NEXT: FpABI: FP_DOUBLE +ELF-MIPSEL-NEXT: GPRSize: REG_32 +ELF-MIPSEL-NEXT: CPR1Size: REG_32 +ELF-MIPSEL-NEXT: Flags1: [ ODDSPREG ] ELF-MIPSEL-NEXT: Symbols: ELF-MIPSEL-NEXT: Local: ELF-MIPSEL-NEXT: - Name: trivial.ll @@ -328,7 +327,6 @@ 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 ] @@ -398,7 +396,6 @@ 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 diff --git a/test/Object/objdump-macho-quirks.test b/test/Object/objdump-macho-quirks.test deleted file mode 100644 index eeee1537def7..000000000000 --- a/test/Object/objdump-macho-quirks.test +++ /dev/null @@ -1,9 +0,0 @@ -RUN: llvm-objdump -private-headers %p/Inputs/macho-zero-ncmds \ -RUN: | FileCheck %s -check-prefix A - -// Check that we don't get an infinite loop if ncmds = 0 -A: file format Mach-O 64-bit unknown -A: Mach header -A: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags -A: MH_MAGIC_64 0x00 OBJECT 0 0 0x00000000 - diff --git a/test/Object/objdump-symbol-table.test b/test/Object/objdump-symbol-table.test index c94b07773550..3d09e1a45f39 100644 --- a/test/Object/objdump-symbol-table.test +++ b/test/Object/objdump-symbol-table.test @@ -30,12 +30,14 @@ ELF-i386: 00000000 *UND* 00000000 puts macho-i386: trivial-object-test.macho-i386: file format Mach-O 32-bit i386 macho-i386: SYMBOL TABLE: -macho-i386: 00000000 g F __TEXT,__text 00000024 _main +macho-i386: 00000000 g F __TEXT,__text 00000000 _main macho-i386: 00000000 *UND* 00000000 _SomeOtherFunction macho-i386: 00000000 *UND* 00000000 _puts ELF-shared: shared-object-test.elf-i386: file format ELF-shared: SYMBOL TABLE: ELF-shared: 00000200 l F .text 00000003 local_func +ELF-shared: 000012b8 l *ABS* 00000000 .hidden _GLOBAL_OFFSET_TABLE_ +ELF-shared: 00001248 l *ABS* 00000000 .hidden _DYNAMIC ELF-shared: 000012c4 g .data 00000004 defined_sym ELF-shared: 000001f0 g F .text 00000003 global_func diff --git a/test/Object/yaml2obj-elf-rel-noref.yaml b/test/Object/yaml2obj-elf-rel-noref.yaml new file mode 100644 index 000000000000..69fcf0854434 --- /dev/null +++ b/test/Object/yaml2obj-elf-rel-noref.yaml @@ -0,0 +1,77 @@ +# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s + +!ELF +FileHeader: !FielHeader + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_ARM + Flags: [ EF_ARM_EABI_VER5 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: 03308FE0022093E7000052E31EFF2F01 + - Name: .rel.text + Type: SHT_REL + Flags: [ SHF_INFO_LINK ] + Link: .symtab + AddressAlign: 0x0000000000000004 + Info: .text + Relocations: + - Offset: 0x000000000000000C + Symbol: '' + Type: R_ARM_V4BX + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000001 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000001 + Content: '' + - Name: .ARM.attributes + Type: SHT_ARM_ATTRIBUTES + AddressAlign: 0x0000000000000001 + Content: 4115000000616561626900010B000000060208010901 +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .data + Type: STT_SECTION + Section: .data + - Name: .bss + Type: STT_SECTION + Section: .bss + - Name: '$a' + Section: .text + - Name: call_weak_fn + Type: STT_FUNC + Section: .text + - Name: .ARM.attributes + Type: STT_SECTION + Section: .ARM.attributes + +# CHECK: Section { +# CHECK-NEXT: Index: 0 +# CHECK: } +# CHECK: Section { +# CHECK-NEXT: Index: 1 +# CHECK-NEXT: Name: .text (5) +# CHECK: } +# CHECK-NEXT: Section { +# CHECK-NEXT: Index: 2 +# CHECK-NEXT: Name: .rel.text (1) +# CHECK-NEXT: Type: SHT_REL (0x9) +# CHECK-NEXT: Flags [ (0x40) +# CHECK: } +# CHECK: Relocations [ +# CHECK-NEXT: Section (2) .rel.text { +# CHECK-NEXT: 0xC R_ARM_V4BX - 0x0 +# CHECK-NEXT: } +# CHECK-NEXT: ] |