public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Simplify SOLibMapBuilder, and unbotch build. Date: Tue, 19 Feb 2008 16:43:00 -0000 [thread overview] Message-ID: <20080219164316.25572.qmail@sourceware.org> (raw) The branch, master has been updated via 671c1792694679b286b5dcac3c31430b9a6db350 (commit) from 06cbed2bceaedb7beb6719a3395f48b21ea279ef (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 671c1792694679b286b5dcac3c31430b9a6db350 Author: Andrew Cagney <cagney@redhat.com> Date: Tue Feb 19 11:41:59 2008 -0500 Simplify SOLibMapBuilder, and unbotch build. frysk-core/frysk/proc/dead/ChangeLog 2008-02-19 Andrew Cagney <cagney@redhat.com> * SOLibMapBuilder.java (construct(File,long)): Replace construct(File,long,long). * LinuxCoreProc.java: Update. * LinuxExeProc.java: Update. frysk-core/frysk/util/ChangeLog 2008-02-19 Andrew Cagney <cagney@redhat.com> * TestCoredumpAction.java: Fix merge botch. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/dead/ChangeLog | 5 ++ frysk-core/frysk/proc/dead/LinuxCoreProc.java | 5 +- frysk-core/frysk/proc/dead/LinuxExeProc.java | 2 +- frysk-core/frysk/proc/dead/SOLibMapBuilder.java | 70 +++++++++++------------ frysk-core/frysk/util/ChangeLog | 10 ++- frysk-core/frysk/util/TestCoredumpAction.java | 9 +--- 6 files changed, 50 insertions(+), 51 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog index 013bbfc..4f48c46 100644 --- a/frysk-core/frysk/proc/dead/ChangeLog +++ b/frysk-core/frysk/proc/dead/ChangeLog @@ -1,5 +1,10 @@ 2008-02-19 Andrew Cagney <cagney@redhat.com> + * SOLibMapBuilder.java (construct(File,long)): Replace + construct(File,long,long). + * LinuxCoreProc.java: Update. + * LinuxExeProc.java: Update. + * CorefileByteBuffer.java: Update to match lib.dwfl. * SOLibMapBuilder.java: Ditto. * LinuxExeHost.java: Ditto. diff --git a/frysk-core/frysk/proc/dead/LinuxCoreProc.java b/frysk-core/frysk/proc/dead/LinuxCoreProc.java index 1a51aa6..4f62d03 100644 --- a/frysk-core/frysk/proc/dead/LinuxCoreProc.java +++ b/frysk-core/frysk/proc/dead/LinuxCoreProc.java @@ -471,14 +471,15 @@ 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,this.getMainTask().getISA().wordSize()); + SOMaps.construct(new File(singleLinkMap.name), + singleLinkMap.l_addr); 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,this.getMainTask().getISA().wordSize()); + SOMaps.construct(this.exefileBackEnd, 0); // Reconcile maps Iterator i = SOMaps.list.iterator(); diff --git a/frysk-core/frysk/proc/dead/LinuxExeProc.java b/frysk-core/frysk/proc/dead/LinuxExeProc.java index 02add4d..00c9af8 100644 --- a/frysk-core/frysk/proc/dead/LinuxExeProc.java +++ b/frysk-core/frysk/proc/dead/LinuxExeProc.java @@ -121,7 +121,7 @@ public class LinuxExeProc extends DeadProc { BuildExeMaps SOMaps = new BuildExeMaps(); // Add in case for executables maps. - SOMaps.construct(this.host.exeFile, 0, this.getMainTask().getISA().wordSize()); + SOMaps.construct(this.host.exeFile, 0); } } diff --git a/frysk-core/frysk/proc/dead/SOLibMapBuilder.java b/frysk-core/frysk/proc/dead/SOLibMapBuilder.java index 9b1b945..e5442a6 100644 --- a/frysk-core/frysk/proc/dead/SOLibMapBuilder.java +++ b/frysk-core/frysk/proc/dead/SOLibMapBuilder.java @@ -58,47 +58,45 @@ public abstract class SOLibMapBuilder { protected SOLibMapBuilder() { } - /** - * Scan the ELF file building up a list of memory maps. - */ - public final void construct(File clientSolib, long base_addr, int wordSize) { - - Elf solib = openElf(clientSolib); - ElfEHeader eHeader = solib.getEHeader(); - - for(int z=0; z<eHeader.phnum; z++) - { + /** + * Scan the ELF file building up a list of memory maps. + */ + public final void construct(File clientSolib, long baseAddr) { + Elf solib = openElf(clientSolib); + ElfEHeader eHeader = solib.getEHeader(); + int wordSize = eHeader.getWordSize(); - ElfPHeader pHeader = solib.getPHeader(z); - if ((pHeader.type == ElfPHeader.PTYPE_LOAD) ) - { - if (base_addr + pHeader.vaddr != 0) - { - 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; + for(int z=0; z<eHeader.phnum; z++) { + ElfPHeader pHeader = solib.getPHeader(z); + if ((pHeader.type == ElfPHeader.PTYPE_LOAD)) { + if (baseAddr + pHeader.vaddr != 0) { + 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); + long mapBegin = baseAddr + (pHeader.vaddr &~ (pHeader.align-1)); + long mapEnd = baseAddr + ((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; - } + // On 32 bit systems, if a segment has been + // relocated ie baseAddr > 0 and baseAddr + 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); + long aOffset = (pHeader.offset &- pHeader.align); + buildMap(mapBegin, mapEnd, read, write, execute, + aOffset, clientSolib.getPath(),pHeader.align); + } } - } - } - solib.close(); - } + } + solib.close(); + } /** * Build an address map covering [addressLow,addressHigh) with diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index 8778118..fb96bc0 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,13 +1,15 @@ 2008-02-19 Andrew Cagney <cagney@redhat.com> - * CoredumpAction.java: Add stacjOnly parameter. - * TestCoredumpAction.java (testStackOnlyMap): New. + * TestCoredumpAction.java: Fix merge botch. -2008-02-19 Phil Muldoon <pmuldoon@redhat.com> - * CommandlineParser.java: Update to match lib.dwfl. * TestCoredumpAction.java: Ditto. +2008-02-19 Phil Muldoon <pmuldoon@redhat.com> + + * CoredumpAction.java: Add stackOnly parameter. + * TestCoredumpAction.java (testStackOnlyMap): New. + 2008-02-14 Andrew Cagney <cagney@redhat.com> * CommandlineParser.java (parsePids(Proc[])): Replace diff --git a/frysk-core/frysk/util/TestCoredumpAction.java b/frysk-core/frysk/util/TestCoredumpAction.java index f6ef1ff..27faf47 100644 --- a/frysk-core/frysk/util/TestCoredumpAction.java +++ b/frysk-core/frysk/util/TestCoredumpAction.java @@ -269,14 +269,7 @@ public class TestCoredumpAction coreMap = coreMaps[mapNo]; assertNotNull("Cannot find stack in core process", coreMap); - Elf testElf = null; - try { - testElf = new Elf (coreFileName, - ElfCommand.ELF_C_READ); - } catch(Exception e) { - fail("Cannot open elf file"+coreFileName); - } - + Elf testElf = new Elf(testCore, ElfCommand.ELF_C_READ); ElfEHeader header = testElf.getEHeader(); int count = header.phnum; int segCount = 0; hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-02-19 16:43 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=20080219164316.25572.qmail@sourceware.org \ --to=cagney@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: linkBe 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).