libdw/
2005-08-15 Roland McGrath <roland@redhat.com>
* dwarf_func_inline.c: New file.
* Makefile.am (libdw_a_SOURCES): Add it.
* libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
* libdw.map: Add them.
* dwarf_func_die.c: New file.
* Makefile.am (libdw_a_SOURCES): Add it.
* libdw.h: Declare dwarf_func_die.
* libdw.map: Add it. Bump version to ELFUTILS_0.114.
tests/
2005-08-15 Roland McGrath <roland@redhat.com>
* dwflmodtest.c (print_instance, print_inline): New functions.
(print_func): Call print_inline.
(options, parse_opt): Grok -i/--inlines.
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index c5d1503..17b8b3e 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,15 @@
+2005-08-15 Roland McGrath <roland@redhat.com>
+
+ * dwarf_func_inline.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add it.
+ * libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
+ * libdw.map: Add them.
+
+ * dwarf_func_die.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add it.
+ * libdw.h: Declare dwarf_func_die.
+ * libdw.map: Add it. Bump version to ELFUTILS_0.114.
+
2005-08-10 Ulrich Drepper <drepper@redhat.com>
* dwarf_getsrclines.c (dwarf_getsrclines): Correct fallout of renaming
diff --git a/libdw/Makefile.am b/libdw/Makefile.am
index 097ec3a..ad6b28a 100644
--- a/libdw/Makefile.am
+++ b/libdw/Makefile.am
@@ -62,8 +62,10 @@
dwarf_macro_param2.c dwarf_addrdie.c \
dwarf_getfuncs.c dwarf_func_name.c dwarf_func_lowpc.c \
dwarf_func_highpc.c dwarf_func_entrypc.c dwarf_func_file.c \
- dwarf_func_line.c dwarf_func_col.c dwarf_getsrc_file.c \
- libdw_findcu.c libdw_form.c libdw_alloc.c memory-access.c
+ dwarf_func_line.c dwarf_func_col.c dwarf_func_die.c \
+ dwarf_func_inline.c dwarf_getsrc_file.c \
+ libdw_findcu.c libdw_form.c libdw_alloc.c memory-access.c \
+ libdw_visit_scopes.c
if !MUDFLAP
diff --git a/libdw/libdw.h b/libdw/libdw.h
index 786be22..e6b3059 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -508,6 +508,19 @@
extern int dwarf_func_col (Dwarf_Func *func, int *colp)
__nonnull_attribute__ (2);
+/* Get definition DIE of given function. */
+extern Dwarf_Die *dwarf_func_die (Dwarf_Func *func, Dwarf_Die *die_mem)
+ __nonnull_attribute__ (2);
+
+/* Return nonzero if given function is an abstract inline definition. */
+extern int dwarf_func_inline (Dwarf_Func *func);
+
+/* Find each concrete inlined instance of the abstract inline definition. */
+extern int dwarf_func_inline_instances (Dwarf_Func *func,
+ int (*callback) (Dwarf_Die *, void *),
+ void *arg);
+
+
/* Call callback function for each of the macro information entry for
the CU. */
diff --git a/libdw/libdw.map b/libdw/libdw.map
index fb4a62d..b54dea3 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -1,5 +1,5 @@
ELFUTILS_0 { };
-ELFUTILS_0.111 {
+ELFUTILS_0.114 {
global:
dwarf_abbrevhaschildren;
dwarf_addrdie;
@@ -29,9 +29,12 @@
dwarf_formstring;
dwarf_formudata;
dwarf_func_col;
+ dwarf_func_die;
dwarf_func_entrypc;
dwarf_func_file;
dwarf_func_highpc;
+ dwarf_func_inline;
+ dwarf_func_inline_instances;
dwarf_func_line;
dwarf_func_lowpc;
dwarf_func_name;
diff --git a/libdw/libdwP.h b/libdw/libdwP.h
index 062b3dc..5f15cf9 100644
--- a/libdw/libdwP.h
+++ b/libdw/libdwP.h
@@ -342,6 +342,13 @@
extern int __libdw_func_intval (Dwarf_Func *func, int *linep, int attval)
__nonnull_attribute__ (1, 2) internal_function;
+/* Helper function to walk scopes. */
+extern int __libdw_visit_scopes (unsigned int depth, Dwarf_Die *root,
+ int (*visit) (unsigned int depth,
+ Dwarf_Die *die, void *arg),
+ void *arg)
+ __nonnull_attribute__ (2, 3) internal_function;
+
/* Return error code of last failing function call. This value is kept
separately for each thread. */
extern int __dwarf_errno_internal (void);