public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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]
-=-=-=-=-=-=-=-=-=-=-=-



  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