On 6 November 2015 at 08:25, Ard Biesheuvel <ard.biesheu...@linaro.org> wrote:
> 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.biesheu...@linaro.org>

Leif,

Vladimir has confirmed that this patch fixes the DS-5 problems he was observing.
Are you happy with me merging this patch?

Thanks,
Ard.

> ---
>  ArmPlatformPkg/Scripts/Ds5/firmware_volume.py | 26 +++-----------------
>  1 file changed, 3 insertions(+), 23 deletions(-)
>
> diff --git a/ArmPlatformPkg/Scripts/Ds5/firmware_volume.py 
> b/ArmPlatformPkg/Scripts/Ds5/firmware_volume.py
> index 8e3a8adc9bc8..c434e3de19da 100644
> --- a/ArmPlatformPkg/Scripts/Ds5/firmware_volume.py
> +++ b/ArmPlatformPkg/Scripts/Ds5/firmware_volume.py
> @@ -94,9 +94,7 @@ class EfiSectionTE:
>          stripped_size = struct.unpack("<H", 
> self.ec.getMemoryService().read(self.base_te + 0x6, 2, 32))[0]
>          stripped_size -= EfiSectionTE.SIZEOF_EFI_TE_IMAGE_HEADER
>
> -        base_of_code = self.ec.getMemoryService().readMemory32(self.base_te 
> + 0xC)
> -
> -        return self.base_te + base_of_code - stripped_size
> +        return self.base_te - stripped_size
>
>  class EfiSectionPE32:
>      def __init__(self, ec, base_pe32):
> @@ -131,16 +129,7 @@ class EfiSectionPE32:
>          return filename[0:string.find(filename,'\0')]
>
>      def get_debug_elfbase(self):
> -        # Offset from dos hdr to PE file hdr
> -        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
> +        return self.base_pe32
>
>  class EfiSectionPE64:
>      def __init__(self, ec, base_pe64):
> @@ -176,16 +165,7 @@ class EfiSectionPE64:
>          return filename[0:string.find(filename,'\0')]
>
>      def get_debug_elfbase(self):
> -        # Offset from dos hdr to PE file hdr
> -        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
> +        return self.base_pe64
>
>  class FirmwareFile:
>      EFI_FV_FILETYPE_RAW                   = 0x01
> --
> 1.9.1
>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to