EmbeddedPkg/LauterbachT32: Lauterbach T32 Debug Scripts
These scripts are used for UEFI Source debugging with Lauterbach T32. They can be used at different stages of the UEFI boot time. A README.txt file explains how to use these scripts. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11599 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
135
EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm
Executable file
135
EmbeddedPkg/Scripts/LauterbachT32/EfiLoadDxe.cmm
Executable file
@@ -0,0 +1,135 @@
|
||||
;
|
||||
; Copyright (c) 2011, Hewlett-Packard Company. All rights reserved.<BR>
|
||||
;
|
||||
; This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;
|
||||
|
||||
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"
|
||||
)
|
||||
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)
|
||||
|
||||
print "config table is at &ConfigTable (&CfgTableEntries entries)"
|
||||
|
||||
; now search for debug info entry with guid 49152E77-1ADA-4764-B7A2-7AFEFED95E8B
|
||||
; 0x49152E77 0x47641ADA 0xFE7AA2B7 0x8B5ED9FE
|
||||
&i=0
|
||||
while &i<&CfgTableEntries
|
||||
(
|
||||
&offset=&ConfigTable+(&i*0x14)
|
||||
if Data.Long(a:&offset)==0x49152E77
|
||||
(
|
||||
if Data.Long(a:&offset+4)==0x47641ADA
|
||||
(
|
||||
if Data.Long(a:&offset+8)==0xFE7AA2B7
|
||||
(
|
||||
if Data.Long(a:&offset+0xc)==0x8B5ED9FE
|
||||
(
|
||||
&dbghdr=Data.Long(a:&offset+0x10)
|
||||
&dbgentries=Data.Long(a:&dbghdr+4)
|
||||
&dbgptr=Data.Long(a:&dbghdr+8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
&i=&i+1
|
||||
)
|
||||
|
||||
if &dbgentries==0
|
||||
(
|
||||
print "no debug entries found"
|
||||
return
|
||||
)
|
||||
|
||||
print "debug table at &dbgptr (&dbgentries entries)"
|
||||
|
||||
symbol.reset
|
||||
|
||||
&i=0
|
||||
while &i<&dbgentries
|
||||
(
|
||||
&dbginfo=Data.Long(a:&dbgptr+(&i*4))
|
||||
if &dbginfo!=0
|
||||
(
|
||||
if Data.Long(a:&dbginfo)==1 ; normal debug info type
|
||||
(
|
||||
&loadedimg=Data.Long(a:&dbginfo+4)
|
||||
do EfiProcessPeImage Data.Long(a:&loadedimg+0x20)
|
||||
)
|
||||
)
|
||||
&i=&i+1
|
||||
)
|
||||
return
|
Reference in New Issue
Block a user