diff options
Diffstat (limited to 'llvm/test/tools')
24 files changed, 173 insertions, 1 deletions
diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/dwo-test b/llvm/test/tools/llvm-symbolizer/Inputs/dwo-test Binary files differnew file mode 100755 index 00000000000..c28c3d277a7 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/dwo-test diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.cc b/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.cc new file mode 100644 index 00000000000..a585bf9c008 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.cc @@ -0,0 +1,17 @@ +static inline int inlined_f() { + volatile int x = 2; + return x; +} + +int main() { + return inlined_f(); +} + +// Build instructions: +// $ mkdir /tmp/dbginfo +// $ cp fission-ranges.cc /tmp/dbginfo/ +// $ cd /tmp/dbginfo +// $ gcc -gsplit-dwarf -O2 -fPIC fission-ranges.cc -c -o obj2.o +// $ clang -gsplit-dwarf -O2 -fsanitize=address -fPIC -Dmain=foo fission-ranges.cc -c -o obj1.o +// $ gcc obj1.o obj2.o -shared -o <output> +// $ objcopy --remove-section=.debug_aranges <output> diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.elf-x86_64 b/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.elf-x86_64 Binary files differnew file mode 100755 index 00000000000..3d2fd79dd74 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/fission-ranges.elf-x86_64 diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.cpp b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.cpp new file mode 100644 index 00000000000..e5255e847e8 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.cpp @@ -0,0 +1,10 @@ +void f1(); +__attribute__((always_inline)) void f2() { + f1(); +} +void f3() { + f2(); +} + +// $ clang++ split-dwarf-addr-object-relocation.cpp -gsplit-dwarf -c Xclang \ +// -fdebug-compilation-dir -Xclang . diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.dwo b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.dwo Binary files differnew file mode 100644 index 00000000000..814b80246ce --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.dwo diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.o b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.o Binary files differnew file mode 100644 index 00000000000..b77c31b9579 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-addr-object-relocation.o diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.cpp b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.cpp new file mode 100644 index 00000000000..629d8b6aa8f --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.cpp @@ -0,0 +1,22 @@ +void f1() {} +__attribute__((always_inline)) inline void f2() { + f1(); +} +// throw a gap in the address range to force use of DW_AT_ranges, ranges_base, +// range contribution in the .dwo file, etc. +__attribute__((nodebug)) void gap() { +} +int main() { + f2(); +} + +// To produce split-dwarf-dwp.o{,dwp}, Create another file that has ranges, so +// the ranges_base of the CU for split-dwarf-dwp.cpp is non-zero. +// +// $ cat > other.cpp +// void other1() {} +// __attribute__((nodebug)) void other2() {} +// void other3() {} +// $ clang++ other.cpp split-dwarf-dwp.cpp -gsplit-dwarf -c -Xclang -fdebug-compilation-dir -Xclang . -fno-split-dwarf-inlining +// $ llvm-dwp other.dwo split-dwarf-dwp.dwo -o test/DebugInfo/Inputs/split-dwarf-dwp.o.dwp +// $ ld -r other.o split-dwarf-dwp.o -o test/DebugInfo/Inputs/split-dwarf-dwp.o diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o Binary files differnew file mode 100644 index 00000000000..4df6455ce8b --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o.dwp b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o.dwp Binary files differnew file mode 100644 index 00000000000..17018f01b03 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-dwp.o.dwp diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.cpp b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.cpp new file mode 100644 index 00000000000..85276ca4b2c --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.cpp @@ -0,0 +1,15 @@ +void f1(); +__attribute__((always_inline)) inline void f2() { + f1(); +} +void f3() { + f2(); +} + +// $ cat > other.cpp +// extern int i; +// int i; +// $ clang++ other.cpp split-dwarf-multiple-cu.cpp -g -c -Xclang \ +// -fdebug-compilation-dir -Xclang . -emit-llvm -S +// $ llvm-link other.ll split-dwarf-multiple-cu.ll -o split-dwarf-multiple-cu.bc +// $ clang++ -gsplit-dwarf split-dwarf-multiple-cu.bc -c diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.dwo b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.dwo Binary files differnew file mode 100644 index 00000000000..8aca4cb1a5a --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.dwo diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.o b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.o Binary files differnew file mode 100644 index 00000000000..4cb64b54a7d --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-multiple-cu.o diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test Binary files differnew file mode 100755 index 00000000000..a7024cce4b9 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test-nogmlt b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test-nogmlt Binary files differnew file mode 100755 index 00000000000..6f7627eb607 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test-nogmlt diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cc b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cc new file mode 100644 index 00000000000..b41423dd815 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cc @@ -0,0 +1,20 @@ +void f1() { +} + +inline __attribute__((always_inline)) void f2() { + f1(); +} + +int main() { + f2(); +} + +// Build instructions: +// 1) clang++ -### -gsplit-dwarf split-dwarf-test.cc -o split-dwarf-test +// 2) Replace the value "-fdebug-compilation-dir" flag to "Output" +// (this is the temp directory used by lit). +// 3) Manually run clang-cc1, objcopy and ld invocations. +// 4) Copy the binary and .dwo file to the Inputs directory. Make sure the +// .dwo file will be available for symbolizer (use test RUN-lines to copy +// the .dwo file to a directory +// <execution_directory>/<directory_provided_in_fdebug_compilation_dir>. diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cpp b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cpp new file mode 100644 index 00000000000..8c85330d89c --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.cpp @@ -0,0 +1,13 @@ +void f1() {} +__attribute__((always_inline)) inline void f2() { + f1(); +} +int main() { + f2(); +} + +// $ clang++ split-dwarf-test.cpp -gsplit-dwarf -Xclang \ +// -fdebug-compilation-dir -Xclang . -o split-dwarf-test +// $ clang++ split-dwarf-test.cpp -gsplit-dwarf -Xclang \ +// -fdebug-compilation-dir -Xclang . -fno-split-dwarf-inlining \ +// -o split-dwarf-test-nogmlt diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.dwo b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.dwo Binary files differnew file mode 100644 index 00000000000..f123d732301 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/Inputs/split-dwarf-test.dwo diff --git a/llvm/test/tools/llvm-symbolizer/dwo.test b/llvm/test/tools/llvm-symbolizer/dwo.test new file mode 100644 index 00000000000..c2c72f50f86 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/dwo.test @@ -0,0 +1,4 @@ +RUN: llvm-symbolizer --obj=%p/Inputs/dwo-test 0x400514 | FileCheck %s + +CHECK: main +CHECK-NEXT: llvm-symbolizer-dwo-test.cc:11 diff --git a/llvm/test/tools/llvm-symbolizer/fission-ranges.test b/llvm/test/tools/llvm-symbolizer/fission-ranges.test new file mode 100644 index 00000000000..4d35ed4f293 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/fission-ranges.test @@ -0,0 +1,4 @@ +RUN: llvm-symbolizer --obj=%p/Inputs/fission-ranges.elf-x86_64 0x720 | FileCheck %s + +CHECK: main +CHECK-NEXT: {{.*}}fission-ranges.cc:6 diff --git a/llvm/test/tools/llvm-symbolizer/split-debug.test b/llvm/test/tools/llvm-symbolizer/split-debug.test index 7474cd6e6f2..8904683228d 100644 --- a/llvm/test/tools/llvm-symbolizer/split-debug.test +++ b/llvm/test/tools/llvm-symbolizer/split-debug.test @@ -20,7 +20,7 @@ RUN: mkdir -p %t/.debug RUN: llvm-objcopy --keep-section=.debug_info %p/Inputs/addr.exe %t/.debug/addr RUN: llvm-objcopy --strip-debug --add-gnu-debuglink=%t/.debug/addr %p/Inputs/addr.exe %t/addr.exe -RUN: llvm-symbolizer -print-address -obj=%t/addr.exe < %p/Inputs/addr.inp | FileCheck %s +RUN: llvm-symbolizer -print-address -obj=%t/addr.exe 0x40054d | FileCheck %s #CHECK: 0x40054d #CHECK: {{[/\]+}}tmp{{[/\]+}}x.c:14:0 diff --git a/llvm/test/tools/llvm-symbolizer/split-dwarf-addr-object-relocation.test b/llvm/test/tools/llvm-symbolizer/split-dwarf-addr-object-relocation.test new file mode 100644 index 00000000000..d98756dd796 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/split-dwarf-addr-object-relocation.test @@ -0,0 +1,11 @@ +RUN: rm -rf %t +RUN: mkdir -p %t +RUN: cp %p/Inputs/split-dwarf-addr-object-relocation.dwo %t + +RUN: cd %t +RUN: llvm-symbolizer --obj=%p/Inputs/split-dwarf-addr-object-relocation.o 0x14 | FileCheck %s + +CHECK: f2 +CHECK-NEXT: split-dwarf-addr-object-relocation.cpp:3:3 +CHECK-NEXT: f3 +CHECK-NEXT: split-dwarf-addr-object-relocation.cpp:6:0 diff --git a/llvm/test/tools/llvm-symbolizer/split-dwarf-dwp.test b/llvm/test/tools/llvm-symbolizer/split-dwarf-dwp.test new file mode 100644 index 00000000000..71ecca436eb --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/split-dwarf-dwp.test @@ -0,0 +1,12 @@ +RUN: rm -rf %t +RUN: mkdir -p %t + +RUN: cp %p/Inputs/split-dwarf-dwp.o %t/split-dwarf-dwp-different-name.o + +RUN: llvm-symbolizer --dwp=%p/Inputs/split-dwarf-dwp.o.dwp \ +RUN: --obj=%t/split-dwarf-dwp-different-name.o 0x54 | FileCheck %s + +CHECK: f2 +CHECK-NEXT: split-dwarf-dwp.cpp:3:3 +CHECK-NEXT: main +CHECK-NEXT: split-dwarf-dwp.cpp:10:0 diff --git a/llvm/test/tools/llvm-symbolizer/split-dwarf-multiple-cu.test b/llvm/test/tools/llvm-symbolizer/split-dwarf-multiple-cu.test new file mode 100644 index 00000000000..465816f6958 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/split-dwarf-multiple-cu.test @@ -0,0 +1,12 @@ +RUN: rm -rf %t +RUN: mkdir -p %t +RUN: cp %p/Inputs/split-dwarf-multiple-cu.dwo %t + +RUN: cd %t +RUN: llvm-symbolizer --obj=%p/Inputs/split-dwarf-multiple-cu.o 0x4 | FileCheck %s + +CHECK: f2 +CHECK-NEXT: split-dwarf-multiple-cu.cpp:3:3 +CHECK-NEXT: f3 +CHECK-NEXT: split-dwarf-multiple-cu.cpp:6:0 + diff --git a/llvm/test/tools/llvm-symbolizer/split-dwarf.test b/llvm/test/tools/llvm-symbolizer/split-dwarf.test new file mode 100644 index 00000000000..e8185cee205 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/split-dwarf.test @@ -0,0 +1,32 @@ +RUN: rm -rf %t +RUN: mkdir -p %t + +RUN: cp %p/Inputs/split-dwarf-test.dwo %t + +RUN: cd %t +RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \ +RUN: --obj=%p/Inputs/split-dwarf-test 0x400504 0x4004f4 | FileCheck --check-prefix=CHECK --check-prefix=SPLIT --check-prefix=DWO %s + +Ensure we get the same results in the absence of gmlt-like data in the executable but the presence of a .dwo file + +RUN: echo "%p/Inputs/split-dwarf-test-nogmlt 0x400504" >> %t.input +RUN: echo "%p/Inputs/split-dwarf-test-nogmlt 0x4004f4" >> %t.input +RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \ +RUN: --default-arch=i386 --obj=%p/Inputs/split-dwarf-test-nogmlt 0x400504 0x4004f4 | FileCheck --check-prefix=SPLIT --check-prefix=DWO %s + +Ensure we get gmlt like results in the absence of a .dwo file but the presence of gmlt-like data in the executable + +RUN: rm %t/split-dwarf-test.dwo +RUN: echo "%p/Inputs/split-dwarf-test 0x400504" >> %t.input +RUN: echo "%p/Inputs/split-dwarf-test 0x4004f4" >> %t.input +RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \ +RUN: --default-arch=i386 --obj=%p/Inputs/split-dwarf-test 0x400504 0x4004f4 | FileCheck --check-prefix=SPLIT --check-prefix=NODWO %s + +DWO: _Z2f2v +NODWO: {{^f2$}} +SPLIT-NEXT: {{.*}}split-dwarf-test.cpp +SPLIT-NEXT: main +SPLIT-NEXT: {{.*}}split-dwarf-test.cpp + +SPLIT: _Z2f1v +SPLIT-NEXT: {{.*}}split-dwarf-test.cpp |

