On Fri, May 19, 2017 at 11:47:40AM +0100, Ard Biesheuvel wrote:
> Some builds of GCC/binutils will default to using the GNU flavor of
> the symbol hash table, and will emit it into a section called .gnu.hash
> rather than .hash. We have no use for its contents, and GenFw ignores
> it anyway, so it shouldn't really matter what we do with it.
> 
> However, due to a workaround for AARCH64 we have in GenFw to deal with
> older GCCs that corrupt section-based relocations when merging sections
> during the final link, we need the ELF and PE/COFF views of the binary
> to be identical. Since we don't place the .gnu.hash section explicitly,
> it may end up at the beginning of the ELF binary, causing other sections
> to be shifted in the ELF view but not in the PE/COFF view.
> 
> So let's add .gnu.hash to the GCC linker script. We don't care about its
> contents so add it to the /DISCARD/ section.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <[email protected]>

Tested-by: Leif Lindholm <[email protected]>

> ---
>  BaseTools/Scripts/GccBase.lds | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Scripts/GccBase.lds b/BaseTools/Scripts/GccBase.lds
> index 41e5c0b4a769..a43e0072f2b4 100644
> --- a/BaseTools/Scripts/GccBase.lds
> +++ b/BaseTools/Scripts/GccBase.lds
> @@ -78,7 +78,7 @@ SECTIONS {
>      *(.dynsym)
>      *(.dynstr)
>      *(.dynamic)
> -    *(.hash)
> +    *(.hash .gnu.hash)
>      *(.comment)
>      *(COMMON)
>    }
> -- 
> 2.9.3
> 
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to