summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2014-06-12 18:52:35 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2014-06-12 18:52:35 +0000
commit4dfa6812d7e70e419dd2f302b4108f205145aa4b (patch)
tree5f8bd25dfd3a07ce9b58ee7a2f3f09842b459358 /test
parent7c3436d9411f96d39b7de17d997289893c330d44 (diff)
downloadllvm-4dfa6812d7e70e419dd2f302b4108f205145aa4b.tar.gz
llvm-4dfa6812d7e70e419dd2f302b4108f205145aa4b.tar.bz2
llvm-4dfa6812d7e70e419dd2f302b4108f205145aa4b.tar.xz
[llvm-symbolizer] Fix parsing DW_AT_ranges in Fission skeleton compile unit DIEs.
Turns out that DW_AT_ranges_base attribute sets the offset for DW_AT_ranges values specified in the .dwo file, but not for DW_AT_ranges specified in the skeleton compile unit DIE in the main executable. This is extremely confusing, and would hopefully be fixed in DWARF-5 when it's finalized. For now this behavior makes sense, as otherwise Fission would break DWARF consumers who doesn't know anything about DW_AT_ranges_base. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210809 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/DebugInfo/Inputs/fission-ranges.cc17
-rwxr-xr-xtest/DebugInfo/Inputs/fission-ranges.elf-x86_64bin0 -> 8693 bytes
-rw-r--r--test/DebugInfo/llvm-symbolizer.test4
3 files changed, 21 insertions, 0 deletions
diff --git a/test/DebugInfo/Inputs/fission-ranges.cc b/test/DebugInfo/Inputs/fission-ranges.cc
new file mode 100644
index 0000000000..a585bf9c00
--- /dev/null
+++ b/test/DebugInfo/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/test/DebugInfo/Inputs/fission-ranges.elf-x86_64 b/test/DebugInfo/Inputs/fission-ranges.elf-x86_64
new file mode 100755
index 0000000000..3d2fd79dd7
--- /dev/null
+++ b/test/DebugInfo/Inputs/fission-ranges.elf-x86_64
Binary files differ
diff --git a/test/DebugInfo/llvm-symbolizer.test b/test/DebugInfo/llvm-symbolizer.test
index 6aa12876fa..1ddfd9cf55 100644
--- a/test/DebugInfo/llvm-symbolizer.test
+++ b/test/DebugInfo/llvm-symbolizer.test
@@ -17,6 +17,7 @@ RUN: echo "%p/Inputs/macho-universal 0x1f84" >> %t.input
RUN: echo "%p/Inputs/macho-universal:i386 0x1f67" >> %t.input
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: llvm-symbolizer --functions=linkage --inlining --demangle=false \
RUN: --default-arch=i386 < %t.input | FileCheck %s
@@ -90,6 +91,9 @@ CHECK: _Z3inci
CHECK: main
CHECK-NEXT: llvm-symbolizer-dwo-test.cc:11
+CHECK: main
+CHECK-NEXT: {{.*}}fission-ranges.cc:6
+
RUN: echo "unexisting-file 0x1234" > %t.input2
RUN: llvm-symbolizer < %t.input2