Reviewed-by: Liming Gao <[email protected]>

Besides, Dennis doesn't own BaseTools any longer. 

Thanks
Liming
-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Ard 
Biesheuvel
Sent: Friday, September 11, 2015 2:53 PM
To: [email protected]; Gao, Liming; Liu, Yingke D
Cc: Laszlo Ersek; Leif Lindholm; Ard Biesheuvel
Subject: Re: [edk2] [PATCH] BaseTools/GenFw: align RVA of debug

On 9 September 2015 at 11:44, Ard Biesheuvel <[email protected]> wrote:
> SVN commit r18077 ("BaseTools/GenFw: move .debug contents to .data to 
> save space") removed the separate .debug section after moving its 
> contents into .text or .data. However, this change does not take into 
> account that some of these contents need to appear at a 32-bit aligned 
> offset. So align the debug data RVA to 32 bits.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <[email protected]>

@Dennis: any comments?

> ---
>  BaseTools/Source/C/GenFw/Elf32Convert.c | 13 +++++++++++--  
> BaseTools/Source/C/GenFw/Elf64Convert.c | 13 +++++++++++--
>  2 files changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c 
> b/BaseTools/Source/C/GenFw/Elf32Convert.c
> index e1b92ebd713e..4b330a61669f 100644
> --- a/BaseTools/Source/C/GenFw/Elf32Convert.c
> +++ b/BaseTools/Source/C/GenFw/Elf32Convert.c
> @@ -218,6 +218,15 @@ CoffAlign (
>    return (Offset + mCoffAlignment - 1) & ~(mCoffAlignment - 1);  }
>
> +STATIC
> +UINT32
> +DebugRvaAlign (
> +  UINT32 Offset
> +  )
> +{
> +  return (Offset + 3) & ~3;
> +}
> +
>  //
>  // filter functions
>  //
> @@ -365,7 +374,7 @@ ScanSections32 (
>      assert (FALSE);
>    }
>
> -  mDebugOffset = mCoffOffset;
> +  mDebugOffset = DebugRvaAlign(mCoffOffset);
>
>    if (mEhdr->e_machine != EM_ARM) {
>      mCoffOffset = CoffAlign(mCoffOffset); @@ -423,7 +432,7 @@ 
> ScanSections32 (
>    // section alignment.
>    //
>    if (SectionCount > 0) {
> -    mDebugOffset = mCoffOffset;
> +    mDebugOffset = DebugRvaAlign(mCoffOffset);
>    }
>    mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) +
>                  sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) + diff 
> --git a/BaseTools/Source/C/GenFw/Elf64Convert.c 
> b/BaseTools/Source/C/GenFw/Elf64Convert.c
> index c758ed9d64a6..a3f1f5d3d4c7 100644
> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c
> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
> @@ -211,6 +211,15 @@ CoffAlign (
>    return (Offset + mCoffAlignment - 1) & ~(mCoffAlignment - 1);  }
>
> +STATIC
> +UINT32
> +DebugRvaAlign (
> +  UINT32 Offset
> +  )
> +{
> +  return (Offset + 3) & ~3;
> +}
> +
>  //
>  // filter functions
>  //
> @@ -359,7 +368,7 @@ ScanSections64 (
>      assert (FALSE);
>    }
>
> -  mDebugOffset = mCoffOffset;
> +  mDebugOffset = DebugRvaAlign(mCoffOffset);
>
>    if (mEhdr->e_machine != EM_ARM) {
>      mCoffOffset = CoffAlign(mCoffOffset); @@ -412,7 +421,7 @@ 
> ScanSections64 (
>    // section alignment.
>    //
>    if (SectionCount > 0) {
> -    mDebugOffset = mCoffOffset;
> +    mDebugOffset = DebugRvaAlign(mCoffOffset);
>    }
>    mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) +
>                  sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) +
> --
> 1.9.1
>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to