aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-04-23 10:17:34 +0000
committerAlexey Samsonov <samsonov@google.com>2013-04-23 10:17:34 +0000
commit005159e92420a102516ee6e29ef2178c818da5d0 (patch)
tree12692c0e8cf95807e5645786b7bc751f8bf71692 /test
parentab4d569f2841beaf6152179b1f4da6b7e0f3530e (diff)
downloadexternal_llvm-005159e92420a102516ee6e29ef2178c818da5d0.zip
external_llvm-005159e92420a102516ee6e29ef2178c818da5d0.tar.gz
external_llvm-005159e92420a102516ee6e29ef2178c818da5d0.tar.bz2
Use zlib to uncompress debug sections in DWARF parser.
This makes llvm-dwarfdump and llvm-symbolizer understand debug info sections compressed by ld.gold linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180088 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/DebugInfo/Inputs/dwarfdump-test-zlib.cc24
-rwxr-xr-xtest/DebugInfo/Inputs/dwarfdump-test-zlib.elf-x86-64bin0 -> 9589 bytes
-rw-r--r--test/DebugInfo/dwarfdump-zlib.test12
-rw-r--r--test/Makefile1
-rw-r--r--test/lit.cfg3
-rw-r--r--test/lit.site.cfg.in1
6 files changed, 41 insertions, 0 deletions
diff --git a/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc b/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc
new file mode 100644
index 0000000..260c3c4
--- /dev/null
+++ b/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc
@@ -0,0 +1,24 @@
+class DummyClass {
+ int a_;
+ public:
+ DummyClass(int a) : a_(a) {}
+ int add(int b) {
+ return a_ + b;
+ }
+};
+
+int f(int a, int b) {
+ DummyClass c(a);
+ return c.add(b);
+}
+
+int main() {
+ return f(2, 3);
+}
+
+// Built with Clang 3.2 and ld.gold linker:
+// $ mkdir -p /tmp/dbginfo
+// $ cp dwarfdump-test-zlib.cc /tmp/dbginfo
+// $ cd /tmp/dbginfo
+// $ clang++ -g dwarfdump-test-zlib.cc -Wl,--compress-debug-sections=zlib \
+// -o <output>
diff --git a/test/DebugInfo/Inputs/dwarfdump-test-zlib.elf-x86-64 b/test/DebugInfo/Inputs/dwarfdump-test-zlib.elf-x86-64
new file mode 100755
index 0000000..16b3153
--- /dev/null
+++ b/test/DebugInfo/Inputs/dwarfdump-test-zlib.elf-x86-64
Binary files differ
diff --git a/test/DebugInfo/dwarfdump-zlib.test b/test/DebugInfo/dwarfdump-zlib.test
new file mode 100644
index 0000000..8ce2cf7
--- /dev/null
+++ b/test/DebugInfo/dwarfdump-zlib.test
@@ -0,0 +1,12 @@
+REQUIRES: zlib
+
+RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-zlib.elf-x86-64 \
+RUN: | FileCheck %s -check-prefix FULLDUMP
+RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-zlib.elf-x86-64 \
+RUN: --address=0x400559 --functions | FileCheck %s -check-prefix MAIN
+
+FULLDUMP: .debug_abbrev contents
+FULLDUMP: .debug_info contents
+
+MAIN: main
+MAIN-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test-zlib.cc:16
diff --git a/test/Makefile b/test/Makefile
index 8d05c57..2213319 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -141,6 +141,7 @@ lit.site.cfg: FORCE
@$(ECHOPATH) s=@LLVM_BINDINGS@=$(BINDINGS_TO_BUILD)=g >> lit.tmp
@$(ECHOPATH) s=@HOST_OS@=$(HOST_OS)=g >> lit.tmp
@$(ECHOPATH) s=@HOST_ARCH@=$(HOST_ARCH)=g >> lit.tmp
+ @$(ECHOPATH) s=@HAVE_LIBZ@=$(HAVE_LIBZ)=g >> lit.tmp
@sed -f lit.tmp $(PROJ_SRC_DIR)/lit.site.cfg.in > $@
@-rm -f lit.tmp
diff --git a/test/lit.cfg b/test/lit.cfg
index ea91f45..b423c6e 100644
--- a/test/lit.cfg
+++ b/test/lit.cfg
@@ -268,6 +268,9 @@ if (config.llvm_use_sanitizer == "Memory" or
if not 'hexagon' in config.target_triple:
config.available_features.add("object-emission")
+if config.have_zlib == "1":
+ config.available_features.add("zlib")
+
# llc knows whether he is compiled with -DNDEBUG.
import subprocess
try:
diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in
index 8024b24..3a680b2 100644
--- a/test/lit.site.cfg.in
+++ b/test/lit.site.cfg.in
@@ -19,6 +19,7 @@ config.host_os = "@HOST_OS@"
config.host_arch = "@HOST_ARCH@"
config.llvm_use_intel_jitevents = "@LLVM_USE_INTEL_JITEVENTS@"
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
+config.have_zlib = "@HAVE_LIBZ@"
# Support substitution of the tools_dir with user parameters. This is
# used when we can't determine the tool dir at configuration time.