From: "Leif Lindholm" <quic_llindhol@quicinc.com>
To: Rebecca Cran <rebecca@bsdio.com>
Cc: <devel@edk2.groups.io>, <rebecca@os.amperecomputing.com>,
Ard Biesheuvel <ardb+tianocore@kernel.org>,
Abner Chang <abner.chang@amd.com>,
Michael D Kinney <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/1] EmbeddedPkg/Scripts/LauterbachT32: Fix EfiLoadDxe.cmm
Date: Mon, 12 Feb 2024 17:41:07 +0000 [thread overview]
Message-ID: <ZcpYM0PpCimat5Vd@qc-i7.hemma.eciton.net> (raw)
In-Reply-To: <d08403f1-1c6e-4d04-aaaf-c65bef412ba3@bsdio.com>
On Sun, Feb 11, 2024 at 16:10:32 -0700, Rebecca Cran wrote:
> I'm guessing there haven't been any reviews because so few people are
> familiar with the PRACTICE scripting language.
>
> If there's nobody who can review it, could I get approval to commit it
> anyway?
I'm good with that (after stable tag, of course):
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
It would make sense to also add you as a maintainer for
EmbeddedPkg/Scripts/LauterbachT32/
Regards,
Leif
> --
>
> Rebecca Cran
>
>
> On 1/29/24 12:01, Rebecca Cran via groups.io wrote:
> > There have been many changes since EfiLoadDxe.cmm was last updated in
> > 2011. The EFI_SYSTEM_TABLE can no longer be found by scanning memory on
> > 4KB boundaries, so require users pass in its address instead. Update
> > various offsets so that the debug information can be found and loaded
> > with a recent version of TRACE32.
> >
> > Signed-off-by: Rebecca Cran <rebecca@os.amperecomputing.com>
> > ---
> > EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm | 77 +++-----------------
> > EmbeddedPkg/Scripts/LauterbachT32/EfiProcessPeImage.cmm | 7 +-
> > EmbeddedPkg/Scripts/LauterbachT32/Readme.md | 8 +-
> > 3 files changed, 19 insertions(+), 73 deletions(-)
> >
> > diff --git a/EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm b/EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm
> > index 1605a9b478df..06d307e12d8c 100644
> > --- a/EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm
> > +++ b/EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm
> > @@ -1,79 +1,22 @@
> > ;
> > +; Copyright (c) 2024, Ampere Computing LLC. All rights reserved.<BR>
> > ; Copyright (c) 2011, Hewlett-Packard Company. All rights reserved.<BR>
> > ;
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> > ;
> > - LOCAL &maxmem &systbl &memsize
> > -
> > - &memsize=0x20000000 ; default to 512MB
> > -
> > - gosub FindSystemTable &memsize
> > - ENTRY &systbl
> > -
> > - if &systbl!=0
> > - (
> > - print "found system table at &systbl"
> > - gosub FindDebugInfo &systbl
> > - )
> > - else
> > - (
> > - print "ERROR: system table not found, check memory size"
> > - )
> > + PARAMETERS &systbl
> > +
> > + gosub FindDebugInfo &systbl
> > enddo
> > -FindSystemTable:
> > - LOCAL &TopOfRam &offset
> > - ENTRY &TopOfRam
> > -
> > - print "FindSystemTable"
> > - print "top of mem is &TopOfRam$"
> > -
> > - &offset=&TopOfRam
> > -
> > - ; align to highest 4MB boundary
> > - &offset=&offset&0xFFC00000
> > -
> > - ; start at top and look on 4MB boundaries for system table ptr structure
> > - while &offset>0
> > - (
> > - ; low signature match
> > - if Data.Long(a:&offset)==0x20494249
> > - (
> > - ; high signature match
> > - if Data.Long(a:&offset+4)==0x54535953
> > - (
> > - ; less than 4GB?
> > - if Data.Long(a:&offset+0x0c)==0
> > - (
> > - ; less than top of ram?
> > - if Data.Long(a:&offset+8)<&TopOfRam
> > - (
> > - return Data.Long(a:&offset+8)
> > - )
> > - )
> > - )
> > - )
> > -
> > - if &offset<0x400000
> > - (
> > - return 0
> > - )
> > - &offset=&offset-0x400000
> > - )
> > -
> > - return 0
> > -
> > -
> > FindDebugInfo:
> > LOCAL &SystemTable &CfgTableEntries &ConfigTable &i &offset &dbghdr &dbgentries &dbgptr &dbginfo &loadedimg
> > ENTRY &SystemTable
> > - print "FindDebugInfo"
> > -
> > &dbgentries=0
> > - &CfgTableEntries=Data.Long(a:&SystemTable+0x40)
> > - &ConfigTable=Data.Long(a:&SystemTable+0x44)
> > + &CfgTableEntries=Data.Long(a:&SystemTable+0x68)
> > + &ConfigTable=Data.Long(a:&SystemTable+0x70)
> > print "config table is at &ConfigTable (&CfgTableEntries entries)"
> > @@ -82,7 +25,7 @@ FindDebugInfo:
> > &i=0
> > while &i<&CfgTableEntries
> > (
> > - &offset=&ConfigTable+(&i*0x14)
> > + &offset=&ConfigTable+(&i*0x18)
> > if Data.Long(a:&offset)==0x49152E77
> > (
> > if Data.Long(a:&offset+4)==0x47641ADA
> > @@ -120,8 +63,10 @@ FindDebugInfo:
> > (
> > if Data.Long(a:&dbginfo)==1 ; normal debug info type
> > (
> > - &loadedimg=Data.Long(a:&dbginfo+4)
> > - do EfiProcessPeImage Data.Long(a:&loadedimg+0x20)
> > + &loadedimg=Data.Long(a:&dbginfo+8)
> > + &imagebaseptr=&loadedimg+0x40
> > + &imagebase=Data.Long(a:&imagebaseptr)
> > + do ~~~~/EfiProcessPeImage.cmm "&imagebase"
> > )
> > )
> > &i=&i+1
> > diff --git a/EmbeddedPkg/Scripts/LauterbachT32/EfiProcessPeImage.cmm b/EmbeddedPkg/Scripts/LauterbachT32/EfiProcessPeImage.cmm
> > index c3aab9d06a47..b0d97eec71b0 100644
> > --- a/EmbeddedPkg/Scripts/LauterbachT32/EfiProcessPeImage.cmm
> > +++ b/EmbeddedPkg/Scripts/LauterbachT32/EfiProcessPeImage.cmm
> > @@ -1,4 +1,5 @@
> > ;
> > +; Copyright (c) 2024, Ampere Computing LLC. All rights reserved.<BR>
> > ; Copyright (c) 2011, Hewlett-Packard Company. All rights reserved.<BR>
> > ;
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> > @@ -10,11 +11,11 @@
> > &imgstart=&imgstart
> > print "PE32 image found at &imgstart"
> > - ; offset from dos hdr to PE file hdr
> > + ; offset from dos hdr to PE file hdr (i.e. 'PE\0\0' signature)
> > &filehdrstart=&imgstart+Data.Long(c:&imgstart+0x3C)
> > ; offset to debug dir in PE hdrs
> > - &debugdirentryrva=Data.Long(c:&filehdrstart+0xA8)
> > + &debugdirentryrva=Data.Long(c:&imgstart+0xf10)
> > if &debugdirentryrva==0
> > (
> > print "no debug dir for image at &imgstart"
> > @@ -62,7 +63,7 @@
> > &elfbase=&baseofdata;
> > )
> > - print "found path &elfpath"
> > + print "found path &elfpath with address &elfbase"
> > ON ERROR GOSUB
> > return
> > data.load.elf &elfpath &elfbase /NOCODE /NOCLEAR
> > diff --git a/EmbeddedPkg/Scripts/LauterbachT32/Readme.md b/EmbeddedPkg/Scripts/LauterbachT32/Readme.md
> > index 51d2c8da5405..c30ec20a3d96 100644
> > --- a/EmbeddedPkg/Scripts/LauterbachT32/Readme.md
> > +++ b/EmbeddedPkg/Scripts/LauterbachT32/Readme.md
> > @@ -1,10 +1,10 @@
> > # DXE Phase Debug
> > -Update the memsize variable in EfiLoadDxe.cmm for the actual amount of memory
> > -available in your system. Allow your system to boot to the point that the DXE
> > +Allow your system to boot to the point that the DXE
> > core is initialized (so that the System Table and Debug Information table is
> > present in memory) and execute this script (using the toolbar button or
> > -'do EfiLoadDxe' from the command area). It will scan memory for the debug info
> > -table and load modules in it.
> > +'do EfiLoadDxe "0xGST_ADDRESS"' from the command area). 'GST_ADDRESS' is the
> > +address of the EFI_SYSTEM_TABLE, and can be found by the global `gST`.
> > +The script will scan memory for the debug info table and load modules in it.
> > # SEC/PEI Phase Debug
> > There is no way to autodetect where these images reside so you must pass an
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115369): https://edk2.groups.io/g/devel/message/115369
Mute This Topic: https://groups.io/mt/104038273/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-02-12 17:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-29 19:01 [edk2-devel] [PATCH 0/1] EmbeddedPkg/Scripts/LauterbachT32: Fix EfiLoadDxe.cmm Rebecca Cran via groups.io
2024-01-29 19:01 ` [edk2-devel] [PATCH 1/1] " Rebecca Cran via groups.io
2024-02-11 23:10 ` Rebecca Cran
2024-02-12 17:41 ` Leif Lindholm [this message]
2024-02-27 17:24 ` Rebecca Cran
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-list 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=ZcpYM0PpCimat5Vd@qc-i7.hemma.eciton.net \
--to=devel@edk2.groups.io \
/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