From: Jakub Jelinek <jakub@redhat.com>
Date: Thu, 10 May 2012 06:18:48 +0000 (+0000)
Subject: 	* dwarf.c (read_and_display_attr_value): Don't look up tag from
X-Git-Url: https://repo.jachan.dev/binutils.git/commitdiff_plain/afd6e1ffce8eec2e38d90dcb4a0af004e413e277

	* dwarf.c (read_and_display_attr_value): Don't look up tag from
	abbrev for DW_FORM_ref_addr.
---

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6fad507515..c5b85c065c 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* dwarf.c (read_and_display_attr_value): Don't look up tag from
+	abbrev for DW_FORM_ref_addr.
+
 2012-05-08  Sean Keys  <skeys@ipdatasys.com>
 	
 	* binutils/MAINTAINERS: Added my entry to the maintainers secion.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 856a851a43..5361396b8e 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -1716,11 +1716,17 @@ read_and_display_attr_value (unsigned long attribute,
 	    abbrev_number = read_leb128 (section->start + uvalue, NULL, 0);
 
 	    printf (_("[Abbrev Number: %ld"), abbrev_number);
-	    for (entry = first_abbrev; entry != NULL; entry = entry->next)
-	      if (entry->entry == abbrev_number)
-		break;
-	    if (entry != NULL)
-	      printf (" (%s)", get_TAG_name (entry->tag));
+	    /* Don't look up abbrev for DW_FORM_ref_addr, as it very often will
+	       use different abbrev table, and we don't track .debug_info chunks
+	       yet.  */
+	    if (form != DW_FORM_ref_addr)
+	      {
+		for (entry = first_abbrev; entry != NULL; entry = entry->next)
+		  if (entry->entry == abbrev_number)
+		    break;
+		if (entry != NULL)
+		  printf (" (%s)", get_TAG_name (entry->tag));
+	      }
 	    printf ("]");
 	  }
       }