mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg: bring DS-5 scripts in line with linker script changes
The ARM and AARCH64 linker scripts have recently been updated so that the memory layouts of the ELF and PE/COFF versions of each module are identical. In particular, this means that the ELF images now have a hole before the first section rather than starting at offset 0x0, which means we no longer have to correct for this difference when loading the ELF image into the debugger. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18775 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
b3535ab4ef
commit
0ce8410ed7
|
@ -94,9 +94,7 @@ class EfiSectionTE:
|
||||||
stripped_size = struct.unpack("<H", self.ec.getMemoryService().read(self.base_te + 0x6, 2, 32))[0]
|
stripped_size = struct.unpack("<H", self.ec.getMemoryService().read(self.base_te + 0x6, 2, 32))[0]
|
||||||
stripped_size -= EfiSectionTE.SIZEOF_EFI_TE_IMAGE_HEADER
|
stripped_size -= EfiSectionTE.SIZEOF_EFI_TE_IMAGE_HEADER
|
||||||
|
|
||||||
base_of_code = self.ec.getMemoryService().readMemory32(self.base_te + 0xC)
|
return self.base_te - stripped_size
|
||||||
|
|
||||||
return self.base_te + base_of_code - stripped_size
|
|
||||||
|
|
||||||
class EfiSectionPE32:
|
class EfiSectionPE32:
|
||||||
def __init__(self, ec, base_pe32):
|
def __init__(self, ec, base_pe32):
|
||||||
|
@ -131,16 +129,7 @@ class EfiSectionPE32:
|
||||||
return filename[0:string.find(filename,'\0')]
|
return filename[0:string.find(filename,'\0')]
|
||||||
|
|
||||||
def get_debug_elfbase(self):
|
def get_debug_elfbase(self):
|
||||||
# Offset from dos hdr to PE file hdr
|
return self.base_pe32
|
||||||
pe_file_header = self.base_pe32 + self.ec.getMemoryService().readMemory32(self.base_pe32 + 0x3C)
|
|
||||||
|
|
||||||
base_of_code = self.base_pe32 + self.ec.getMemoryService().readMemory32(pe_file_header + 0x28)
|
|
||||||
base_of_data = self.base_pe32 + self.ec.getMemoryService().readMemory32(pe_file_header + 0x2C)
|
|
||||||
|
|
||||||
if (base_of_code < base_of_data) and (base_of_code != 0):
|
|
||||||
return base_of_code
|
|
||||||
else:
|
|
||||||
return base_of_data
|
|
||||||
|
|
||||||
class EfiSectionPE64:
|
class EfiSectionPE64:
|
||||||
def __init__(self, ec, base_pe64):
|
def __init__(self, ec, base_pe64):
|
||||||
|
@ -176,16 +165,7 @@ class EfiSectionPE64:
|
||||||
return filename[0:string.find(filename,'\0')]
|
return filename[0:string.find(filename,'\0')]
|
||||||
|
|
||||||
def get_debug_elfbase(self):
|
def get_debug_elfbase(self):
|
||||||
# Offset from dos hdr to PE file hdr
|
return self.base_pe64
|
||||||
pe_file_header = self.base_pe64 + self.ec.getMemoryService().readMemory32(self.base_pe64 + 0x3C)
|
|
||||||
|
|
||||||
base_of_code = self.base_pe64 + self.ec.getMemoryService().readMemory32(pe_file_header + 0x28)
|
|
||||||
base_of_data = self.base_pe64 + self.ec.getMemoryService().readMemory32(pe_file_header + 0x2C)
|
|
||||||
|
|
||||||
if (base_of_code < base_of_data) and (base_of_code != 0):
|
|
||||||
return base_of_code
|
|
||||||
else:
|
|
||||||
return base_of_data
|
|
||||||
|
|
||||||
class FirmwareFile:
|
class FirmwareFile:
|
||||||
EFI_FV_FILETYPE_RAW = 0x01
|
EFI_FV_FILETYPE_RAW = 0x01
|
||||||
|
|
Loading…
Reference in New Issue