public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Rebecca Cran" <rebecca@bsdio.com>
To: devel@edk2.groups.io, rebecca@os.amperecomputing.com,
	Leif Lindholm <quic_llindhol@quicinc.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: Sun, 11 Feb 2024 16:10:32 -0700	[thread overview]
Message-ID: <d08403f1-1c6e-4d04-aaaf-c65bef412ba3@bsdio.com> (raw)
In-Reply-To: <20240129190136.1377641-2-rebecca@os.amperecomputing.com>

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?

-- 

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 (#115345): https://edk2.groups.io/g/devel/message/115345
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-11 23:10 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 [this message]
2024-02-12 17:41     ` Leif Lindholm
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=d08403f1-1c6e-4d04-aaaf-c65bef412ba3@bsdio.com \
    --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