From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23023 invoked by alias); 28 Nov 2007 13:50:29 -0000 Received: (qmail 22993 invoked by uid 9514); 28 Nov 2007 13:50:27 -0000 Date: Wed, 28 Nov 2007 13:50:00 -0000 Message-ID: <20071128135027.22978.qmail@sourceware.org> From: pmuldoon@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Use Bank Registers for GPR. Do not use getRegisterByName(). X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 73c6fe8aca72acc92166db968b80e906a8af83a3 X-Git-Newrev: 9ce87ebc824d9ddd20bff9b53e89b87948c45e9a Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2007-q4/txt/msg00479.txt.bz2 The branch, master has been updated via 9ce87ebc824d9ddd20bff9b53e89b87948c45e9a (commit) from 73c6fe8aca72acc92166db968b80e906a8af83a3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 9ce87ebc824d9ddd20bff9b53e89b87948c45e9a Author: Phil Muldoon Date: Wed Nov 28 13:50:19 2007 +0000 Use Bank Registers for GPR. Do not use getRegisterByName(). 2007-11-28 Phil Muldoon * PPC64LinuxElfCorefile.java (writeNotePrstatus): Add GPR registers to map. Do not use getRegisterByName() anymore. * PPC32LinuxElfCorefile.java(writeNotePrstatus): Ditto. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/util/ChangeLog | 4 ++ frysk-core/frysk/util/PPC32LinuxElfCorefile.java | 59 ++++++++++------------ frysk-core/frysk/util/PPC64LinuxElfCorefile.java | 46 ++++++++--------- 3 files changed, 52 insertions(+), 57 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index d1cda2f..2452a84 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,5 +1,9 @@ 2007-11-28 Phil Muldoon + * PPC64LinuxElfCorefile.java (writeNotePrstatus): Add GPR + registers to map. Do not use getRegisterByName() anymore. + * PPC32LinuxElfCorefile.java(writeNotePrstatus): Ditto. + * X8664LinuxElfCorefile.java (writeNotePrstatus): Do not use getRegisterByName(). Use static X8864 register constants, and task.access() diff --git a/frysk-core/frysk/util/PPC32LinuxElfCorefile.java b/frysk-core/frysk/util/PPC32LinuxElfCorefile.java index 355afce..8180acf 100644 --- a/frysk-core/frysk/util/PPC32LinuxElfCorefile.java +++ b/frysk-core/frysk/util/PPC32LinuxElfCorefile.java @@ -186,9 +186,6 @@ public class PPC32LinuxElfCorefile extends LinuxElfCorefile { // are the names are the same. Create a string[] map to bridge // gap between frysk and core file register order. - // The number of general purpose regiser. - int gprSize = 32; - // The number of total common registers in PPC/PPC64 including nip, msr, // etc. Defined in the asm-ppc/elf.h. int elfNGREG = 48; @@ -197,42 +194,40 @@ public class PPC32LinuxElfCorefile extends LinuxElfCorefile { byte[] zeroVal = new byte[] { 0 }; Register[] ptracePpcRegMap = { - PPC32Registers.NIP, - PPC32Registers.MSR, - PPC32Registers.ORIGR3, - PPC32Registers.CTR, - PPC32Registers.LR, - PPC32Registers.XER, - PPC32Registers.CCR, - PPC32Registers.MQ, - PPC32Registers.TRAP, - PPC32Registers.DAR, - PPC32Registers.DSISR, - PPC32Registers.RESULT }; - + PPC32Registers.NIP, PPC32Registers.MSR, PPC32Registers.ORIGR3, + PPC32Registers.CTR, PPC32Registers.LR, PPC32Registers.XER, + PPC32Registers.CCR, PPC32Registers.MQ, PPC32Registers.TRAP, + PPC32Registers.DAR, PPC32Registers.DSISR, PPC32Registers.RESULT, + PPC32Registers.GPR0, PPC32Registers.GPR1, PPC32Registers.GPR2, + PPC32Registers.GPR3, PPC32Registers.GPR4, PPC32Registers.GPR5, + PPC32Registers.GPR6, PPC32Registers.GPR7, PPC32Registers.GPR8, + PPC32Registers.GPR9, PPC32Registers.GPR10, PPC32Registers.GPR11, + PPC32Registers.GPR12, PPC32Registers.GPR13, PPC32Registers.GPR14, + PPC32Registers.GPR15, PPC32Registers.GPR16, PPC32Registers.GPR17, + PPC32Registers.GPR18, PPC32Registers.GPR19, PPC32Registers.GPR20, + PPC32Registers.GPR21, PPC32Registers.GPR22, PPC32Registers.GPR23, + PPC32Registers.GPR24, PPC32Registers.GPR25, PPC32Registers.GPR26, + PPC32Registers.GPR27, PPC32Registers.GPR28, PPC32Registers.GPR29, + PPC32Registers.GPR30, PPC32Registers.GPR31}; + for (int i = 0; i < ptracePpcRegMap.length; i++) { - int registerSize = ptracePpcRegMap[i].getType().getSize(); - byte[] byteOrderedRegister = new byte[registerSize]; - task.access(ptracePpcRegMap[i], 0, registerSize, byteOrderedRegister, 0, false); - prStatus.setPrGPReg(i,bytesToBigInteger(byteOrderedRegister)); + int registerSize = ptracePpcRegMap[i].getType().getSize(); + byte[] byteOrderedRegister = new byte[registerSize]; + task.access(ptracePpcRegMap[i], 0, registerSize, byteOrderedRegister, 0, false); + prStatus.setPrGPReg(i,bytesToBigInteger(byteOrderedRegister)); } - - // Set the general purpose registers. - for (int index = 0; index < gprSize; index++) - prStatus.setPrGPReg - (index, - task.getBigIntegerRegisterFIXME("gpr" + index)); - - blankRegisterIndex = gprSize + ptracePpcRegMap.length; - + + + blankRegisterIndex = ptracePpcRegMap.length; + BigInteger bigInt = new BigInteger(zeroVal); - - // On ppc, some register indexes are not defined in + + // On ppc, some register indexes are not defined in // asm-/ptrace.h. for (int index = blankRegisterIndex; index < elfNGREG; index++) prStatus.setPrGPReg(index, bigInt); - // Write it + // Write it nhdrEntry.setNhdrDesc(ElfNhdrType.NT_PRSTATUS, prStatus); } diff --git a/frysk-core/frysk/util/PPC64LinuxElfCorefile.java b/frysk-core/frysk/util/PPC64LinuxElfCorefile.java index bc0be2a..ffcc899 100644 --- a/frysk-core/frysk/util/PPC64LinuxElfCorefile.java +++ b/frysk-core/frysk/util/PPC64LinuxElfCorefile.java @@ -187,9 +187,6 @@ public class PPC64LinuxElfCorefile extends LinuxElfCorefile { // are the names are the same. Create a string[] map to bridge // gap between frysk and core file register order. - // The number of general purpose regiser. - int gprSize = 32; - // The number of total common registers in PPC/PPC64 including nip, msr, // etc. Defined in the asm-ppc64/elf.h. int elfNGREG = 48; @@ -200,37 +197,36 @@ public class PPC64LinuxElfCorefile extends LinuxElfCorefile { // XXX: if one register's offset is not defined in asm-ppc/ptrace.h or // asm-ppc64/ptrace.h,we did not dump it out and fill give the null Name. Register[] ptracePpc64RegMap = { - PPC64Registers.NIP, - PPC64Registers.MSR, - PPC64Registers.ORIGR3, - PPC64Registers.CTR, - PPC64Registers.LR, - PPC64Registers.XER, - PPC64Registers.CCR, - PPC64Registers.SOFTE, - PPC64Registers.TRAP, - PPC64Registers.DAR, - PPC64Registers.DSISR, - PPC64Registers.RESULT }; + PPC64Registers.NIP, PPC64Registers.MSR, PPC64Registers.ORIGR3, + PPC64Registers.CTR, PPC64Registers.LR, PPC64Registers.XER, + PPC64Registers.CCR, PPC64Registers.SOFTE, PPC64Registers.TRAP, + PPC64Registers.DAR, PPC64Registers.DSISR, PPC64Registers.RESULT, + PPC64Registers.GPR0, PPC64Registers.GPR1, PPC64Registers.GPR2, + PPC64Registers.GPR3, PPC64Registers.GPR4, PPC64Registers.GPR5, + PPC64Registers.GPR6, PPC64Registers.GPR7, PPC64Registers.GPR8, + PPC64Registers.GPR9, PPC64Registers.GPR10, PPC64Registers.GPR11, + PPC64Registers.GPR12, PPC64Registers.GPR13, PPC64Registers.GPR14, + PPC64Registers.GPR15, PPC64Registers.GPR16, PPC64Registers.GPR17, + PPC64Registers.GPR18, PPC64Registers.GPR19, PPC64Registers.GPR20, + PPC64Registers.GPR21, PPC64Registers.GPR22, PPC64Registers.GPR23, + PPC64Registers.GPR24, PPC64Registers.GPR25, PPC64Registers.GPR26, + PPC64Registers.GPR27, PPC64Registers.GPR28, PPC64Registers.GPR29, + PPC64Registers.GPR30, PPC64Registers.GPR31}; for (int i = 0; i < ptracePpc64RegMap.length; i++) { - int registerSize = ptracePpc64RegMap[i].getType().getSize(); - byte[] byteOrderedRegister = new byte[registerSize]; - task.access(ptracePpc64RegMap[i], 0, registerSize, byteOrderedRegister, 0, false); - prStatus.setPrGPReg(i, bytesToBigInteger(byteOrderedRegister)); + int registerSize = ptracePpc64RegMap[i].getType().getSize(); + byte[] byteOrderedRegister = new byte[registerSize]; + task.access(ptracePpc64RegMap[i], 0, registerSize, byteOrderedRegister, 0, false); + prStatus.setPrGPReg(i, bytesToBigInteger(byteOrderedRegister)); } - // Set the general purpose registers. - for (int index = 0; index < gprSize; index++) - prStatus.setPrGPReg - (index, task.getBigIntegerRegisterFIXME("gpr" + index)); - blankRegisterIndex = gprSize + ptracePpc64RegMap.length; + blankRegisterIndex = ptracePpc64RegMap.length; BigInteger bigInt = new BigInteger(zeroVal); // On ppc, some register indexes are not defined in - // asm-/ptrace.h. + // asm-/ptrace.h. for (int index = blankRegisterIndex; index < elfNGREG; index++) prStatus.setPrGPReg(index, bigInt); hooks/post-receive -- frysk system monitor/debugger