summaryrefslogtreecommitdiff
path: root/output.c
diff options
context:
space:
mode:
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);