diff mbox

[pushed,ARM] Store exception handling information per-bfd instead of per-obj...

Message ID 20191031193407.1CAC620AF6@gnutoolchain-gerrit.osci.io
State New
Headers show

Commit Message

Simon Marchi (Code Review) Oct. 31, 2019, 7:34 p.m. UTC
Sourceware to Gerrit sync has submitted this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/448
......................................................................

[ARM] Store exception handling information per-bfd instead of per-objfile

Based on feedback from Tromey, update the use of objfile_key in gdb/arm-tdep.c
to use bfd_key instead. That way we don't have to re-create the exception
handling data all over again if it was done before for the same BFD.

gdb/ChangeLog:

2019-10-31  Luis Machado  <luis.machado@linaro.org>

	* arm-tdep.c (arm_exidx_data_key): Use bfd_key instead of
	objfile_key.
	(arm_exidx_new_objfile): Adjust to use objfile->obfd instead of
	objfile to fetch per-bfd data.
	(arm_find_exidx_entry): Likewise.

Change-Id: Ia7b3208ea8d788414600fa6d770ac76db0562859
---
M gdb/ChangeLog
M gdb/arm-tdep.c
2 files changed, 13 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ee48133..7abe20e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@ 
+2019-10-31  Luis Machado  <luis.machado@linaro.org>
+
+	* arm-tdep.c (arm_exidx_data_key): Use bfd_key instead of
+	objfile_key.
+	(arm_exidx_new_objfile): Adjust to use objfile->obfd instead of
+	objfile to fetch per-bfd data.
+	(arm_find_exidx_entry): Likewise.
+
 2019-10-31  Christian Biesinger  <cbiesinger@google.com>
 
 	* gdbsupport/agent.c (debug_agent): Change type to bool.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 8694618..48772d7 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -1999,7 +1999,8 @@ 
   std::vector<std::vector<arm_exidx_entry>> section_maps;
 };
 
-static const struct objfile_key<arm_exidx_data> arm_exidx_data_key;
+/* Per-BFD key to store exception handling information.  */
+static const struct bfd_key<arm_exidx_data> arm_exidx_data_key;
 
 static struct obj_section *
 arm_obj_section_from_vma (struct objfile *objfile, bfd_vma vma)
@@ -2043,7 +2044,7 @@ 
   LONGEST i;
 
   /* If we've already touched this file, do nothing.  */
-  if (!objfile || arm_exidx_data_key.get (objfile) != NULL)
+  if (!objfile || arm_exidx_data_key.get (objfile->obfd) != NULL)
     return;
 
   /* Read contents of exception table and index.  */
@@ -2074,7 +2075,7 @@ 
     }
 
   /* Allocate exception table data structure.  */
-  data = arm_exidx_data_key.emplace (objfile);
+  data = arm_exidx_data_key.emplace (objfile->obfd);
   data->section_maps.resize (objfile->obfd->section_count);
 
   /* Fill in exception table.  */
@@ -2246,7 +2247,7 @@ 
       struct arm_exidx_data *data;
       struct arm_exidx_entry map_key = { memaddr - obj_section_addr (sec), 0 };
 
-      data = arm_exidx_data_key.get (sec->objfile);
+      data = arm_exidx_data_key.get (sec->objfile->obfd);
       if (data != NULL)
 	{
 	  std::vector<arm_exidx_entry> &map