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);