diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
commit | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch) | |
tree | 5343938942df402b49ec7300a1c25a2d4ccd5821 /test/tools/llvm-objdump | |
parent | 31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff) |
Diffstat (limited to 'test/tools/llvm-objdump')
86 files changed, 708 insertions, 13 deletions
diff --git a/test/tools/llvm-objdump/AArch64/Inputs/print-armv8crypto.obj.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/print-armv8crypto.obj.macho-aarch64 Binary files differnew file mode 100644 index 000000000000..b6ea824431c1 --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/Inputs/print-armv8crypto.obj.macho-aarch64 diff --git a/test/tools/llvm-objdump/AArch64/mach-print-armv8crypto.test b/test/tools/llvm-objdump/AArch64/mach-print-armv8crypto.test new file mode 100644 index 000000000000..e5ac0cb453e4 --- /dev/null +++ b/test/tools/llvm-objdump/AArch64/mach-print-armv8crypto.test @@ -0,0 +1,3 @@ +RUN: llvm-objdump -d -m -no-show-raw-insn %p/Inputs/print-armv8crypto.obj.macho-aarch64 | FileCheck %s + +CHECK: 0: sha1su0.4s v0, v1, v2 diff --git a/test/tools/llvm-objdump/AArch64/macho-print-mrs.test b/test/tools/llvm-objdump/AArch64/macho-print-mrs.test index cc1d14faf8d3..c629a4de3876 100644 --- a/test/tools/llvm-objdump/AArch64/macho-print-mrs.test +++ b/test/tools/llvm-objdump/AArch64/macho-print-mrs.test @@ -1,3 +1,3 @@ RUN: llvm-objdump -d -m -no-show-raw-insn %p/Inputs/print-mrs.obj.macho-aarch64 | FileCheck %s -CHECK: 0: mrs x0, S3_7_C15_C2_0 +CHECK: 0: mrs x0, CPM_IOACC_CTL_EL3 diff --git a/test/tools/llvm-objdump/AMDGPU/Inputs/source-lines.cl b/test/tools/llvm-objdump/AMDGPU/Inputs/source-lines.cl new file mode 100644 index 000000000000..9179056318bd --- /dev/null +++ b/test/tools/llvm-objdump/AMDGPU/Inputs/source-lines.cl @@ -0,0 +1,6 @@ +kernel void source_lines_test(global int *Out) { + int var0 = 0x777; + int var1 = 0x888; + int var2 = var0 + var1; + *Out = var2; +} diff --git a/test/tools/llvm-objdump/AMDGPU/lit.local.cfg b/test/tools/llvm-objdump/AMDGPU/lit.local.cfg new file mode 100644 index 000000000000..2a665f06be72 --- /dev/null +++ b/test/tools/llvm-objdump/AMDGPU/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/test/tools/llvm-objdump/AMDGPU/source-lines.ll b/test/tools/llvm-objdump/AMDGPU/source-lines.ll new file mode 100644 index 000000000000..94c4952e3386 --- /dev/null +++ b/test/tools/llvm-objdump/AMDGPU/source-lines.ll @@ -0,0 +1,109 @@ +; RUN: sed -e "s,SRC_COMPDIR,%/p/Inputs,g" %s > %t.ll +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx800 -filetype=obj -O0 -o %t.o %t.ll +; RUN: llvm-objdump -triple=amdgcn-amd-amdhsa -mcpu=gfx800 -disassemble -line-numbers %t.o | FileCheck --check-prefix=LINE %t.ll +; RUN: llvm-objdump -triple=amdgcn-amd-amdhsa -mcpu=gfx800 -disassemble -source %t.o | FileCheck --check-prefix=SOURCE %t.ll + +; Prologue. +; LINE: source_lines_test: +; LINE-NEXT: ; {{.*}}source-lines.cl:1 +; Kernel. +; LINE: ; {{.*}}source-lines.cl:2 +; LINE: v_mov_b32_e32 v{{[0-9]+}}, 0x777 +; LINE: ; {{.*}}source-lines.cl:3 +; LINE: v_mov_b32_e32 v{{[0-9]+}}, 0x888 +; LINE: ; {{.*}}source-lines.cl:4 +; LINE: v_add_i32_e32 +; LINE: ; {{.*}}source-lines.cl:5 +; LINE: flat_store_dword +; Epilogue. +; LINE: ; {{.*}}source-lines.cl:6 +; LINE-NEXT: s_endpgm + +; Prologue. +; SOURCE: source_lines_test: +; SOURCE-NEXT: ; kernel void source_lines_test(global int *Out) { +; Kernel. +; SOURCE: ; int var0 = 0x777; +; SOURCE: v_mov_b32_e32 v{{[0-9]+}}, 0x777 +; SOURCE: ; int var1 = 0x888; +; SOURCE: v_mov_b32_e32 v{{[0-9]+}}, 0x888 +; SOURCE: ; int var2 = var0 + var1; +; SOURCE: v_add_i32_e32 +; SOURCE: ; *Out = var2; +; SOURCE: flat_store_dword +; Epilogue. +; SOURCE: ; } +; SOURCE-NEXT: s_endpgm + +; ModuleID = 'source-lines.cl' +source_filename = "source-lines.cl" +target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +target triple = "amdgcn-amd-amdhsa" + +; Function Attrs: noinline nounwind +define amdgpu_kernel void @source_lines_test(i32 addrspace(1)* %Out) #0 !dbg !7 !kernel_arg_addr_space !12 !kernel_arg_access_qual !13 !kernel_arg_type !14 !kernel_arg_base_type !14 !kernel_arg_type_qual !15 { +entry: + %Out.addr = alloca i32 addrspace(1)*, align 4 + %var0 = alloca i32, align 4 + %var1 = alloca i32, align 4 + %var2 = alloca i32, align 4 + store i32 addrspace(1)* %Out, i32 addrspace(1)** %Out.addr, align 4 + call void @llvm.dbg.declare(metadata i32 addrspace(1)** %Out.addr, metadata !16, metadata !17), !dbg !18 + call void @llvm.dbg.declare(metadata i32* %var0, metadata !19, metadata !17), !dbg !20 + store i32 1911, i32* %var0, align 4, !dbg !20 + call void @llvm.dbg.declare(metadata i32* %var1, metadata !21, metadata !17), !dbg !22 + store i32 2184, i32* %var1, align 4, !dbg !22 + call void @llvm.dbg.declare(metadata i32* %var2, metadata !23, metadata !17), !dbg !24 + %0 = load i32, i32* %var0, align 4, !dbg !25 + %1 = load i32, i32* %var1, align 4, !dbg !26 + %add = add nsw i32 %0, %1, !dbg !27 + store i32 %add, i32* %var2, align 4, !dbg !24 + %2 = load i32, i32* %var2, align 4, !dbg !28 + %3 = load i32 addrspace(1)*, i32 addrspace(1)** %Out.addr, align 4, !dbg !29 + store i32 %2, i32 addrspace(1)* %3, align 4, !dbg !30 + ret void, !dbg !31 +} + +; Function Attrs: nounwind readnone +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="gfx700" "target-features"="+fp64-fp16-denormals,-fp32-denormals" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind readnone } + +!llvm.dbg.cu = !{!0} +!opencl.ocl.version = !{!3} +!llvm.module.flags = !{!4, !5} +!llvm.ident = !{!6} + +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) +!1 = !DIFile(filename: "source-lines.cl", directory: "SRC_COMPDIR") +!2 = !{} +!3 = !{i32 1, i32 0} +!4 = !{i32 2, !"Dwarf Version", i32 2} +!5 = !{i32 2, !"Debug Info Version", i32 3} +!6 = !{!"clang version 5.0.0"} +!7 = distinct !DISubprogram(name: "source_lines_test", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2) +!8 = !DISubroutineType(types: !9) +!9 = !{null, !10} +!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 1} +!13 = !{!"none"} +!14 = !{!"int*"} +!15 = !{!""} +!16 = !DILocalVariable(name: "Out", arg: 1, scope: !7, file: !1, line: 1, type: !10) +!17 = !DIExpression() +!18 = !DILocation(line: 1, column: 43, scope: !7) +!19 = !DILocalVariable(name: "var0", scope: !7, file: !1, line: 2, type: !11) +!20 = !DILocation(line: 2, column: 7, scope: !7) +!21 = !DILocalVariable(name: "var1", scope: !7, file: !1, line: 3, type: !11) +!22 = !DILocation(line: 3, column: 7, scope: !7) +!23 = !DILocalVariable(name: "var2", scope: !7, file: !1, line: 4, type: !11) +!24 = !DILocation(line: 4, column: 7, scope: !7) +!25 = !DILocation(line: 4, column: 14, scope: !7) +!26 = !DILocation(line: 4, column: 21, scope: !7) +!27 = !DILocation(line: 4, column: 19, scope: !7) +!28 = !DILocation(line: 5, column: 10, scope: !7) +!29 = !DILocation(line: 5, column: 4, scope: !7) +!30 = !DILocation(line: 5, column: 8, scope: !7) +!31 = !DILocation(line: 6, column: 1, scope: !7) diff --git a/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s b/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s Binary files differnew file mode 100644 index 000000000000..b877d2d5180d --- /dev/null +++ b/test/tools/llvm-objdump/ARM/Inputs/divs.macho-armv7s diff --git a/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test b/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test new file mode 100644 index 000000000000..ff7daa8c2142 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/macho-nomcpu-armv7s.test @@ -0,0 +1,3 @@ +@ RUN: llvm-objdump -m -d %p/Inputs/divs.macho-armv7s | FileCheck %s + +@ CHECK: 10 f0 10 e7 sdiv r0, r0, r0 diff --git a/test/tools/llvm-objdump/ARM/v5t-subarch.s b/test/tools/llvm-objdump/ARM/v5t-subarch.s new file mode 100644 index 000000000000..c9ce2cf6cebd --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v5t-subarch.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv5t-elf -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.arch armv5t + +clz: +clz r0, r1 + +@ CHECK-LABEL: clz +@ CHECK: 11 0f 6f e1 + diff --git a/test/tools/llvm-objdump/ARM/v5te-subarch.s b/test/tools/llvm-objdump/ARM/v5te-subarch.s new file mode 100644 index 000000000000..87e8548fb014 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v5te-subarch.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv5te-elf -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.arch armv5te + +strd: +strd r0, r1, [r2, +r3] + +@ CHECK-LABEL strd +@ CHECK: f3 00 82 e1 strd r0, r1, [r2, r3] + diff --git a/test/tools/llvm-objdump/ARM/v5tej-subarch.s b/test/tools/llvm-objdump/ARM/v5tej-subarch.s new file mode 100644 index 000000000000..42dc87389a34 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v5tej-subarch.s @@ -0,0 +1,7 @@ +@ RUN: llvm-mc < %s -triple armv5tej-elf -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +bxj: +bxj r0 + +@ CHECK-LABEL: bxj +@ CHECK: 20 ff 2f e1 bxj r0 diff --git a/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s b/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s new file mode 100644 index 000000000000..1a8d8f283336 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv6 -mattr=+vfp2 -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 1 // VFP2 + +vfp2: + vadd.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 81 0a 30 ee vadd.f32 s0, s1, s2 +@CHECK: unknown diff --git a/test/tools/llvm-objdump/ARM/v6-subarch.s b/test/tools/llvm-objdump/ARM/v6-subarch.s new file mode 100644 index 000000000000..c70761e7c8c5 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6-subarch.s @@ -0,0 +1,9 @@ +@ RUN: llvm-mc < %s -triple armv6-elf -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.arch armv6 + +umaal: +umaal r0, r1, r2, r3 + +@ CHECK-LABEL:umaal +@ CHECK: 92 03 41 e0 umaal r0, r1, r2, r3 diff --git a/test/tools/llvm-objdump/ARM/v6-subfeatures.s b/test/tools/llvm-objdump/ARM/v6-subfeatures.s new file mode 100644 index 000000000000..e8e806740d19 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6-subfeatures.s @@ -0,0 +1,9 @@ +@ RUN: llvm-mc < %s -triple armv6 -mattr=+vfp2 -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 2 // VFP2 + +vfp2: + vadd.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 81 0a 30 ee vadd.f32 s0, s1, s2 diff --git a/test/tools/llvm-objdump/ARM/v6k-subarch.s b/test/tools/llvm-objdump/ARM/v6k-subarch.s new file mode 100644 index 000000000000..8df4ce5e2576 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6k-subarch.s @@ -0,0 +1,9 @@ +@ RUN: llvm-mc < %s -triple armv6k-elf -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.arch armv6k + +clrex: +clrex + +@ CHECK-LABEL: clrex +@ CHECK: 1f f0 7f f5 clrex diff --git a/test/tools/llvm-objdump/ARM/v6m-subarch.s b/test/tools/llvm-objdump/ARM/v6m-subarch.s new file mode 100644 index 000000000000..f4c56989c17e --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6m-subarch.s @@ -0,0 +1,9 @@ +@ RUN: llvm-mc < %s -triple armv6m-elf -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.arch armv6m + +dmb: +dmb + +@ CHECK-LABEL: dmb +@ CHECK: bf f3 5f 8f dmb sy diff --git a/test/tools/llvm-objdump/ARM/v6t2-subarch.s b/test/tools/llvm-objdump/ARM/v6t2-subarch.s new file mode 100644 index 000000000000..36e134342972 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v6t2-subarch.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv6t2-elf -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.arch armv6t2 + +.thumb +umaalt2: +umaal r0, r1, r2, r3 + +@ CHECK-LABEL: umaalt2 +@ CHECK: e2 fb 63 01 umaal r0, r1, r2, r3 diff --git a/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s b/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s new file mode 100644 index 000000000000..8083e5b0eee0 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s @@ -0,0 +1,44 @@ +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm,+hwdiv -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm,+hwdiv -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s --check-prefix=CHECK-THUMB + +.eabi_attribute Tag_FP_arch, 0 // disallow vfp + +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 81 0a 00 ee vmla.f32 s0, s1, s2 +@CHECK: unknown + +vfp3: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp3 +@CHECK-NOT: 00 0a b6 ee vmov.f32 s0, #5.000000e-01 + +neon: + vmla.f32 d0, d1, d2 + +@CHECK-LABEL: neon +@CHECK-NOT: 12 0d 01 f2 vmla.f32 d0, d1, d2 +@CHECK: unknown + +fp16: + vcvt.f32.f16 q0, d2 + +@CHECK-LABEL: fp16 +@CHECK-NOT: 02 07 b6 f3 vcvt.f32.f16 q0, d2 + +div_arm: + udiv r0, r1, r2 + +@CHECK-LABEL: div_arm +@CHECK-NOT: 11 f2 30 e7 udiv r0, r1, r2 +@CHECK: unknown + +.thumb +div_thumb: + udiv r0, r1, r2 + +@CHECK-LABEL: div_thumb +@CHECK-THUMB-NOT: b1 fb f2 f0 udiv r0, r1, r2 diff --git a/test/tools/llvm-objdump/ARM/v7a-subfeature.s b/test/tools/llvm-objdump/ARM/v7a-subfeature.s new file mode 100644 index 000000000000..f43554579a36 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7a-subfeature.s @@ -0,0 +1,36 @@ +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 3 // VFP3 +.eabi_attribute Tag_Advanced_SIMD_arch, 2 // SIMDv1 with fp16 +.eabi_attribute Tag_DIV_use, 2 // permitted + +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 81 0a 00 ee vmla.f32 s0, s1, s2 + +vfp3: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp3 +@CHECK: 00 0a b6 ee vmov.f32 s0, #5.000000e-01 + +neon: + vmla.f32 d0, d1, d2 + +@CHECK-LABEL: neon +@CHECK: 12 0d 01 f2 vmla.f32 d0, d1, d2 + +fp16: + vcvt.f32.f16 q0, d2 + +@CHECK-LABEL: fp16 +@CHECK: 02 07 b6 f3 vcvt.f32.f16 q0, d2 + +div: + udiv r0, r1, r2 + +@CHECK-LABEL: div +@CHECK: 11 f2 30 e7 udiv r0, r1, r2 + diff --git a/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s b/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s new file mode 100644 index 000000000000..b3a79c7d5c2b --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s @@ -0,0 +1,18 @@ +@ RUN: llvm-mc < %s -triple armv7m -mattr=+vfp4 -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_FP_arch, 0 // VFP4 + +.thumb +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 00 ee 81 0a vmla.f32 s0, s1, s2 + +.thumb +vfp4: + vmov.f32 s0, #0.5 + +@CHECK-LABEL:vfp4 +@CHECK-NOT: b6 ee 00 0a vmov.f32 s0, #5.000000e-01 diff --git a/test/tools/llvm-objdump/ARM/v7m-subarch.s b/test/tools/llvm-objdump/ARM/v7m-subarch.s new file mode 100644 index 000000000000..8f6ff57e0ff3 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7m-subarch.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv7m-elf -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.arch armv7m + +umlal: +umlal r0, r1, r2, r3 + +@ CHECK-LABEL: umlal +@ CHECK: e2 fb 03 01 umlal r0, r1, r2, r3 + diff --git a/test/tools/llvm-objdump/ARM/v7m-subfeatures.s b/test/tools/llvm-objdump/ARM/v7m-subfeatures.s new file mode 100644 index 000000000000..c7a40af8ae90 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7m-subfeatures.s @@ -0,0 +1,26 @@ +@ RUN: llvm-mc < %s -triple armv7m -mattr=+vfp4 -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_CPU_arch_profile, 0x4D // 'M' profile +.eabi_attribute Tag_FP_arch, 5 // VFP4 + +.thumb +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 00 ee 81 0a vmla.f32 s0, s1, s2 + +.thumb +vfp4: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp4 +@CHECK: b6 ee 00 0a vmov.f32 s0, #5.000000e-01 + +.thumb +div: + udiv r0, r1, r2 + +@CHECK-LABEL: div +@CHECK: b1 fb f2 f0 udiv r0, r1, r2 diff --git a/test/tools/llvm-objdump/ARM/v7r-subfeatures.s b/test/tools/llvm-objdump/ARM/v7r-subfeatures.s new file mode 100644 index 000000000000..bbe40a193879 --- /dev/null +++ b/test/tools/llvm-objdump/ARM/v7r-subfeatures.s @@ -0,0 +1,20 @@ +@ RUN: llvm-mc < %s -triple armv7r -mattr=+hwdiv-arm -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s +@ RUN: llvm-mc < %s -triple armv7r -mattr=+hwdiv-arm -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s --check-prefix=CHECK-ARM + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_CPU_arch_profile, 0x52 // 'R' profile + +.arm +div_arm: + udiv r0, r1, r2 + +@CHECK-LABEL: div_arm +@CHECK-NOT: udiv r0, r1, r2 +@CHECK-ARM-NOT: udiv r0, r1, r2 + +.thumb +div_thumb: + udiv r0, r1, r2 + +@CHECK-LABEL: div_thumb +@CHECK: b1 fb f2 f0 udiv r0, r1, r2 diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-add-addr-imm-scaled b/test/tools/llvm-objdump/Inputs/macho-bind-add-addr-imm-scaled Binary files differnew file mode 100755 index 000000000000..2180437408c9 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-add-addr-imm-scaled diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-add_addr_uleb b/test/tools/llvm-objdump/Inputs/macho-bind-add_addr_uleb Binary files differnew file mode 100755 index 000000000000..fc950db155a6 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-add_addr_uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-bad-opcode-value b/test/tools/llvm-objdump/Inputs/macho-bind-bad-opcode-value Binary files differnew file mode 100755 index 000000000000..c9195314c8e1 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-bad-opcode-value diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-bind-add-addr-uleb b/test/tools/llvm-objdump/Inputs/macho-bind-bind-add-addr-uleb Binary files differnew file mode 100755 index 000000000000..11abd6246b8d --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-bind-add-addr-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-do-bind-no-segIndex b/test/tools/llvm-objdump/Inputs/macho-bind-do-bind-no-segIndex Binary files differnew file mode 100755 index 000000000000..cc4f09708c42 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-do-bind-no-segIndex diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb Binary files differnew file mode 100755 index 000000000000..7769195d44c9 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-malformed-uleb128 b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-malformed-uleb128 Binary files differnew file mode 100755 index 000000000000..0d5410e976e6 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-malformed-uleb128 diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-too-big b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-too-big Binary files differnew file mode 100755 index 000000000000..40564b5a262f --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-ordinal-uleb-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-dylib-special-imm b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-special-imm Binary files differnew file mode 100755 index 000000000000..09bf10ded896 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-dylib-special-imm diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-seg-too-big b/test/tools/llvm-objdump/Inputs/macho-bind-seg-too-big Binary files differnew file mode 100755 index 000000000000..20be9957919e --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-seg-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-segoff-too-big b/test/tools/llvm-objdump/Inputs/macho-bind-segoff-too-big Binary files differnew file mode 100755 index 000000000000..3f8e5ee8384c --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-segoff-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-set-addend-sleb b/test/tools/llvm-objdump/Inputs/macho-bind-set-addend-sleb Binary files differnew file mode 100755 index 000000000000..726b96d3de30 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-set-addend-sleb diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-set-symbol b/test/tools/llvm-objdump/Inputs/macho-bind-set-symbol Binary files differnew file mode 100755 index 000000000000..b8201c3ad198 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-set-symbol diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-set-type-imm b/test/tools/llvm-objdump/Inputs/macho-bind-set-type-imm Binary files differnew file mode 100755 index 000000000000..002057e6b86f --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-set-type-imm diff --git a/test/tools/llvm-objdump/Inputs/macho-bind-uleb-times-skipping-uleb b/test/tools/llvm-objdump/Inputs/macho-bind-uleb-times-skipping-uleb Binary files differnew file mode 100755 index 000000000000..81ab8130f66a --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-bind-uleb-times-skipping-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-do-bind-no-dylib-ordinal b/test/tools/llvm-objdump/Inputs/macho-do-bind-no-dylib-ordinal Binary files differnew file mode 100755 index 000000000000..77daede78684 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-do-bind-no-dylib-ordinal diff --git a/test/tools/llvm-objdump/Inputs/macho-do-bind-no-symbol b/test/tools/llvm-objdump/Inputs/macho-do-bind-no-symbol Binary files differnew file mode 100755 index 000000000000..0592b9bfe407 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-do-bind-no-symbol diff --git a/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-add-addr-imm-scaled b/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-add-addr-imm-scaled Binary files differnew file mode 100755 index 000000000000..a7d5abeef743 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-add-addr-imm-scaled diff --git a/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-uleb-times-skipping-uleb b/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-uleb-times-skipping-uleb Binary files differnew file mode 100755 index 000000000000..1f0288342c48 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-lazy-do-bind-uleb-times-skipping-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-lazy-do_bind_add_addr_uleb b/test/tools/llvm-objdump/Inputs/macho-lazy-do_bind_add_addr_uleb Binary files differnew file mode 100755 index 000000000000..63f034688ff2 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-lazy-do_bind_add_addr_uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-imm-scaled b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-imm-scaled Binary files differnew file mode 100755 index 000000000000..6b0c1bd4566d --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-imm-scaled diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb Binary files differnew file mode 100755 index 000000000000..e409590dc2dc --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb-too-big b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb-too-big Binary files differnew file mode 100755 index 000000000000..68b72ec6a3b5 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-add-addr-uleb-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-bad-opcode-value b/test/tools/llvm-objdump/Inputs/macho-rebase-bad-opcode-value Binary files differnew file mode 100755 index 000000000000..59e0d4fe619b --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-bad-opcode-value diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-imm-times b/test/tools/llvm-objdump/Inputs/macho-rebase-imm-times Binary files differnew file mode 100755 index 000000000000..be2286baf6b3 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-imm-times diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-seg-too-big b/test/tools/llvm-objdump/Inputs/macho-rebase-seg-too-big Binary files differnew file mode 100755 index 000000000000..12b52328a968 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-seg-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-segoff-too-big b/test/tools/llvm-objdump/Inputs/macho-rebase-segoff-too-big Binary files differnew file mode 100755 index 000000000000..4dfb19dea80f --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-segoff-too-big diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-set-type-imm b/test/tools/llvm-objdump/Inputs/macho-rebase-set-type-imm Binary files differnew file mode 100755 index 000000000000..947db0ee915f --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-set-type-imm diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-malformed-uleb128 b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-malformed-uleb128 Binary files differnew file mode 100755 index 000000000000..045f425b2233 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-malformed-uleb128 diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times Binary files differnew file mode 100755 index 000000000000..c12f256f6600 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times diff --git a/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times-skipping-uleb b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times-skipping-uleb Binary files differnew file mode 100755 index 000000000000..5bec8ca11578 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-rebase-uleb-times-skipping-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-imm b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-imm Binary files differnew file mode 100755 index 000000000000..1d8785c55d03 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-imm diff --git a/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-uleb b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-uleb Binary files differnew file mode 100755 index 000000000000..bf7babc09e6f --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-ordinal-uleb diff --git a/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-special-imm b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-special-imm Binary files differnew file mode 100755 index 000000000000..d13f6ec981eb --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/macho-weak-bind-set-dylib-special-imm diff --git a/test/tools/llvm-objdump/Inputs/test.wasm b/test/tools/llvm-objdump/Inputs/test.wasm Binary files differindex b24ac79c7163..d3906eeaf6f8 100644 --- a/test/tools/llvm-objdump/Inputs/test.wasm +++ b/test/tools/llvm-objdump/Inputs/test.wasm diff --git a/test/tools/llvm-objdump/Mips/disassemble-all.test b/test/tools/llvm-objdump/Mips/disassemble-all.test new file mode 100644 index 000000000000..4554a0e030ae --- /dev/null +++ b/test/tools/llvm-objdump/Mips/disassemble-all.test @@ -0,0 +1,16 @@ +# RUN: yaml2obj %s | llvm-objdump -D - + +# Test that -D does not crash llvm-objdump encounters a section who size is a +# not a multiple of the size of an instruction. + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_MIPS +Sections: + - Name: .note.llvm.crash + Type: SHT_NOTE + Address: 0x0 + Content: 002E746578 diff --git a/test/tools/llvm-objdump/Mips/lit.local.cfg b/test/tools/llvm-objdump/Mips/lit.local.cfg new file mode 100644 index 000000000000..a3183a25afaa --- /dev/null +++ b/test/tools/llvm-objdump/Mips/lit.local.cfg @@ -0,0 +1,3 @@ +if not 'Mips' in config.root.targets: + config.unsupported = True + diff --git a/test/tools/llvm-objdump/X86/Inputs/Objc2.64bit.obj.dylib-x86_64 b/test/tools/llvm-objdump/X86/Inputs/Objc2.64bit.obj.dylib-x86_64 Binary files differnew file mode 100755 index 000000000000..07d465bfb633 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/Objc2.64bit.obj.dylib-x86_64 diff --git a/test/tools/llvm-objdump/X86/Inputs/macho-invalid-bind-entry b/test/tools/llvm-objdump/X86/Inputs/macho-invalid-bind-entry Binary files differnew file mode 100644 index 000000000000..afdd0838c911 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/macho-invalid-bind-entry diff --git a/test/tools/llvm-objdump/X86/Inputs/nofirst-symbol.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/nofirst-symbol.macho-x86_64 Binary files differnew file mode 100644 index 000000000000..4d1ef25e6769 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/nofirst-symbol.macho-x86_64 diff --git a/test/tools/llvm-objdump/X86/Inputs/note.macho-x86 b/test/tools/llvm-objdump/X86/Inputs/note.macho-x86 Binary files differnew file mode 100644 index 000000000000..588a09d1e343 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/note.macho-x86 diff --git a/test/tools/llvm-objdump/X86/Inputs/openbsd-phdrs.elf-x86-64 b/test/tools/llvm-objdump/X86/Inputs/openbsd-phdrs.elf-x86-64 Binary files differnew file mode 100644 index 000000000000..dab75bf96692 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/openbsd-phdrs.elf-x86-64 diff --git a/test/tools/llvm-objdump/X86/Inputs/phdr-note.elf-x86-64 b/test/tools/llvm-objdump/X86/Inputs/phdr-note.elf-x86-64 Binary files differnew file mode 100644 index 000000000000..2825c6840ca8 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/phdr-note.elf-x86-64 diff --git a/test/tools/llvm-objdump/X86/Inputs/phdrs.elf-x86-64 b/test/tools/llvm-objdump/X86/Inputs/phdrs.elf-x86-64 Binary files differnew file mode 100644 index 000000000000..078574ab5801 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/phdrs.elf-x86-64 diff --git a/test/tools/llvm-objdump/X86/Inputs/stripped-elf.so b/test/tools/llvm-objdump/X86/Inputs/stripped-elf.so Binary files differnew file mode 100644 index 000000000000..b88b77501d9f --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/stripped-elf.so diff --git a/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64 Binary files differnew file mode 100644 index 000000000000..a7f122b55084 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/stub-nosyms.macho-x86_64 diff --git a/test/tools/llvm-objdump/X86/Inputs/thread.macho-i386 b/test/tools/llvm-objdump/X86/Inputs/thread.macho-i386 Binary files differnew file mode 100755 index 000000000000..f4b805d9b032 --- /dev/null +++ b/test/tools/llvm-objdump/X86/Inputs/thread.macho-i386 diff --git a/test/tools/llvm-objdump/X86/invalid-macho-build-version.yaml b/test/tools/llvm-objdump/X86/invalid-macho-build-version.yaml new file mode 100644 index 000000000000..a81bb2dea600 --- /dev/null +++ b/test/tools/llvm-objdump/X86/invalid-macho-build-version.yaml @@ -0,0 +1,44 @@ +# RUN: yaml2obj %s | not llvm-objdump -macho -private-headers - + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000004 + ncmds: 2 + sizeofcmds: 192 + flags: 0x00000000 + reserved: 0 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 152 + segname: __TEXT + vmaddr: 4294967296 + vmsize: 8192 + fileoff: 0 + filesize: 3099 + maxprot: 7 + initprot: 5 + nsects: 1 + flags: 0 + Sections: + - sectname: __text + segname: __TEXT + addr: 0x0000000100001160 + size: 3099 + offset: 0x00001160 + align: 4 + reloff: 0x00000000 + nreloc: 0 + flags: 0x80000400 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - cmd: LC_BUILD_VERSION + cmdsize: 80 + platform: 2 + minos: 0x00080000 + sdk: 0x00090000 + ntools: 0 +... diff --git a/test/tools/llvm-objdump/X86/macho-build-version.yaml b/test/tools/llvm-objdump/X86/macho-build-version.yaml new file mode 100644 index 000000000000..acefb6956d11 --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-build-version.yaml @@ -0,0 +1,57 @@ +# RUN: yaml2obj %s | llvm-objdump -macho -private-headers - | FileCheck %s + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000004 + ncmds: 2 + sizeofcmds: 192 + flags: 0x00000000 + reserved: 0 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 152 + segname: __TEXT + vmaddr: 4294967296 + vmsize: 8192 + fileoff: 0 + filesize: 3099 + maxprot: 7 + initprot: 5 + nsects: 1 + flags: 0 + Sections: + - sectname: __text + segname: __TEXT + addr: 0x0000000100001160 + size: 3099 + offset: 0x00001160 + align: 4 + reloff: 0x00000000 + nreloc: 0 + flags: 0x80000400 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - cmd: LC_BUILD_VERSION + cmdsize: 32 + platform: 2 + minos: 0x00080000 + sdk: 0x00090000 + ntools: 1 + Tools: + - tool: 1 + version: 0x00000000 +... + +CHECK: Load command 1 +CHECK-NEXT: cmd LC_BUILD_VERSION +CHECK-NEXT: cmdsize 32 +CHECK-NEXT: platform ios +CHECK-NEXT: sdk 9.0 +CHECK-NEXT: minos 8.0 +CHECK-NEXT: ntools 1 +CHECK-NEXT: tool clang +CHECK-NEXT: version n/a diff --git a/test/tools/llvm-objdump/X86/macho-info-plist-nofollow.test b/test/tools/llvm-objdump/X86/macho-info-plist-nofollow.test new file mode 100644 index 000000000000..12ad166c5a2f --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-info-plist-nofollow.test @@ -0,0 +1,10 @@ +# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -info-plist - | FileCheck %s + +.section __TEXT, __info_plist +.ascii "This is the (__TEXT,__info_plist) section\n" +.section __TEXT, __follow +.asciz "This is the (__TEXT,__follow) section\n" + +# CHECK: Contents of (__TEXT,__info_plist) section +# CHECK: This is the (__TEXT,__info_plist) section +# CHECK-NOT: This is the (__TEXT,__follow) section diff --git a/test/tools/llvm-objdump/X86/macho-nofirst-symbol-disassembly.test b/test/tools/llvm-objdump/X86/macho-nofirst-symbol-disassembly.test new file mode 100644 index 000000000000..98964ac8047a --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-nofirst-symbol-disassembly.test @@ -0,0 +1,8 @@ +// RUN: llvm-objdump -d -m %p/Inputs/nofirst-symbol.macho-x86_64 | FileCheck %s + +CHECK: 0: 90 nop +CHECK: _foo: +CHECK: 1: c3 retq +CHECK: _bar: +CHECK: 2: 90 nop +CHECK: 3: c3 retq diff --git a/test/tools/llvm-objdump/X86/macho-objc-meta-data.test b/test/tools/llvm-objdump/X86/macho-objc-meta-data.test index f4abf6cdb49e..0bdb39cdff84 100644 --- a/test/tools/llvm-objdump/X86/macho-objc-meta-data.test +++ b/test/tools/llvm-objdump/X86/macho-objc-meta-data.test @@ -5,6 +5,7 @@ # RUN: llvm-objdump -m -objc-meta-data %p/Inputs/Objc1.32bit.exe.macho-i386 | FileCheck %s -check-prefix=OBJC1_32BIT_EXE # RUN: llvm-objdump -m -objc-meta-data %p/Inputs/Objc1.32bit.obj.macho-i386 | FileCheck %s -check-prefix=OBJC1_32BIT_OBJ # RUN: llvm-objdump -m -section __OBJC,__protocol %p/Inputs/Objc1.32bit.exe.macho-i386 | FileCheck %s -check-prefix=PROTOCOL +# RUN: llvm-objdump -m -objc-meta-data %p/Inputs/Objc2.64bit.obj.dylib-x86_64 | FileCheck %s -check-prefix=OBJC2_64BIT_DYLIB OBJC2_64BIT_EXE: Contents of (__DATA,__objc_classlist) section OBJC2_64BIT_EXE: 0000000100002028 0x1000029f0 @@ -1037,3 +1038,64 @@ PROTOCOL: types 0x00002e04 @8@0:4 PROTOCOL: class_methods 0x00000000 (not in an __OBJC section) PROTOCOL: instance_methods 0x00000000 (not in an __OBJC section) PROTOCOL: class_methods 0x00000000 (not in an __OBJC section) + +OBJC2_64BIT_DYLIB: Contents of (__DATA_CONST,__objc_classlist) section +OBJC2_64BIT_DYLIB: 000000000000c038 0x8030 _OBJC_CLASS_$_Test +OBJC2_64BIT_DYLIB: isa 0x8008 _OBJC_METACLASS_$_Test +OBJC2_64BIT_DYLIB: superclass 0x0 +OBJC2_64BIT_DYLIB: cache 0x0 +OBJC2_64BIT_DYLIB: vtable 0x0 +OBJC2_64BIT_DYLIB: data 0xc120 (struct class_ro_t *) +OBJC2_64BIT_DYLIB: flags 0x0 +OBJC2_64BIT_DYLIB: instanceStart 8 +OBJC2_64BIT_DYLIB: instanceSize 16 +OBJC2_64BIT_DYLIB: reserved 0x0 +OBJC2_64BIT_DYLIB: ivarLayout 0x0 +OBJC2_64BIT_DYLIB: name 0x4f59 Test +OBJC2_64BIT_DYLIB: baseMethods 0xc090 (struct method_list_t *) +OBJC2_64BIT_DYLIB: entsize 24 +OBJC2_64BIT_DYLIB: count 3 +OBJC2_64BIT_DYLIB: name 0x4f5e testMethod +OBJC2_64BIT_DYLIB: types 0x4f89 v16@0:8 +OBJC2_64BIT_DYLIB: imp -[Test testMethod] +OBJC2_64BIT_DYLIB: name 0x4f69 testProp +OBJC2_64BIT_DYLIB: types 0x4f91 Q16@0:8 +OBJC2_64BIT_DYLIB: imp -[Test testProp] +OBJC2_64BIT_DYLIB: name 0x4f72 setTestProp: +OBJC2_64BIT_DYLIB: types 0x4f99 v24@0:8Q16 +OBJC2_64BIT_DYLIB: imp -[Test setTestProp:] +OBJC2_64BIT_DYLIB: baseProtocols 0x0 +OBJC2_64BIT_DYLIB: ivars 0xc0e0 +OBJC2_64BIT_DYLIB: entsize 32 +OBJC2_64BIT_DYLIB: count 1 +OBJC2_64BIT_DYLIB: offset 0x8000 8 +OBJC2_64BIT_DYLIB: name 0x4f7f _testProp +OBJC2_64BIT_DYLIB: type 0x4fa4 Q +OBJC2_64BIT_DYLIB: alignment 3 +OBJC2_64BIT_DYLIB: size 8 +OBJC2_64BIT_DYLIB: weakIvarLayout 0x0 +OBJC2_64BIT_DYLIB: baseProperties 0xc108 +OBJC2_64BIT_DYLIB: entsize 16 +OBJC2_64BIT_DYLIB: count 1 +OBJC2_64BIT_DYLIB: name 0x4f42 testProp +OBJC2_64BIT_DYLIB: attributes 0x4f4b TQ,V_testProp +OBJC2_64BIT_DYLIB: Meta Class +OBJC2_64BIT_DYLIB: isa 0x0 +OBJC2_64BIT_DYLIB: superclass 0x0 +OBJC2_64BIT_DYLIB: cache 0x0 +OBJC2_64BIT_DYLIB: vtable 0x0 +OBJC2_64BIT_DYLIB: data 0xc048 (struct class_ro_t *) +OBJC2_64BIT_DYLIB: flags 0x1 RO_META +OBJC2_64BIT_DYLIB: instanceStart 40 +OBJC2_64BIT_DYLIB: instanceSize 40 +OBJC2_64BIT_DYLIB: reserved 0x0 +OBJC2_64BIT_DYLIB: ivarLayout 0x0 +OBJC2_64BIT_DYLIB: name 0x4f59 Test +OBJC2_64BIT_DYLIB: baseMethods 0x0 (struct method_list_t *) +OBJC2_64BIT_DYLIB: baseProtocols 0x0 +OBJC2_64BIT_DYLIB: ivars 0x0 +OBJC2_64BIT_DYLIB: weakIvarLayout 0x0 +OBJC2_64BIT_DYLIB: baseProperties 0x0 +OBJC2_64BIT_DYLIB: Contents of (__DATA_CONST,__objc_imageinfo) section +OBJC2_64BIT_DYLIB: version 0 +OBJC2_64BIT_DYLIB: flags 0x40 diff --git a/test/tools/llvm-objdump/X86/macho-print-thread.test b/test/tools/llvm-objdump/X86/macho-print-thread.test new file mode 100644 index 000000000000..12f71de1db2f --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-print-thread.test @@ -0,0 +1,11 @@ +RUN: llvm-objdump -macho -private-headers %p/Inputs/thread.macho-i386 | FileCheck %s + +CHECK: Load command 9 +CHECK: cmd LC_UNIXTHREAD +CHECK: cmdsize 80 +CHECK: flavor i386_THREAD_STATE +CHECK: count i386_THREAD_STATE_COUNT +CHECK: eax 0x00000000 ebx 0x00000000 ecx 0x00000000 edx 0x00000000 +CHECK: edi 0x00000000 esi 0x00000000 ebp 0x00000000 esp 0x00000000 +CHECK: ss 0x00000000 eflags 0x00000000 eip 0x00001db0 cs 0x00000000 +CHECK: ds 0x00000000 es 0x00000000 fs 0x00000000 gs 0x00000000 diff --git a/test/tools/llvm-objdump/X86/macho-private-headers.test b/test/tools/llvm-objdump/X86/macho-private-headers.test index e0c68d7cd97a..d1ea0cf140b7 100644 --- a/test/tools/llvm-objdump/X86/macho-private-headers.test +++ b/test/tools/llvm-objdump/X86/macho-private-headers.test @@ -23,6 +23,8 @@ // RUN: | FileCheck %s -check-prefix=NON_VERBOSE // RUN: llvm-objdump -p %p/Inputs/codesig.macho-x86_64 \ // RUN: | FileCheck %s -check-prefix=CODESIG +// RUN: llvm-objdump -p %p/Inputs/note.macho-x86 \ +// RUN: | FileCheck %s -check-prefix=NOTE CHECK: Mach header CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags @@ -544,3 +546,9 @@ CODESIG: cmd LC_CODE_SIGNATURE CODESIG: cmdsize 16 CODESIG: dataoff 8496 CODESIG: datasize 64 + +NOTE: cmd LC_NOTE +NOTE: cmdsize 40 +NOTE: data_owner DATA OWNER +NOTE: offset 68 +NOTE: size 8 diff --git a/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test b/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test new file mode 100644 index 000000000000..af66b0e7a63f --- /dev/null +++ b/test/tools/llvm-objdump/X86/macho-stub-nosyms-disassembly.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/stub-nosyms.macho-x86_64 | FileCheck %s + +CHECK: 0000000000000001 callq 0x7 ## symbol stub for: _foo diff --git a/test/tools/llvm-objdump/X86/malformed-machos.test b/test/tools/llvm-objdump/X86/malformed-machos.test index 83ebfc4364e6..292666a37254 100644 --- a/test/tools/llvm-objdump/X86/malformed-machos.test +++ b/test/tools/llvm-objdump/X86/malformed-machos.test @@ -63,3 +63,6 @@ INVALID-SYMBOL-STRX-UNIVERSAL: macho-invalid-symbol-strx-universal' (for archite RUN: not llvm-objdump -macho -disassemble %p/Inputs/macho-invalid-symbol-lib_ordinal 2>&1 | FileCheck -check-prefix INVALID-SYMBOL-LIB_ORDINAL %s INVALID-SYMBOL-LIB_ORDINAL: macho-invalid-symbol-lib_ordinal': truncated or malformed object (bad library ordinal: 7 for symbol at index 2) + +RUN: not llvm-objdump -macho -objc-meta-data %p/Inputs/macho-invalid-bind-entry 2>&1 | FileCheck -check-prefix INVALID-BIND-ENTRY %s +INVALID-BIND-ENTRY: macho-invalid-bind-entry': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad library ordinal: 83 (max 0) for opcode at: 0x0) diff --git a/test/tools/llvm-objdump/X86/openbsd-headers.test b/test/tools/llvm-objdump/X86/openbsd-headers.test index 48f496ca616e..fb6072efabb7 100644 --- a/test/tools/llvm-objdump/X86/openbsd-headers.test +++ b/test/tools/llvm-objdump/X86/openbsd-headers.test @@ -9,7 +9,7 @@ ## 0x65a3dbe7 is the value of PT_OPENBSD_WXNEEDED, ## 0x65a41be6 is the value of PT_OPENBSD_BOOTDATA ## SECTIONS { . = SIZEOF_HEADERS; .all : { *(.*) } : text } -RUN: llvm-objdump -p %p/../../../Object/Inputs/openbsd-phdrs.elf-x86-64 \ +RUN: llvm-objdump -p %p/Inputs/openbsd-phdrs.elf-x86-64 \ RUN: | FileCheck %s CHECK: OPENBSD_RANDOMIZE off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**3 diff --git a/test/tools/llvm-objdump/X86/phdrs.test b/test/tools/llvm-objdump/X86/phdrs.test index 646f6af8733a..63b8fdeb6ef6 100644 --- a/test/tools/llvm-objdump/X86/phdrs.test +++ b/test/tools/llvm-objdump/X86/phdrs.test @@ -11,7 +11,7 @@ ## d: ## .long 2 ## -RUN: llvm-objdump -p %p/../../../Object/Inputs/phdrs.elf-x86-64 \ +RUN: llvm-objdump -p %p/Inputs/phdrs.elf-x86-64 \ RUN: | FileCheck %s CHECK: RELRO off 0x0000000000001000 vaddr 0x0000000000201000 paddr 0x0000000000201000 align 2**0 @@ -25,7 +25,7 @@ CHECK-NEXT: filesz 0x0000000000000004 memsz 0x0000000000001000 flags r-- ## .section .note.test,"a",@note ## .quad 42 -RUN: llvm-objdump -p %p/../../../Object/Inputs/phdr-note.elf-x86-64 \ +RUN: llvm-objdump -p %p/Inputs/phdr-note.elf-x86-64 \ RUN: | FileCheck %s --check-prefix=NOTE NOTE: NOTE off 0x0000000000000200 vaddr 0x0000000000000200 paddr 0x0000000000000200 align 2**0 diff --git a/test/tools/llvm-objdump/X86/stripped-shared.test b/test/tools/llvm-objdump/X86/stripped-shared.test new file mode 100644 index 000000000000..c57155f4cd7b --- /dev/null +++ b/test/tools/llvm-objdump/X86/stripped-shared.test @@ -0,0 +1,10 @@ +// This test checks that dynamic symbols are used when disassembling elf files. +// RUN: llvm-objdump -d %p/Inputs/stripped-elf.so | FileCheck %s + +# CHECK: .init +# CHECK: .plt +# CHECK: .text +# CHECK: func0 +# CHECK: func1 +# CHECK: func2 +# CHECK: .fini diff --git a/test/tools/llvm-objdump/macho-bad-bind.test b/test/tools/llvm-objdump/macho-bad-bind.test new file mode 100644 index 000000000000..98fd08f4009e --- /dev/null +++ b/test/tools/llvm-objdump/macho-bad-bind.test @@ -0,0 +1,101 @@ +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-dylib-ordinal-uleb 2>&1 | FileCheck -check-prefix DYLIB-ORDINAL-ULEB %s +DYLIB-ORDINAL-ULEB: macho-bind-dylib-ordinal-uleb': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad library ordinal: 355 (max 1) for opcode at: 0x0) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-dylib-ordinal-uleb-malformed-uleb128 2>&1 | FileCheck -check-prefix DYLIB-ORDINAL-ULEB-MALFORMED-ULEB128 %s +DYLIB-ORDINAL-ULEB-MALFORMED-ULEB128: macho-bind-dylib-ordinal-uleb-malformed-uleb128': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB malformed uleb128, extends past end for opcode at: 0x0) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-dylib-ordinal-uleb-too-big 2>&1 | FileCheck -check-prefix DYLIB-ORDINAL-ULEB-TOO-BIG %s +DYLIB-ORDINAL-ULEB-TOO-BIG: macho-bind-dylib-ordinal-uleb-too-big': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB uleb128 too big for uint64 for opcode at: 0x0) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-dylib-special-imm 2>&1 | FileCheck -check-prefix DYLIB-SPECIAL-IMM %s +DYLIB-SPECIAL-IMM: macho-bind-dylib-special-imm': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_SPECIAL_IMM unknown special ordinal: -5 for opcode at: 0x0) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-set-symbol 2>&1 | FileCheck -check-prefix BIND-SET-SYMBOL %s +BIND-SET-SYMBOL: macho-bind-set-symbol': truncated or malformed object (for BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM symbol name extends past opcodes for opcode at: 0x2) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-set-type-imm 2>&1 | FileCheck -check-prefix SET-TYPE-IMM %s +SET-TYPE-IMM: macho-bind-set-type-imm': truncated or malformed object (for BIND_OPCODE_SET_TYPE_IMM bad bind type: 5 for opcode at: 0x14) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-set-addend-sleb 2>&1 | FileCheck -check-prefix SET-ADDEND-SLEB %s +SET-ADDEND-SLEB: macho-bind-set-addend-sleb': truncated or malformed object (for BIND_OPCODE_SET_ADDEND_SLEB malformed sleb128, extends past end for opcode at: 0x14) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-seg-too-big 2>&1 | FileCheck -check-prefix SEG-TOO-BIG %s +SEG-TOO-BIG: macho-bind-seg-too-big': truncated or malformed object (for BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB bad segIndex (too large) for opcode at: 0x15) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-segoff-too-big 2>&1 | FileCheck -check-prefix SEGOFF-TOO-BIG %s +SEGOFF-TOO-BIG: macho-bind-segoff-too-big': truncated or malformed object (for BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB bad segOffset, too large for opcode at: 0x15) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-add_addr_uleb 2>&1 | FileCheck -check-prefix ADD_ADDR_ULEB %s +ADD_ADDR_ULEB: macho-bind-add_addr_uleb': truncated or malformed object (for BIND_OPCODE_ADD_ADDR_ULEB bad segOffset, too large for opcode at: 0x17) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-do-bind-no-segIndex 2>&1 | FileCheck -check-prefix BIND-NO-SEGINDEX %s +BIND-NO-SEGINDEX: macho-bind-do-bind-no-segIndex': truncated or malformed object (for BIND_OPCODE_DO_BIND missing preceding *_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB for opcode at: 0x15) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-bind-add-addr-uleb 2>&1 | FileCheck -check-prefix ADD-ADDR-ULEB %s +ADD-ADDR-ULEB: macho-bind-bind-add-addr-uleb': truncated or malformed object (for BIND_OPCODE_ADD_ADDR_ULEB (after adding ULEB) bad segOffset, too large for opcode at: 0x18) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-add-addr-imm-scaled 2>&1 | FileCheck -check-prefix ADD-ADDR-IMM-SCALED %s +ADD-ADDR-IMM-SCALED: macho-bind-add-addr-imm-scaled': truncated or malformed object (for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED (after adding immediate times the pointer size) bad segOffset, too large for opcode at: 0x17) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-uleb-times-skipping-uleb 2>&1 | FileCheck -check-prefix ULEB-TIMES-SKIPPING-ULEB %s +ULEB-TIMES-SKIPPING-ULEB: macho-bind-uleb-times-skipping-uleb': truncated or malformed object (for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB bad count and skip, too large for opcode at: 0x17) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-do-bind-no-symbol 2>&1 | FileCheck -check-prefix DO-BIND-NO-SYMBOL %s +DO-BIND-NO-SYMBOL: macho-do-bind-no-symbol': truncated or malformed object (for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for opcode at: 0x5) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-do-bind-no-dylib-ordinal 2>&1 | FileCheck -check-prefix DO-BIND-NO-DYLIB-ORDINAL %s +DO-BIND-NO-DYLIB-ORDINAL: macho-do-bind-no-dylib-ordinal': truncated or malformed object (for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode at: 0x15) + +RUN: not llvm-objdump -macho -bind %p/Inputs/macho-bind-bad-opcode-value 2>&1 | FileCheck -check-prefix BAD-OPCODE-VALUE %s +BAD-OPCODE-VALUE: macho-bind-bad-opcode-value': truncated or malformed object (bad bind info (bad opcode value 0xD0 for opcode at: 0x18) + +RUN: not llvm-objdump -macho -lazy-bind %p/Inputs/macho-lazy-do_bind_add_addr_uleb 2>&1 | FileCheck -check-prefix LAZY_DO_BIND_ADD_ADDR_ULEB %s +LAZY_DO_BIND_ADD_ADDR_ULEB: macho-lazy-do_bind_add_addr_uleb': truncated or malformed object (BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB not allowed in lazy bind table for opcode at: 0xC) + +RUN: not llvm-objdump -macho -lazy-bind %p/Inputs/macho-lazy-do-bind-add-addr-imm-scaled 2>&1 | FileCheck -check-prefix LAZY-DO-BIND-ADD-ADDR-IMM-SCALED %s +LAZY-DO-BIND-ADD-ADDR-IMM-SCALED: macho-lazy-do-bind-add-addr-imm-scaled': truncated or malformed object (BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED not allowed in lazy bind table for opcode at: 0xC) + +RUN: not llvm-objdump -macho -lazy-bind %p/Inputs/macho-lazy-do-bind-uleb-times-skipping-uleb 2>&1 | FileCheck -check-prefix LAZY-DO-BIND-ULEB-TIMES-SKIPPING-ULEB %s +LAZY-DO-BIND-ULEB-TIMES-SKIPPING-ULEB: macho-lazy-do-bind-uleb-times-skipping-uleb': truncated or malformed object (BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB not allowed in lazy bind table for opcode at: 0xC) + +RUN: not llvm-objdump -macho -weak-bind %p/Inputs/macho-weak-bind-set-dylib-ordinal-imm 2>&1 | FileCheck -check-prefix WEAK-BIND-SET-DYLIB-ORDINAL-IMM %s +WEAK-BIND-SET-DYLIB-ORDINAL-IMM: macho-weak-bind-set-dylib-ordinal-imm': truncated or malformed object (BIND_OPCODE_SET_DYLIB_ORDINAL_IMM not allowed in weak bind table for opcode at: 0x2) + +RUN: not llvm-objdump -macho -weak-bind %p/Inputs/macho-weak-bind-set-dylib-ordinal-uleb 2>&1 | FileCheck -check-prefix WEAK-BIND-SET-DYLIB-ORDINAL-ULEB %s +WEAK-BIND-SET-DYLIB-ORDINAL-ULEB: macho-weak-bind-set-dylib-ordinal-uleb': truncated or malformed object (BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB not allowed in weak bind table for opcode at: 0x2) + +RUN: not llvm-objdump -macho -weak-bind %p/Inputs/macho-weak-bind-set-dylib-special-imm 2>&1 | FileCheck -check-prefix WEAK-BIND-SET-DYLIB-SPECIAL-IMM %s +WEAK-BIND-SET-DYLIB-SPECIAL-IMM: macho-weak-bind-set-dylib-special-imm': truncated or malformed object (BIND_OPCODE_SET_DYLIB_SPECIAL_IMM not allowed in weak bind table for opcode at: 0x2) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-set-type-imm 2>&1 | FileCheck -check-prefix REBASE-SET-TYPE-IMM %s +REBASE-SET-TYPE-IMM: macho-rebase-set-type-imm': truncated or malformed object (for REBASE_OPCODE_SET_TYPE_IMM bad bind type: 5 for opcode at: 0x0) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-uleb-malformed-uleb128 2>&1 | FileCheck -check-prefix REBASE-ULEB-MALFORMED-ULEB128 %s +REBASE-ULEB-MALFORMED-ULEB128: macho-rebase-uleb-malformed-uleb128': truncated or malformed object (for REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB malformed uleb128, extends past end for opcode at: 0x1) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-seg-too-big 2>&1 | FileCheck -check-prefix REBASE-SEG-TOO-BIG %s +REBASE-SEG-TOO-BIG: macho-rebase-seg-too-big': truncated or malformed object (for REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB bad segIndex (too large) for opcode at: 0x1) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-segoff-too-big 2>&1 | FileCheck -check-prefix REBASE-SEGOFF-TOO-BIG %s +REBASE-SEGOFF-TOO-BIG: macho-rebase-segoff-too-big': truncated or malformed object (for REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB bad segOffset, too large for opcode at: 0x1) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-add-addr-uleb 2>&1 | FileCheck -check-prefix REBASE-ADD-ADDR-ULEB %s +REBASE-ADD-ADDR-ULEB: macho-rebase-add-addr-uleb': truncated or malformed object (for REBASE_OPCODE_ADD_ADDR_ULEB bad segOffset, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-add-addr-imm-scaled 2>&1 | FileCheck -check-prefix REBASE-ADD-ADDR-IMM-SCALED %s +REBASE-ADD-ADDR-IMM-SCALED: macho-rebase-add-addr-imm-scaled': truncated or malformed object (for REBASE_OPCODE_ADD_ADDR_IMM_SCALED (after adding immediate times the pointer size) bad segOffset, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-imm-times 2>&1 | FileCheck -check-prefix REBASE-IMM-TIMES %s +REBASE-IMM-TIMES: macho-rebase-imm-times': truncated or malformed object (for REBASE_OPCODE_DO_REBASE_IMM_TIMES bad count and skip, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-uleb-times 2>&1 | FileCheck -check-prefix REBASE-ULEB-TIMES %s +REBASE-ULEB-TIMES: macho-rebase-uleb-times': truncated or malformed object (for REBASE_OPCODE_DO_REBASE_ULEB_TIMES bad count and skip, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-add-addr-uleb-too-big 2>&1 | FileCheck -check-prefix REBASE-ADD-ADDR-ULEB-TOO-BIG %s +REBASE-ADD-ADDR-ULEB-TOO-BIG: macho-rebase-add-addr-uleb-too-big': truncated or malformed object (for REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB bad count and skip, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-uleb-times-skipping-uleb 2>&1 | FileCheck -check-prefix REBASE-ULEB-TIMES-SKIPPING-ULEB %s +REBASE-ULEB-TIMES-SKIPPING-ULEB: macho-rebase-uleb-times-skipping-uleb': truncated or malformed object (for REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB bad count and skip, too large for opcode at: 0x3) + +RUN: not llvm-objdump -macho -rebase %p/Inputs/macho-rebase-bad-opcode-value 2>&1 | FileCheck -check-prefix REBASE-BAD-OPCODE-VALUE %s +REBASE-BAD-OPCODE-VALUE: macho-rebase-bad-opcode-value': truncated or malformed object (bad rebase info (bad opcode value 0xD0 for opcode at: 0x4) diff --git a/test/tools/llvm-objdump/macho-bad-ordinal.test b/test/tools/llvm-objdump/macho-bad-ordinal.test index 16badcc878d8..fb49f77f0751 100644 --- a/test/tools/llvm-objdump/macho-bad-ordinal.test +++ b/test/tools/llvm-objdump/macho-bad-ordinal.test @@ -1,6 +1,4 @@ -# RUN: llvm-objdump -macho -bind -lazy-bind %p/Inputs/bad-ordinal.macho-x86_64 \ -# RUN: | FileCheck %s +# RUN: not llvm-objdump -macho -lazy-bind %p/Inputs/bad-ordinal.macho-x86_64 \ +# RUN: 2>&1 | FileCheck %s - -# CHECK: __DATA __nl_symbol_ptr 0x100001000 pointer 0 <<bad library ordinal>> dyld_stub_binder -# CHECK: __DATA __la_symbol_ptr 0x100001010 <<bad library ordinal>> _printf +# CHECK: bad-ordinal.macho-x86_64': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad library ordinal: 2 (max 1) for opcode at: 0x2) diff --git a/test/tools/llvm-objdump/malformed-macho.test b/test/tools/llvm-objdump/malformed-macho.test index 0bc2ce8e898f..924d58a1df24 100644 --- a/test/tools/llvm-objdump/malformed-macho.test +++ b/test/tools/llvm-objdump/malformed-macho.test @@ -1,2 +1,3 @@ -RUN: not llvm-objdump -macho -s %p/Inputs/malformed-macho.bin 2>&1 | FileCheck %s -check-prefix=MALFORMED -MALFORMED: The file was not recognized as a valid object file +RUN: llvm-objdump -macho -private-header %p/Inputs/malformed-macho.bin %p/Inputs/empty.macho-armv7 2>&1 | FileCheck %s -check-prefix=MALFORMED +MALFORMED: is not an object file +MALFORMED-NEXT: Mach header diff --git a/test/tools/llvm-objdump/wasm.txt b/test/tools/llvm-objdump/wasm.txt index ebda2249f8b8..4aa40c6c9df8 100644 --- a/test/tools/llvm-objdump/wasm.txt +++ b/test/tools/llvm-objdump/wasm.txt @@ -9,12 +9,12 @@ # CHECK: 4 EXPORT 0000000e 0000000000000000 # CHECK: 5 ELEM 00000007 0000000000000000 # CHECK: 6 CODE 0000002a 0000000000000000 TEXT -# CHECK: 7 name 0000002c 0000000000000000 +# CHECK: 7 name 0000003c 0000000000000000 # RUN: llvm-objdump -p %p/Inputs/test.wasm | FileCheck %s -check-prefix CHECK-HEADER # CHECK-HEADER: Program Header: -# CHECK-HEADER: Version: 0xd +# CHECK-HEADER: Version: 0x1 # RUN: llvm-objdump -s --section=CODE %p/Inputs/test.wasm | FileCheck %s -check-prefix CHECK-SECTIONS |