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