2007-09-27  Roland McGrath  <roland@redhat.com>

	* alpha_retval.c: Use dwarf_attr_integrate and dwarf_hasattr_integrate.
	* i386_retval.c: Likewise.
	* ia64_retval.c: Likewise.
	* ppc64_retval.c: Likewise.
	* ppc_retval.c: Likewise.
	* s390_retval.c: Likewise.
	* sparc_retval.c: Likewise.
	* x86_64_retval.c: Likewise.

diff --git a/backends/i386_retval.c b/backends/i386_retval.c
index cfd5057..c3bab10 100644
--- a/backends/i386_retval.c
+++ b/backends/i386_retval.c
@@ -1,5 +1,5 @@
 /* Function return value location for Linux/i386 ABI.
-   Copyright (C) 2005 Red Hat, Inc.
+   Copyright (C) 2005, 2007 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -66,7 +66,8 @@
      which is the type of the return value.  */
 
   Dwarf_Attribute attr_mem;
-  Dwarf_Attribute *attr = dwarf_attr (functypedie, DW_AT_type, &attr_mem);
+  Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
+						&attr_mem);
   if (attr == NULL)
     /* The function has no return value, like a `void' function in C.  */
     return 0;
@@ -80,7 +81,7 @@
 	 || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
 	 || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
     {
-      attr = dwarf_attr (typedie, DW_AT_type, &attr_mem);
+      attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
       typedie = dwarf_formref_die (attr, &die_mem);
       tag = dwarf_tag (typedie);
     }
@@ -91,9 +92,9 @@
       return -1;
 
     case DW_TAG_subrange_type:
-      if (! dwarf_hasattr (typedie, DW_AT_byte_size))
+      if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
 	{
-	  attr = dwarf_attr (typedie, DW_AT_type, &attr_mem);
+	  attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
 	  typedie = dwarf_formref_die (attr, &die_mem);
 	  tag = dwarf_tag (typedie);
 	}
@@ -105,8 +106,8 @@
     case DW_TAG_ptr_to_member_type:
       {
 	Dwarf_Word size;
-	if (dwarf_formudata (dwarf_attr (typedie, DW_AT_byte_size,
-					 &attr_mem), &size) != 0)
+	if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+						   &attr_mem), &size) != 0)
 	  {
 	    if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
 	      size = 4;
@@ -116,8 +117,9 @@
 	if (tag == DW_TAG_base_type)
 	  {
 	    Dwarf_Word encoding;
-	    if (dwarf_formudata (dwarf_attr (typedie, DW_AT_encoding,
-					     &attr_mem), &encoding) != 0)
+	    if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
+						       &attr_mem),
+				 &encoding) != 0)
 	      return -1;
 	    if (encoding == DW_ATE_float)
 	      {