public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: pmuldoon@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: 2008-01-17  Phil Muldoon  <pmuldoon@redhat.com>
Date: Thu, 17 Jan 2008 17:34:00 -0000	[thread overview]
Message-ID: <20080117173426.21276.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  6ec6bc5eb0b14e12428b9effdfec76a7b9179536 (commit)
      from  60492e907b8182e4bc2a9f27d467ef79a14dfb30 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 6ec6bc5eb0b14e12428b9effdfec76a7b9179536
Author: Phil Muldoon <pmuldoon@redhat.com>
Date:   Thu Jan 17 17:34:13 2008 +0000

    2008-01-17  Phil Muldoon  <pmuldoon@redhat.com>
    
    	* LinuxCoreProc.java (constructEnhandedMetaData): Pass wordSize
    	to SOLibMapBuilder.
    	* LinuxExeProc.java (buildMetaData): Ditto.
    	* SOLibMapBuilder.jav (construct): Account for 32 bit address
    	overlapping on ld_addr relocation.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/proc/dead/ChangeLog            |    9 +++++++++
 frysk-core/frysk/proc/dead/LinuxCoreProc.java   |    4 ++--
 frysk-core/frysk/proc/dead/LinuxExeProc.java    |    2 +-
 frysk-core/frysk/proc/dead/SOLibMapBuilder.java |   15 +++++++++++++--
 4 files changed, 25 insertions(+), 5 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index c152771..081afce 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,3 +1,12 @@
+2008-01-17  Phil Muldoon  <pmuldoon@redhat.com>
+
+	* LinuxCoreProc.java (constructEnhandedMetaData): Pass wordSize
+	to SOLibMapBuilder.
+	* LinuxExeProc.java (buildMetaData): Ditto.
+	* SOLibMapBuilder.jav (construct): Account for 32 bit address
+	overlapping on ld_addr relocation.
+	
+
 2008-01-16  Andrew Cagney  <cagney@redhat.com>
 
 	* DeadTask.java (getRegisterBanks()): New; add RegisterBanks to
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreProc.java b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
index 840aa11..bfd753c 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
@@ -420,14 +420,14 @@ public class LinuxCoreProc extends DeadProc {
 	while (mapsIterator.hasNext()) {
 	    Linkmap singleLinkMap = (Linkmap) mapsIterator.next();
 	    if ((!singleLinkMap.name.equals("")) && (!singleLinkMap.name.equals("[vdso]")))
-		SOMaps.construct(new File(singleLinkMap.name),singleLinkMap.l_addr);
+		SOMaps.construct(new File(singleLinkMap.name),singleLinkMap.l_addr,this.getMainTask().getISA().wordSize());
 	    if (singleLinkMap.name.equals("[vdso]"))
 		SOMaps.buildMap(singleLinkMap.l_addr,0,true,true,true,0,singleLinkMap.name,0x1000);
 	}
 
 
 	// Add in case for executables maps.
-	SOMaps.construct(this.exefileBackEnd,0);
+	SOMaps.construct(this.exefileBackEnd,0,this.getMainTask().getISA().wordSize());
 
     
 	// Reconcile maps
diff --git a/frysk-core/frysk/proc/dead/LinuxExeProc.java b/frysk-core/frysk/proc/dead/LinuxExeProc.java
index 1b00342..89c38ee 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeProc.java
@@ -124,7 +124,7 @@ public class LinuxExeProc extends DeadProc {
 	
 	BuildExeMaps SOMaps = new BuildExeMaps();
 	// Add in case for executables maps.
-	SOMaps.construct(this.host.exeFile, 0);
+	SOMaps.construct(this.host.exeFile, 0, this.getMainTask().getISA().wordSize());
     }
 
 }
diff --git a/frysk-core/frysk/proc/dead/SOLibMapBuilder.java b/frysk-core/frysk/proc/dead/SOLibMapBuilder.java
index 2543230..930e12b 100644
--- a/frysk-core/frysk/proc/dead/SOLibMapBuilder.java
+++ b/frysk-core/frysk/proc/dead/SOLibMapBuilder.java
@@ -65,7 +65,7 @@ public abstract class SOLibMapBuilder
    * Scan the maps file found in <tt>/proc/PID/auxv</tt> building up
    * a list of memory maps.  Return true if the scan was successful.
    */
-  public final void construct (File clientSolib, long base_addr)
+  public final void construct (File clientSolib, long base_addr, int wordSize)
   {
 
     Elf solib = openElf(clientSolib);
@@ -82,9 +82,20 @@ public abstract class SOLibMapBuilder
 		boolean read = (pHeader.flags &  ElfPHeader.PHFLAG_READABLE) > 0 ? true:false;
 		boolean write =  (pHeader.flags & ElfPHeader.PHFLAG_WRITABLE) > 0 ? true:false;
 		boolean execute = (pHeader.flags & ElfPHeader.PHFLAG_EXECUTABLE) > 0 ? true:false;
-	    
+		
 		long mapBegin = base_addr + (pHeader.vaddr &~ (pHeader.align-1));
 		long mapEnd = base_addr + ((pHeader.vaddr + pHeader.memsz) + pHeader.align -1) &~ (pHeader.align-1);
+
+		// On 32 bit systems, if a segment has been relocated ie base_addr > 0 and base_addr + vaddr is
+		// more than 0xffffffff then the address overlaps to 0++. As we are using a long, so it can store
+		// 64 bit addresses on 64 bit systems, check wordsize == 4 and if so, limit size of address space
+		//  to 32 bits.
+		if (wordSize == 4)
+		{
+		    mapBegin &= 0x00000000ffffffffl;
+		    mapEnd &= 0x00000000ffffffffl;
+		}
+
 		long aOffset = (pHeader.offset &- pHeader.align);
 		buildMap(mapBegin, mapEnd, read, write, execute, 
 			aOffset, clientSolib.getPath(),pHeader.align);


hooks/post-receive
--
frysk system monitor/debugger


                 reply	other threads:[~2008-01-17 17:34 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080117173426.21276.qmail@sourceware.org \
    --to=pmuldoon@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).