summaryrefslogtreecommitdiff
path: root/output.c
diff options
context:
space:
mode:
authorDima Kogan <dima@secretsauce.net>2014-04-23 03:01:20 -0700
committerChanho Park <chanho61.park@samsung.com>2014-08-22 20:38:25 +0900
commit572c4648c0d567bd4868ff442149cd7b5603e370 (patch)
treea0d25b79acf883becdb1fbef60d2371ba6fd2b01 /output.c
parent45492e9eb4681609f218f11e71523b6751303af6 (diff)
downloadltrace-572c4648c0d567bd4868ff442149cd7b5603e370.tar.gz
ltrace-572c4648c0d567bd4868ff442149cd7b5603e370.tar.bz2
ltrace-572c4648c0d567bd4868ff442149cd7b5603e370.zip
moved DWARF prototype reading to library_get_prototype()
Diffstat (limited to 'output.c')
-rw-r--r--output.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/output.c b/output.c
index 671a5d7..5dcc475 100644
--- a/output.c
+++ b/output.c
@@ -49,6 +49,11 @@
#include "type.h"
#include "value.h"
#include "value_dict.h"
+#include "filter.h"
+
+#if defined(HAVE_LIBDW)
+#include "dwarf_prototypes.h"
+#endif
static struct process *current_proc = NULL;
static size_t current_depth = 0;
@@ -207,6 +212,14 @@ library_get_prototype(struct library *lib, const char *name)
&& lib->type == LT_LIBTYPE_DSO
&& snip_period(buf));
+#if defined(HAVE_LIBDW)
+ if (lib->protolib == NULL && lib->dwfl != NULL &&
+ (filter_matches_library(options.plt_filter, lib ) ||
+ filter_matches_library(options.static_filter, lib ) ||
+ filter_matches_library(options.export_filter, lib )))
+ import_DWARF_prototypes(lib->protolib, lib, lib->dwfl);
+#endif
+
if (lib->protolib == NULL)
lib->protolib = protolib_cache_default(&g_protocache,
buf, 0);