solib_global_lookup: Fetch arch from objfile.

Message ID m3tx2jbqpu.fsf@seba.sebabeach.org
State New, archived
Headers

Commit Message

Doug Evans Nov. 1, 2014, 2:27 a.m. UTC
  Hi.

solib_global_lookup should be using the objfile's arch,
not fetching it from global state.

Regression tested on amd64-linux.

2014-10-31  Doug Evans  <xdje42@gmail.com>

	* objfiles.c (get_objfile_arch): Constify.
	* objfiles.h (get_objfile_arch): Update prototype.
	* solib.c (solib_global_lookup): Fetch arch from objfile,
	not target_gdbarch.
  

Comments

Doug Evans Nov. 7, 2014, 1:12 a.m. UTC | #1
Doug Evans <xdje42@gmail.com> writes:
> Hi.
>
> solib_global_lookup should be using the objfile's arch,
> not fetching it from global state.
>
> Regression tested on amd64-linux.
>
> 2014-10-31  Doug Evans  <xdje42@gmail.com>
>
> 	* objfiles.c (get_objfile_arch): Constify.
> 	* objfiles.h (get_objfile_arch): Update prototype.
> 	* solib.c (solib_global_lookup): Fetch arch from objfile,
> 	not target_gdbarch.

Committed.
  

Patch

diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 2a5c15f..38a365c 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -366,8 +366,9 @@  allocate_objfile (bfd *abfd, const char *name, int flags)
 }
 
 /* Retrieve the gdbarch associated with OBJFILE.  */
+
 struct gdbarch *
-get_objfile_arch (struct objfile *objfile)
+get_objfile_arch (const struct objfile *objfile)
 {
   return objfile->per_bfd->gdbarch;
 }
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 57a94e1..af80c0c 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -465,7 +465,7 @@  struct objfile
 
 extern struct objfile *allocate_objfile (bfd *, const char *name, int);
 
-extern struct gdbarch *get_objfile_arch (struct objfile *);
+extern struct gdbarch *get_objfile_arch (const struct objfile *);
 
 extern int entry_point_address_query (CORE_ADDR *entry_p);
 
diff --git a/gdb/solib.c b/gdb/solib.c
index 41250a2..6260dac 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -1408,7 +1408,7 @@  solib_global_lookup (const struct objfile *objfile,
 		     const char *name,
 		     const domain_enum domain)
 {
-  const struct target_so_ops *ops = solib_ops (target_gdbarch ());
+  const struct target_so_ops *ops = solib_ops (get_objfile_arch (objfile));
 
   if (ops->lookup_lib_global_symbol != NULL)
     return ops->lookup_lib_global_symbol (objfile, name, domain);