From 8edfa9268a4edf0a22389140be2007ce48167352 Mon Sep 17 00:00:00 2001
From: Bryce McKinlay <mckinlay@redhat.com>
Date: Thu, 13 May 2004 17:30:41 +0000
Subject: [PATCH] 2004-05-13  Bryce McKinlay  <mckinlay@redhat.com>

	* dwarf2loc.c (find_location_expression): Use ANOFFSET to adjust
	base_address for shared libraries.
---
 gdb/ChangeLog   | 5 +++++
 gdb/dwarf2loc.c | 5 ++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d3dbedb7102..d035f9504b5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-13  Bryce McKinlay  <mckinlay@redhat.com>
+
+	* dwarf2loc.c (find_location_expression): Use ANOFFSET to adjust
+	base_address for shared libraries.
+
 2004-05-13  Bryce McKinlay  <mckinlay@redhat.com>
 
 	* MAINTAINERS (write after approval): Add myself.	
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index ef333f7e770..cdbeb10acf4 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -53,11 +53,14 @@ static char *
 find_location_expression (struct dwarf2_loclist_baton *baton,
 			  size_t *locexpr_length, CORE_ADDR pc)
 {
-  CORE_ADDR base_address = baton->base_address;
   CORE_ADDR low, high;
   char *loc_ptr, *buf_end;
   unsigned int addr_size = TARGET_ADDR_BIT / TARGET_CHAR_BIT, length;
   CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
+  /* Adjust base_address for relocatable objects.  */
+  CORE_ADDR base_offset = ANOFFSET (baton->objfile->section_offsets,
+				    SECT_OFF_TEXT (baton->objfile));
+  CORE_ADDR base_address = baton->base_address + base_offset;
 
   loc_ptr = baton->data;
   buf_end = baton->data + baton->size;
-- 
GitLab