Support for powerpc64 arch ppc64el
[platform/upstream/ltrace.git] / output.c
index 671a5d7..8d378ea 100644 (file)
--- a/output.c
+++ b/output.c
 #include "type.h"
 #include "value.h"
 #include "value_dict.h"
+#include "filter.h"
+#include "debug.h"
+
+#if defined(HAVE_LIBDW)
+#include "dwarf_prototypes.h"
+#endif
 
 static struct process *current_proc = NULL;
 static size_t current_depth = 0;
@@ -207,6 +213,21 @@ library_get_prototype(struct library *lib, const char *name)
                         && lib->type == LT_LIBTYPE_DSO
                         && snip_period(buf));
 
+#if defined(HAVE_LIBDW)
+               // DWARF data fills in the gaps in the .conf files, so I don't
+               // check for lib->protolib==NULL here
+               if (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);
+               else
+                       debug(DEBUG_FUNCTION,
+                             "Filter didn't match prototype '%s' in lib '%s'. "
+                             "Not importing",
+                             name, lib->soname);
+#endif
+
                if (lib->protolib == NULL)
                        lib->protolib = protolib_cache_default(&g_protocache,
                                                               buf, 0);