diff options
Diffstat (limited to 'test/tools')
-rw-r--r-- | test/tools/dsymutil/Inputs/frame-dw2.ll | 71 | ||||
-rw-r--r-- | test/tools/dsymutil/Inputs/frame-dw4.ll | 71 | ||||
-rw-r--r-- | test/tools/dsymutil/Inputs/frame.c | 10 | ||||
-rw-r--r-- | test/tools/dsymutil/X86/basic-linking-x86.test | 4 | ||||
-rw-r--r-- | test/tools/dsymutil/X86/basic-lto-linking-x86.test | 1 | ||||
-rw-r--r-- | test/tools/dsymutil/X86/frame-1.test | 32 | ||||
-rw-r--r-- | test/tools/dsymutil/X86/frame-2.test | 47 | ||||
-rw-r--r-- | test/tools/dsymutil/debug-map-parsing.test | 92 | ||||
-rw-r--r-- | test/tools/dsymutil/yaml-object-address-rewrite.test | 44 | ||||
-rw-r--r-- | test/tools/llvm-objdump/invalid-input.test | 6 | ||||
-rw-r--r-- | test/tools/llvm-readobj/elf-dtflags.test | 4 | ||||
-rw-r--r-- | test/tools/llvm-readobj/sections-ext.test | 2 |
12 files changed, 337 insertions, 47 deletions
diff --git a/test/tools/dsymutil/Inputs/frame-dw2.ll b/test/tools/dsymutil/Inputs/frame-dw2.ll new file mode 100644 index 0000000000000..7ffc933973158 --- /dev/null +++ b/test/tools/dsymutil/Inputs/frame-dw2.ll @@ -0,0 +1,71 @@ +; Generated from frame.c on Darwin with '-arch i386 -g -emit-llvm' +; ModuleID = 'frame.c' +target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128" +target triple = "i386-apple-macosx10.11.0" + +; Function Attrs: nounwind ssp +define i32 @bar(i32 %b) #0 { +entry: + %b.addr = alloca i32, align 4 + %var = alloca i32, align 4 + store i32 %b, i32* %b.addr, align 4 + call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !13, metadata !14), !dbg !15 + call void @llvm.dbg.declare(metadata i32* %var, metadata !16, metadata !14), !dbg !17 + %0 = load i32, i32* %b.addr, align 4, !dbg !18 + %add = add nsw i32 %0, 1, !dbg !19 + store i32 %add, i32* %var, align 4, !dbg !17 + %call = call i32 @foo(i32* %var), !dbg !20 + ret i32 %call, !dbg !21 +} + +; Function Attrs: nounwind readnone +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +declare i32 @foo(i32*) #2 + +; Function Attrs: nounwind ssp +define i32 @baz(i32 %b) #0 { +entry: + %b.addr = alloca i32, align 4 + store i32 %b, i32* %b.addr, align 4 + call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !22, metadata !14), !dbg !23 + %0 = load i32, i32* %b.addr, align 4, !dbg !24 + %call = call i32 @bar(i32 %0), !dbg !25 + ret i32 %call, !dbg !26 +} + +attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="yonah" "target-features"="+cx16,+sse,+sse2,+sse3" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind readnone } +attributes #2 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="yonah" "target-features"="+cx16,+sse,+sse2,+sse3" "unsafe-fp-math"="false" "use-soft-float"="false" } + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!9, !10, !11} +!llvm.ident = !{!12} + +!0 = !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2) +!1 = !DIFile(filename: "frame.c", directory: "/tmp") +!2 = !{} +!3 = !{!4, !8} +!4 = !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, function: i32 (i32)* @bar, variables: !2) +!5 = !DISubroutineType(types: !6) +!6 = !{!7, !7} +!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) +!8 = !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, function: i32 (i32)* @baz, variables: !2) +!9 = !{i32 2, !"Dwarf Version", i32 2} +!10 = !{i32 2, !"Debug Info Version", i32 3} +!11 = !{i32 1, !"PIC Level", i32 2} +!12 = !{!"clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)"} +!13 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", arg: 1, scope: !4, file: !1, line: 3, type: !7) +!14 = !DIExpression() +!15 = !DILocation(line: 3, column: 13, scope: !4) +!16 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "var", scope: !4, file: !1, line: 4, type: !7) +!17 = !DILocation(line: 4, column: 6, scope: !4) +!18 = !DILocation(line: 4, column: 12, scope: !4) +!19 = !DILocation(line: 4, column: 14, scope: !4) +!20 = !DILocation(line: 5, column: 9, scope: !4) +!21 = !DILocation(line: 5, column: 2, scope: !4) +!22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", arg: 1, scope: !8, file: !1, line: 8, type: !7) +!23 = !DILocation(line: 8, column: 13, scope: !8) +!24 = !DILocation(line: 9, column: 13, scope: !8) +!25 = !DILocation(line: 9, column: 9, scope: !8) +!26 = !DILocation(line: 9, column: 2, scope: !8) diff --git a/test/tools/dsymutil/Inputs/frame-dw4.ll b/test/tools/dsymutil/Inputs/frame-dw4.ll new file mode 100644 index 0000000000000..c8674b13e585f --- /dev/null +++ b/test/tools/dsymutil/Inputs/frame-dw4.ll @@ -0,0 +1,71 @@ +; Generated from frame.c on Darwin with '-arch i386 -gdwarf-4 -emit-llvm' +; ModuleID = 'frame.c' +target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128" +target triple = "i386-apple-macosx10.11.0" + +; Function Attrs: nounwind ssp +define i32 @bar(i32 %b) #0 { +entry: + %b.addr = alloca i32, align 4 + %var = alloca i32, align 4 + store i32 %b, i32* %b.addr, align 4 + call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !13, metadata !14), !dbg !15 + call void @llvm.dbg.declare(metadata i32* %var, metadata !16, metadata !14), !dbg !17 + %0 = load i32, i32* %b.addr, align 4, !dbg !18 + %add = add nsw i32 %0, 1, !dbg !19 + store i32 %add, i32* %var, align 4, !dbg !17 + %call = call i32 @foo(i32* %var), !dbg !20 + ret i32 %call, !dbg !21 +} + +; Function Attrs: nounwind readnone +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +declare i32 @foo(i32*) #2 + +; Function Attrs: nounwind ssp +define i32 @baz(i32 %b) #0 { +entry: + %b.addr = alloca i32, align 4 + store i32 %b, i32* %b.addr, align 4 + call void @llvm.dbg.declare(metadata i32* %b.addr, metadata !22, metadata !14), !dbg !23 + %0 = load i32, i32* %b.addr, align 4, !dbg !24 + %call = call i32 @bar(i32 %0), !dbg !25 + ret i32 %call, !dbg !26 +} + +attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="yonah" "target-features"="+cx16,+sse,+sse2,+sse3" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind readnone } +attributes #2 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="yonah" "target-features"="+cx16,+sse,+sse2,+sse3" "unsafe-fp-math"="false" "use-soft-float"="false" } + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!9, !10, !11} +!llvm.ident = !{!12} + +!0 = !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2) +!1 = !DIFile(filename: "frame.c", directory: "/tmp") +!2 = !{} +!3 = !{!4, !8} +!4 = !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, function: i32 (i32)* @bar, variables: !2) +!5 = !DISubroutineType(types: !6) +!6 = !{!7, !7} +!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) +!8 = !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, function: i32 (i32)* @baz, variables: !2) +!9 = !{i32 2, !"Dwarf Version", i32 4} +!10 = !{i32 2, !"Debug Info Version", i32 3} +!11 = !{i32 1, !"PIC Level", i32 2} +!12 = !{!"clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)"} +!13 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", arg: 1, scope: !4, file: !1, line: 3, type: !7) +!14 = !DIExpression() +!15 = !DILocation(line: 3, column: 13, scope: !4) +!16 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "var", scope: !4, file: !1, line: 4, type: !7) +!17 = !DILocation(line: 4, column: 6, scope: !4) +!18 = !DILocation(line: 4, column: 12, scope: !4) +!19 = !DILocation(line: 4, column: 14, scope: !4) +!20 = !DILocation(line: 5, column: 9, scope: !4) +!21 = !DILocation(line: 5, column: 2, scope: !4) +!22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", arg: 1, scope: !8, file: !1, line: 8, type: !7) +!23 = !DILocation(line: 8, column: 13, scope: !8) +!24 = !DILocation(line: 9, column: 13, scope: !8) +!25 = !DILocation(line: 9, column: 9, scope: !8) +!26 = !DILocation(line: 9, column: 2, scope: !8) diff --git a/test/tools/dsymutil/Inputs/frame.c b/test/tools/dsymutil/Inputs/frame.c new file mode 100644 index 0000000000000..9ca082d4ae5d7 --- /dev/null +++ b/test/tools/dsymutil/Inputs/frame.c @@ -0,0 +1,10 @@ +int foo(int *f); + +int bar(int b) { + int var = b + 1; + return foo(&var); +} + +int baz(int b) { + return bar(b); +} diff --git a/test/tools/dsymutil/X86/basic-linking-x86.test b/test/tools/dsymutil/X86/basic-linking-x86.test index 1059e233f94b9..19b4e3bef6637 100644 --- a/test/tools/dsymutil/X86/basic-linking-x86.test +++ b/test/tools/dsymutil/X86/basic-linking-x86.test @@ -6,6 +6,8 @@ RUN: llvm-dsymutil -o %t2 -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_6 RUN: llvm-dwarfdump %t2 | FileCheck %s RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE +RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dsymutil -y -o - - | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC +RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dsymutil -o - -y - | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE CHECK: file format Mach-O 64-bit x86-64 @@ -118,7 +120,7 @@ ARCHIVE: DW_AT_location [DW_FORM_block1] (<0x09> 03 08 10 00 00 01 00 00 00 ) CHECK: DW_TAG_volatile_type [10] CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) CHECK: DW_TAG_base_type [4] -CHACK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int") +CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int") CHECK: DW_TAG_subprogram [2] * CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "bar") CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) diff --git a/test/tools/dsymutil/X86/basic-lto-linking-x86.test b/test/tools/dsymutil/X86/basic-lto-linking-x86.test index 22b6e0808d8a5..395234e96166a 100644 --- a/test/tools/dsymutil/X86/basic-lto-linking-x86.test +++ b/test/tools/dsymutil/X86/basic-lto-linking-x86.test @@ -1,5 +1,6 @@ REQUIRES: shell RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump - | FileCheck %s +RUN: llvm-dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | llvm-dsymutil -o - -y - | llvm-dwarfdump - | FileCheck %s CHECK: file format Mach-O 64-bit x86-64 diff --git a/test/tools/dsymutil/X86/frame-1.test b/test/tools/dsymutil/X86/frame-1.test new file mode 100644 index 0000000000000..7852e68a142ab --- /dev/null +++ b/test/tools/dsymutil/X86/frame-1.test @@ -0,0 +1,32 @@ +# REQUIRES: object-emission +# RUN: rm -rf %t +# RUN: mkdir -p %t +# RUN: llc -filetype=obj %p/../Inputs/frame-dw2.ll -o %t/frame-dw2.o +# RUN: llvm-dsymutil -oso-prepend-path=%t -y %s -o - | llvm-dwarfdump -debug-dump=frames - | FileCheck %s + +# This test is meant to verify that identical CIEs will get reused +# in the same file but also inbetween files. For this to happen, we +# link twice the same file using this made-up debug map: + +--- +triple: 'i386-unknown-unknown-macho' +objects: + - filename: frame-dw2.o + symbols: + - { sym: _bar, objAddr: 0x0, binAddr: 0x1000, size: 0x12 } + - { sym: _baz, objAddr: 0x0, binAddr: 0x2000, size: 0x12 } + - filename: frame-dw2.o + symbols: + - { sym: _baz, objAddr: 0x0, binAddr: 0x3000, size: 0x12 } +... + +# CHECK: .debug_frame contents: +# CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE +# CHECK-NOT: FDE +# CHECK: FDE cie=00000000 pc=00001000...00001 +# CHECK-NOT: FDE +# CHECK: FDE cie=00000000 pc=00002000...00002 +# CHECK-NOT: FDE +# CHECK: FDE cie=00000000 pc=00003000...00003 +# CHECK-NOT: FDE + diff --git a/test/tools/dsymutil/X86/frame-2.test b/test/tools/dsymutil/X86/frame-2.test new file mode 100644 index 0000000000000..168e342a4f743 --- /dev/null +++ b/test/tools/dsymutil/X86/frame-2.test @@ -0,0 +1,47 @@ +# REQUIRES: object-emission +# RUN: rm -rf %t +# RUN: mkdir -p %t +# RUN: llc -filetype=obj %p/../Inputs/frame-dw2.ll -o %t/frame-dw2.o +# RUN: llc -filetype=obj %p/../Inputs/frame-dw4.ll -o %t/frame-dw4.o +# RUN: llvm-dsymutil -oso-prepend-path=%t -y %s -o - | llvm-dwarfdump -debug-dump=frames - | FileCheck %s + +# Check the handling of multiple different CIEs. To have CIEs that +# appear to be different, use a dwarf2 version of the file along with +# a dwarf 4 version. The CIE header version (and layout) will be different. +# FIXME: this test also checks that we didn't reuse the first CIE when it +# appears again. This is a behavior we inherited from dsymutil-classic +# but this should be fixed (see comment in patchFrameInfoForObject()) +--- +triple: 'i386-unknown-unknown-macho' +objects: + - filename: frame-dw2.o + symbols: + - { sym: _bar, objAddr: 0x0, binAddr: 0x1000, size: 0x12 } + - { sym: _baz, objAddr: 0x0, binAddr: 0x2000, size: 0x12 } + - filename: frame-dw4.o + symbols: + - { sym: _baz, objAddr: 0x0, binAddr: 0x3000, size: 0x12 } + - filename: frame-dw2.o + symbols: + - { sym: _bar, objAddr: 0x0, binAddr: 0x4000, size: 0x12 } +... + +# CHECK: .debug_frame contents: +# CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE +# CHECK-NEXT: Version:{{.*}}1 +# CHECK-NOT: FDE +# CHECK: FDE cie=00000000 pc=00001000...00001 +# CHECK-NOT: FDE +# CHECK: FDE cie=00000000 pc=00002000...00002 +# CHECK-NOT: FDE +# CHECK: [[CIEDW4:[0-9a-f]*]] 00000010 ffffffff CIE +# CHECK-NEXT: Version:{{.*}}4 +# CHECK-NOT: FDE +# CHECK: FDE cie=[[CIEDW4]] pc=00003000...00003 +# CHECK-NOT: FDE +# CHECK: [[CIEDW2:[0-9a-f]*]] {{[0-9a-f]*}} ffffffff CIE +# CHECK-NEXT: Version:{{.*}}1 +# CHECK-NOT: FDE +# CHECK: FDE cie=[[CIEDW2]] pc=00004000...00004 +# CHECK-NOT: FDE + diff --git a/test/tools/dsymutil/debug-map-parsing.test b/test/tools/dsymutil/debug-map-parsing.test index 3422316191feb..5091dfbfc24d6 100644 --- a/test/tools/dsymutil/debug-map-parsing.test +++ b/test/tools/dsymutil/debug-map-parsing.test @@ -1,40 +1,42 @@ -RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s -RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO -RUN: llvm-dsymutil -v -parse-only -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE -RUN: llvm-dsymutil -v -parse-only %p/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefix=NOT-FOUND -RUN: not llvm-dsymutil -v -parse-only %p/Inputs/inexistant 2>&1 | FileCheck %s --check-prefix=NO-EXECUTABLE +RUN: llvm-dsymutil -v -dump-debug-map -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s +RUN: llvm-dsymutil -v -dump-debug-map -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO +RUN: llvm-dsymutil -v -dump-debug-map -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE +RUN: llvm-dsymutil -v -dump-debug-map %p/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefix=NOT-FOUND +RUN: not llvm-dsymutil -v -dump-debug-map %p/Inputs/inexistant 2>&1 | FileCheck %s --check-prefix=NO-EXECUTABLE Check that We can parse the debug map of the basic executable. CHECK-NOT: error -CHECK: DEBUG MAP: x86_64-unknown-unknown-macho -CHECK: /Inputs/basic1.macho.x86_64.o: -CHECK: 0000000000000000 => 0000000100000ea0+0x24 _main -CHECK: /Inputs/basic2.macho.x86_64.o: -CHECK: 0000000000000310 => 0000000100001000+0x0 _baz -CHECK: 0000000000000020 => 0000000100000ed0+0x50 _foo -CHECK: 0000000000000070 => 0000000100000f20+0x17 _inc -CHECK: 0000000000000560 => 0000000100001008+0x0 _private_int -CHECK: /Inputs/basic3.macho.x86_64.o: -CHECK: 0000000000000020 => 0000000100000f40+0x50 _bar -CHECK: 0000000000000070 => 0000000100000f90+0x19 _inc -CHECK: 0000000000000004 => 0000000100001004+0x0 _val -CHECK: END DEBUG MAP +CHECK: --- +CHECK: triple: 'x86_64-unknown-unknown-macho' +CHECK: filename:{{.*}}/Inputs/basic1.macho.x86_64.o +CHECK-DAG: sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000EA0, size: 0x00000024 +CHECK: filename{{.*}}/Inputs/basic2.macho.x86_64.o +CHECK-DAG: sym: _baz, objAddr: 0x0000000000000310, binAddr: 0x0000000100001000, size: 0x00000000 +CHECK-DAG: sym: _foo, objAddr: 0x0000000000000020, binAddr: 0x0000000100000ED0, size: 0x00000050 +CHECK-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F20, size: 0x00000017 +CHECK-DAG: sym: _private_int, objAddr: 0x0000000000000560, binAddr: 0x0000000100001008, size: 0x00000000 +CHECK: filename{{.*}}/Inputs/basic3.macho.x86_64.o +CHECK-DAG: sym: _bar, objAddr: 0x0000000000000020, binAddr: 0x0000000100000F40, size: 0x00000050 +CHECK-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F90, size: 0x00000019 +CHECK-DAG: sym: _val, objAddr: 0x0000000000000004, binAddr: 0x0000000100001004, size: 0x00000000 +CHECK: ... Check that we can parse the debug-map of the basic-lto executable CHECK-LTO-NOT: error -CHECK-LTO: DEBUG MAP: x86_64-unknown-unknown-macho -CHECK-LTO: /Inputs/basic-lto.macho.x86_64.o: -CHECK-LTO: 0000000000000050 => 0000000100000f90+0x24 _bar -CHECK-LTO: 0000000000000658 => 0000000100001000+0x0 _baz -CHECK-LTO: 0000000000000010 => 0000000100000f50+0x40 _foo -CHECK-LTO: 0000000000000000 => 0000000100000f40+0x10 _main -CHECK-LTO: 00000000000008e8 => 0000000100001008+0x0 _private_int -CHECK-LTO: 00000000000008ec => 0000000100001004+0x0 _val -CHECK-LTO: END DEBUG MAP +CHECK-LTO: --- +CHECK-LTO: triple: 'x86_64-unknown-unknown-macho' +CHECK-LTO: /Inputs/basic-lto.macho.x86_64.o +CHECK-LTO-DAG: sym: _bar, objAddr: 0x0000000000000050, binAddr: 0x0000000100000F90, size: 0x00000024 +CHECK-LTO-DAG: sym: _baz, objAddr: 0x0000000000000658, binAddr: 0x0000000100001000, size: 0x00000000 +CHECK-LTO-DAG: sym: _foo, objAddr: 0x0000000000000010, binAddr: 0x0000000100000F50, size: 0x00000040 +CHECK-LTO-DAG: sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000F40, size: 0x00000010 +CHECK-LTO-DAG: sym: _private_int, objAddr: 0x00000000000008E8, binAddr: 0x0000000100001008, size: 0x00000000 +CHECK-LTO-DAG: sym: _val, objAddr: 0x00000000000008EC, binAddr: 0x0000000100001004, size: 0x00000000 +CHECK-LTO: ... Check thet we correctly handle debug maps with archive members (including only opening the archive once if mulitple of its members are used). @@ -48,20 +50,20 @@ CHECK-ARCHIVE-NEXT: opened new archive {{.*}}/libbasic.a' CHECK-ARCHIVE-NEXT: found member in current archive. CHECK-ARCHIVE-NEXT: trying to open {{.*}}/libbasic.a(basic3.macho.x86_64.o)' CHECK-ARCHIVE-NEXT: found member in current archive. -CHECK-ARCHIVE: DEBUG MAP: x86_64-unknown-unknown-macho -CHECK-ARCHIVE: object addr => executable addr symbol name -CHECK-ARCHIVE: /Inputs/basic1.macho.x86_64.o: -CHECK-ARCHIVE: 0000000000000000 => 0000000100000ea0+0x24 _main -CHECK-ARCHIVE: /Inputs/./libbasic.a(basic2.macho.x86_64.o): -CHECK-ARCHIVE: 0000000000000310 => 0000000100001000+0x0 _baz -CHECK-ARCHIVE: 0000000000000020 => 0000000100000ed0+0x50 _foo -CHECK-ARCHIVE: 0000000000000070 => 0000000100000f20+0x17 _inc -CHECK-ARCHIVE: 0000000000000560 => 0000000100001004+0x0 _private_int -CHECK-ARCHIVE: /Inputs/./libbasic.a(basic3.macho.x86_64.o): -CHECK-ARCHIVE: 0000000000000020 => 0000000100000f40+0x50 _bar -CHECK-ARCHIVE: 0000000000000070 => 0000000100000f90+0x19 _inc -CHECK-ARCHIVE: 0000000000000004 => 0000000100001008+0x0 _val -CHECK-ARCHIVE: END DEBUG MAP +CHECK-ARCHIVE: --- +CHECK-ARCHIVE: triple: 'x86_64-unknown-unknown-macho' +CHECK-ARCHIVE: /Inputs/basic1.macho.x86_64.o +CHECK-ARCHIVE-DAG: sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000EA0, size: 0x00000024 +CHECK-ARCHIVE: /Inputs/./libbasic.a(basic2.macho.x86_64.o) +CHECK-ARCHIVE-DAG: sym: _baz, objAddr: 0x0000000000000310, binAddr: 0x0000000100001000, size: 0x00000000 +CHECK-ARCHIVE-DAG: sym: _foo, objAddr: 0x0000000000000020, binAddr: 0x0000000100000ED0, size: 0x00000050 +CHECK-ARCHIVE-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F20, size: 0x00000017 +CHECK-ARCHIVE-DAG: sym: _private_int, objAddr: 0x0000000000000560, binAddr: 0x0000000100001004, size: 0x00000000 +CHECK-ARCHIVE: /Inputs/./libbasic.a(basic3.macho.x86_64.o) +CHECK-ARCHIVE-DAG: sym: _bar, objAddr: 0x0000000000000020, binAddr: 0x0000000100000F40, size: 0x00000050 +CHECK-ARCHIVE-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F90, size: 0x00000019 +CHECK-ARCHIVE-DAG: sym: _val, objAddr: 0x0000000000000004, binAddr: 0x0000000100001008, size: 0x00000000 +CHECK-ARCHIVE: ... Check that we warn about missing object files (this presumes that the files aren't present in the machine's /Inputs/ folder, which should be a pretty safe bet). @@ -69,11 +71,11 @@ present in the machine's /Inputs/ folder, which should be a pretty safe bet). NOT-FOUND: cannot open{{.*}}"/Inputs/basic1.macho.x86_64.o": {{[Nn]o}} such file NOT-FOUND: cannot open{{.*}}"/Inputs/basic2.macho.x86_64.o": {{[Nn]o}} such file NOT-FOUND: cannot open{{.*}}"/Inputs/basic3.macho.x86_64.o": {{[Nn]o}} such file -NOT-FOUND: DEBUG MAP: -NOT-FOUND-NEXT: object addr => executable addr symbol name -NOT-FOUND-NEXT: END DEBUG MAP +NOT-FOUND: --- +NOT-FOUND-NEXT: triple: 'x86_64-unknown-unknown-macho' +NOT-FOUND-NEXT: ... Check that we correctly error out on invalid executatble. NO-EXECUTABLE: cannot parse{{.*}}/inexistant": {{[Nn]o}} such file -NO-EXECUTABLE-NOT: DEBUG MAP +NO-EXECUTABLE-NOT: --- diff --git a/test/tools/dsymutil/yaml-object-address-rewrite.test b/test/tools/dsymutil/yaml-object-address-rewrite.test new file mode 100644 index 0000000000000..dcb39be891cd7 --- /dev/null +++ b/test/tools/dsymutil/yaml-object-address-rewrite.test @@ -0,0 +1,44 @@ +# RUN: llvm-dsymutil -v -dump-debug-map -oso-prepend-path=%p -y %s | FileCheck %s +# +# The YAML debug map bellow is the one from basic-archive.macho.x86_64 with +# the object addresses set to zero. Check that the YAML import is able to +# rewrite these addresses to the right values. +# +# CHECK: --- +# CHECK-NEXT: triple:{{.*}}'x86_64-unknown-unknown-macho' +# CHECK-NEXT: objects: +# CHECK-NEXT: filename:{{.*}}/Inputs/basic1.macho.x86_64.o +# CHECK-NEXT: symbols: +# CHECK-NEXT: sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000EA0, size: 0x00000024 +# CHECK-NEXT: filename:{{.*}}/Inputs/./libbasic.a(basic2.macho.x86_64.o)' +# CHECK-NEXT: symbols: +# CHECK-DAG: sym: _foo, objAddr: 0x0000000000000020, binAddr: 0x0000000100000ED0, size: 0x00000050 +# CHECK-DAG: sym: _private_int, objAddr: 0x0000000000000560, binAddr: 0x0000000100001004, size: 0x00000000 +# CHECK-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F20, size: 0x00000017 +# CHECK-DAG: sym: _baz, objAddr: 0x0000000000000310, binAddr: 0x0000000100001000, size: 0x00000000 +# CHECK-NOT: { sym: +# CHECK-NEXT: filename:{{.*}}/Inputs/./libbasic.a(basic3.macho.x86_64.o)' +# CHECK-NEXT: symbols: +# CHECK-DAG: sym: _val, objAddr: 0x0000000000000004, binAddr: 0x0000000100001008, size: 0x00000000 +# CHECK-DAG: sym: _bar, objAddr: 0x0000000000000020, binAddr: 0x0000000100000F40, size: 0x00000050 +# CHECK-DAG: sym: _inc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000F90, size: 0x00000019 +# CHECK-NOT: { sym: +# CHECK-NEXT: ... +--- +triple: 'x86_64-unknown-unknown-macho' +objects: + - filename: /Inputs/basic1.macho.x86_64.o + symbols: + - { sym: _main, objAddr: 0x0, binAddr: 0x0000000100000EA0, size: 0x00000024 } + - filename: /Inputs/./libbasic.a(basic2.macho.x86_64.o) + symbols: + - { sym: _foo, objAddr: 0x0, binAddr: 0x0000000100000ED0, size: 0x00000050 } + - { sym: _private_int, objAddr: 0x0, binAddr: 0x0000000100001004, size: 0x00000000 } + - { sym: _inc, objAddr: 0x0, binAddr: 0x0000000100000F20, size: 0x00000017 } + - { sym: _baz, objAddr: 0x0, binAddr: 0x0000000100001000, size: 0x00000000 } + - filename: /Inputs/./libbasic.a(basic3.macho.x86_64.o) + symbols: + - { sym: _val, objAddr: 0x0, binAddr: 0x0000000100001008, size: 0x00000000 } + - { sym: _bar, objAddr: 0x0, binAddr: 0x0000000100000F40, size: 0x00000050 } + - { sym: _inc, objAddr: 0x0, binAddr: 0x0000000100000F90, size: 0x00000019 } +... diff --git a/test/tools/llvm-objdump/invalid-input.test b/test/tools/llvm-objdump/invalid-input.test new file mode 100644 index 0000000000000..20a901d0b2ded --- /dev/null +++ b/test/tools/llvm-objdump/invalid-input.test @@ -0,0 +1,6 @@ +RUN: not llvm-objdump -t %p/missing-file 2>&1 | FileCheck %s -check-prefix=NO_SUCH_FILE +# Don't check the OS-dependent message "No such file or directory". +NO_SUCH_FILE: '{{.*}}missing-file': + +RUN: not llvm-objdump -t %s 2>&1 | FileCheck %s -check-prefix=UNKNOWN_FILE_TYPE +UNKNOWN_FILE_TYPE: '{{.*}}invalid-input.test': The file was not recognized as a valid object file diff --git a/test/tools/llvm-readobj/elf-dtflags.test b/test/tools/llvm-readobj/elf-dtflags.test index 0ed1c7adf91dd..4e6c90d9f06ba 100644 --- a/test/tools/llvm-readobj/elf-dtflags.test +++ b/test/tools/llvm-readobj/elf-dtflags.test @@ -1,4 +1,8 @@ // Test that llvm-readobj dumps DF_XXX and DF_1_XXX flags correctly. +// The input was generated using the following: +// $ clang -Wl,-z,origin -Wl,-z,now example.c +// $ cat example.c +// int main(void) { return (0); } RUN: llvm-readobj -dynamic-table %p/Inputs/dtflags.elf-x86-64 | FileCheck %s diff --git a/test/tools/llvm-readobj/sections-ext.test b/test/tools/llvm-readobj/sections-ext.test index 4024878d2bde6..6b4a674497daf 100644 --- a/test/tools/llvm-readobj/sections-ext.test +++ b/test/tools/llvm-readobj/sections-ext.test @@ -110,7 +110,7 @@ ELF-NEXT: Relocations [ ELF-NEXT: ] ELF-NEXT: Symbols [ ELF-NEXT: Symbol { -ELF-NEXT: Name: .text (0) +ELF-NEXT: Name: (0) ELF-NEXT: Value: 0x0 ELF-NEXT: Size: 0 ELF-NEXT: Binding: Local (0x0) |