diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2014-09-05 19:29:45 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2014-09-05 19:29:45 +0000 |
commit | d3e121331bafa274b654bf2e1691cde628b7ff55 (patch) | |
tree | 2d7c338cd2fbd0a25618f9d4433502243a9f105b /llvm/test | |
parent | e4d4801c3a644923c672e25dc3a76bef9973c494 (diff) | |
download | bcm5719-llvm-d3e121331bafa274b654bf2e1691cde628b7ff55.tar.gz bcm5719-llvm-d3e121331bafa274b654bf2e1691cde628b7ff55.zip |
[DWARF parser] Fix nasty memory corruption in .dwo files handling.
Forge a test case where llvm-symbolizer has to use external .dwo
file to produce the inlining information.
llvm-svn: 217270
Diffstat (limited to 'llvm/test')
-rwxr-xr-x | llvm/test/DebugInfo/Inputs/split-dwarf-test | bin | 0 -> 9379 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-test.cc | 17 | ||||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo | bin | 0 -> 1609 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/llvm-symbolizer.test | 13 |
4 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-test b/llvm/test/DebugInfo/Inputs/split-dwarf-test Binary files differnew file mode 100755 index 00000000000..a4411129a9b --- /dev/null +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-test diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-test.cc b/llvm/test/DebugInfo/Inputs/split-dwarf-test.cc new file mode 100644 index 00000000000..5ed56f94b36 --- /dev/null +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-test.cc @@ -0,0 +1,17 @@ +int foo(int a) { + return a + 1; +} + +int main(int argc, char *argv[]) { + return foo(argc); +} + +// Build instructions: +// 1) clang++ -### -O2 -gsplit-dwarf.cc 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/DebugInfo/Inputs/split-dwarf-test.dwo b/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo Binary files differnew file mode 100644 index 00000000000..74183a4b622 --- /dev/null +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo diff --git a/llvm/test/DebugInfo/llvm-symbolizer.test b/llvm/test/DebugInfo/llvm-symbolizer.test index 20d3dda21ab..fdd64d69f5b 100644 --- a/llvm/test/DebugInfo/llvm-symbolizer.test +++ b/llvm/test/DebugInfo/llvm-symbolizer.test @@ -19,10 +19,15 @@ RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input RUN: echo "%p/Inputs/llvm-symbolizer-dwo-test 0x400514" >> %t.input RUN: echo "%p/Inputs/fission-ranges.elf-x86_64 0x720" >> %t.input RUN: echo "%p/Inputs/arange-overlap.elf-x86_64 0x714" >> %t.input +RUN: cp %p/Inputs/split-dwarf-test.dwo %T +RUN: echo "%p/Inputs/split-dwarf-test 0x4004d0" >> %t.input +RUN: echo "%p/Inputs/split-dwarf-test 0x4004c0" >> %t.input RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \ RUN: --default-arch=i386 < %t.input | FileCheck %s +REQUIRES: shell + CHECK: main CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16 @@ -98,6 +103,14 @@ CHECK-NEXT: {{.*}}fission-ranges.cc:6 CHECK: _ZN1S3bazEv CHECK-NEXT: {{.*}}arange-overlap.cc:6 +CHECK: _Z3fooi +CHECK-NEXT: {{.*}}split-dwarf-test.cc +CHECK-NEXT: main +CHECK-NEXT: {{.*}}split-dwarf-test.cc + +CHECK: _Z3fooi +CHECK-NEXT: {{.*}}split-dwarf-test.cc + RUN: echo "unexisting-file 0x1234" > %t.input2 RUN: llvm-symbolizer < %t.input2 |