Re: [edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker script

2015-07-30 Thread Gao, Liming
Yes. 

-Original Message-
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Ard 
Biesheuvel
Sent: Thursday, July 30, 2015 10:26 PM
To: Gao, Liming
Cc: Justen, Jordan L; edk2-devel@lists.01.org; ler...@redhat.com; Liu, Yingke 
D; leif.lindh...@linaro.org
Subject: Re: [edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC 
linker script

On 30 July 2015 at 02:59, Gao, Liming  wrote:
> Jordan:
>   I have verified 4K aligned image build.
>
> Test-by: Liming Gao 
>

Thanks Liming

Just to be clear, I assume you added something like this

"""
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 
a86a7f57143b..90dc29a5157d 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -48,6 +48,9 @@ [BuildOptions]
   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable  !endif

+[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+
 

 #
 # SKU Identification section - list of all SKU IDs supported by this Platform.
"""

when you did the test?

Thanks,
Ard.

> -Original Message-
> From: Justen, Jordan L
> Sent: Thursday, July 30, 2015 5:16 AM
> To: Ard Biesheuvel; edk2-devel@lists.01.org; Liu, Yingke D; Gao, 
> Liming
> Cc: ler...@redhat.com; leif.lindh...@linaro.org; Ard Biesheuvel
> Subject: Re: [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC 
> linker script
>
> Subject prefix: BaseTools/X86|IA32 => BaseTools IA32/X64
>
> What about 1 more step? :)
>
> This change starts to make use of the -z common-page-size and 
> --defsym=PECOFF_HEADER_SIZE params, but the description says 'move to unified 
> script'.
>
> So, how about first modifying the gcc*-ld-script files to use -z 
> common-page-size and --defsym=PECOFF_HEADER_SIZE and then the last patch is 
> trivial:
>
>   BaseTools IA32/X64: Use GccBase.lds instead of gcc*-ld-script
>
>   These scripts all now have the same contents, so we only need to use
>   GccBase.lds. Therefore we can delete gcc-4K-align-ld-script,
>   gcc4.4-ld-script and gcc4.9-ld-script.
>
> With that change, the series is
>
>   Reviewed-by: Jordan Justen 
>
> although, I would like someone to test the changes on a '4k' aligned image 
> build. Liming, do you know who might be able to do that?
>
> -Jordan
>
> On 2015-07-29 08:12:02, Ard Biesheuvel wrote:
>> Drop the GCC 4.4/X86 and 4.9/X86 specific linker scripts and use the 
>> new unified one instead.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel 
>> ---
>>  BaseTools/Conf/tools_def.template| 28 +--
>>  BaseTools/Scripts/gcc-4K-align-ld-script | 38 
>>  BaseTools/Scripts/gcc4.4-ld-script   | 38 
>>  BaseTools/Scripts/gcc4.9-ld-script   | 38 
>>  4 files changed, 26 insertions(+), 116 deletions(-)
>>
>> diff --git a/BaseTools/Conf/tools_def.template
>> b/BaseTools/Conf/tools_def.template
>> index d3dfdc41ada1..eeb488fb3597 100644
>> --- a/BaseTools/Conf/tools_def.template
>> +++ b/BaseTools/Conf/tools_def.template
>> @@ -3847,10 +3847,12 @@ DEFINE GCC_AARCH64_RC_FLAGS= -I binary -O 
>> elf64-littleaarch64 -B aarch64
>>  DEFINE GCC44_ALL_CC_FLAGS= -g -fshort-wchar 
>> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections 
>> -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
>>  DEFINE GCC44_IA32_CC_FLAGS   = DEF(GCC44_ALL_CC_FLAGS) -m32 
>> -malign-double -fno-stack-protector -D EFI32
>>  DEFINE GCC44_X64_CC_FLAGS= DEF(GCC44_ALL_CC_FLAGS) -m64 
>> -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" 
>> -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large
>> -DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections 
>> --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script
>> +DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections -z 
>> common-page-size=0x20
>>  DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) 
>> --entry ReferenceAcpiTable -u ReferenceAcpiTable
>>  DEFINE GCC44_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_COMMON) 
>> --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
>> $(DEST_DIR_DEBUG)/$(BASE_NAME).map
>> +DEFINE GCC44_IA32_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) 
>> --defsym=PECOFF_HEADER_SIZE=0x220
>>  DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS)  
>> -melf_x86_64 --o

Re: [edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker script

2015-07-30 Thread Ard Biesheuvel
On 30 July 2015 at 02:59, Gao, Liming  wrote:
> Jordan:
>   I have verified 4K aligned image build.
>
> Test-by: Liming Gao 
>

Thanks Liming

Just to be clear, I assume you added something like this

"""
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index a86a7f57143b..90dc29a5157d 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -48,6 +48,9 @@ [BuildOptions]
   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
 !endif

+[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+
 

 #
 # SKU Identification section - list of all SKU IDs supported by this Platform.
"""

when you did the test?

Thanks,
Ard.

> -Original Message-
> From: Justen, Jordan L
> Sent: Thursday, July 30, 2015 5:16 AM
> To: Ard Biesheuvel; edk2-devel@lists.01.org; Liu, Yingke D; Gao, Liming
> Cc: ler...@redhat.com; leif.lindh...@linaro.org; Ard Biesheuvel
> Subject: Re: [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker 
> script
>
> Subject prefix: BaseTools/X86|IA32 => BaseTools IA32/X64
>
> What about 1 more step? :)
>
> This change starts to make use of the -z common-page-size and 
> --defsym=PECOFF_HEADER_SIZE params, but the description says 'move to unified 
> script'.
>
> So, how about first modifying the gcc*-ld-script files to use -z 
> common-page-size and --defsym=PECOFF_HEADER_SIZE and then the last patch is 
> trivial:
>
>   BaseTools IA32/X64: Use GccBase.lds instead of gcc*-ld-script
>
>   These scripts all now have the same contents, so we only need to use
>   GccBase.lds. Therefore we can delete gcc-4K-align-ld-script,
>   gcc4.4-ld-script and gcc4.9-ld-script.
>
> With that change, the series is
>
>   Reviewed-by: Jordan Justen 
>
> although, I would like someone to test the changes on a '4k' aligned image 
> build. Liming, do you know who might be able to do that?
>
> -Jordan
>
> On 2015-07-29 08:12:02, Ard Biesheuvel wrote:
>> Drop the GCC 4.4/X86 and 4.9/X86 specific linker scripts and use the
>> new unified one instead.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel 
>> ---
>>  BaseTools/Conf/tools_def.template| 28 +--
>>  BaseTools/Scripts/gcc-4K-align-ld-script | 38 
>>  BaseTools/Scripts/gcc4.4-ld-script   | 38 
>>  BaseTools/Scripts/gcc4.9-ld-script   | 38 
>>  4 files changed, 26 insertions(+), 116 deletions(-)
>>
>> diff --git a/BaseTools/Conf/tools_def.template
>> b/BaseTools/Conf/tools_def.template
>> index d3dfdc41ada1..eeb488fb3597 100644
>> --- a/BaseTools/Conf/tools_def.template
>> +++ b/BaseTools/Conf/tools_def.template
>> @@ -3847,10 +3847,12 @@ DEFINE GCC_AARCH64_RC_FLAGS= -I binary -O 
>> elf64-littleaarch64 -B aarch64
>>  DEFINE GCC44_ALL_CC_FLAGS= -g -fshort-wchar 
>> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections 
>> -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
>>  DEFINE GCC44_IA32_CC_FLAGS   = DEF(GCC44_ALL_CC_FLAGS) -m32 
>> -malign-double -fno-stack-protector -D EFI32
>>  DEFINE GCC44_X64_CC_FLAGS= DEF(GCC44_ALL_CC_FLAGS) -m64 
>> -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" 
>> -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large
>> -DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections 
>> --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script
>> +DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections -z 
>> common-page-size=0x20
>>  DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) 
>> --entry ReferenceAcpiTable -u ReferenceAcpiTable
>>  DEFINE GCC44_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_COMMON) 
>> --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
>> $(DEST_DIR_DEBUG)/$(BASE_NAME).map
>> +DEFINE GCC44_IA32_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) 
>> --defsym=PECOFF_HEADER_SIZE=0x220
>>  DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS)  
>> -melf_x86_64 --oformat=elf64-x86-64
>> +DEFINE GCC44_X64_DLINK2_FLAGS= DEF(GCC_DLINK2_FLAGS_COMMON) 
>> --defsym=PECOFF_HEADER_SIZE=0x228
>>  DEFINE GCC44_ASM_FLAGS   = DEF(GCC_ASM_FLAGS)
>>
>>  DEFINE GCC45_IA32_CC_FLAGS   = DEF(GCC44_IA32_CC_FLAGS)
>> @@ -3858,7 +3860,9 @@ DEFINE GCC45_X64_CC_FLAGS= 
>> DEF(GCC44_X64_CC_FLAGS)
>>  DEFINE GCC45_IA32_X64_DLINK_COMMON   = DEF(GCC44_IA32_X64_DLINK_COMMON)
>>  DEFINE GCC45_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS)
>>  DEFINE GCC45_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_FLAGS)
>> +DEFINE GCC45_IA32_DLINK2_FLAGS   = DEF(GCC44_IA32_DLINK2_FLAGS)
>>  DEFINE GCC45_X64_DLINK_FLAGS = DEF(GCC44_X64_DLINK_FLAGS)
>> +DEFINE GCC45_X64_DLINK2_FLAGS= DEF(GCC44_X64_DLINK2_FLAGS)
>>  DEFINE GCC45_ASM_

Re: [edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker script

2015-07-29 Thread Gao, Liming
Jordan:
  I have verified 4K aligned image build.

Test-by: Liming Gao 

Thanks
Liming
-Original Message-
From: Justen, Jordan L 
Sent: Thursday, July 30, 2015 5:16 AM
To: Ard Biesheuvel; edk2-devel@lists.01.org; Liu, Yingke D; Gao, Liming
Cc: ler...@redhat.com; leif.lindh...@linaro.org; Ard Biesheuvel
Subject: Re: [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker 
script

Subject prefix: BaseTools/X86|IA32 => BaseTools IA32/X64

What about 1 more step? :)

This change starts to make use of the -z common-page-size and 
--defsym=PECOFF_HEADER_SIZE params, but the description says 'move to unified 
script'.

So, how about first modifying the gcc*-ld-script files to use -z 
common-page-size and --defsym=PECOFF_HEADER_SIZE and then the last patch is 
trivial:

  BaseTools IA32/X64: Use GccBase.lds instead of gcc*-ld-script

  These scripts all now have the same contents, so we only need to use
  GccBase.lds. Therefore we can delete gcc-4K-align-ld-script,
  gcc4.4-ld-script and gcc4.9-ld-script.

With that change, the series is

  Reviewed-by: Jordan Justen 

although, I would like someone to test the changes on a '4k' aligned image 
build. Liming, do you know who might be able to do that?

-Jordan

On 2015-07-29 08:12:02, Ard Biesheuvel wrote:
> Drop the GCC 4.4/X86 and 4.9/X86 specific linker scripts and use the 
> new unified one instead.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel 
> ---
>  BaseTools/Conf/tools_def.template| 28 +--
>  BaseTools/Scripts/gcc-4K-align-ld-script | 38 
>  BaseTools/Scripts/gcc4.4-ld-script   | 38 
>  BaseTools/Scripts/gcc4.9-ld-script   | 38 
>  4 files changed, 26 insertions(+), 116 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index d3dfdc41ada1..eeb488fb3597 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -3847,10 +3847,12 @@ DEFINE GCC_AARCH64_RC_FLAGS= -I binary -O 
> elf64-littleaarch64 -B aarch64
>  DEFINE GCC44_ALL_CC_FLAGS= -g -fshort-wchar -fno-strict-aliasing 
> -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c 
> -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
>  DEFINE GCC44_IA32_CC_FLAGS   = DEF(GCC44_ALL_CC_FLAGS) -m32 
> -malign-double -fno-stack-protector -D EFI32
>  DEFINE GCC44_X64_CC_FLAGS= DEF(GCC44_ALL_CC_FLAGS) -m64 
> -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS 
> -mno-red-zone -Wno-address -mcmodel=large
> -DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections 
> --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script
> +DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections -z 
> common-page-size=0x20
>  DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) 
> --entry ReferenceAcpiTable -u ReferenceAcpiTable
>  DEFINE GCC44_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_COMMON) 
> --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
> $(DEST_DIR_DEBUG)/$(BASE_NAME).map
> +DEFINE GCC44_IA32_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x220
>  DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS)  
> -melf_x86_64 --oformat=elf64-x86-64
> +DEFINE GCC44_X64_DLINK2_FLAGS= DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x228
>  DEFINE GCC44_ASM_FLAGS   = DEF(GCC_ASM_FLAGS)
>  
>  DEFINE GCC45_IA32_CC_FLAGS   = DEF(GCC44_IA32_CC_FLAGS)
> @@ -3858,7 +3860,9 @@ DEFINE GCC45_X64_CC_FLAGS= 
> DEF(GCC44_X64_CC_FLAGS)
>  DEFINE GCC45_IA32_X64_DLINK_COMMON   = DEF(GCC44_IA32_X64_DLINK_COMMON)
>  DEFINE GCC45_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS)
>  DEFINE GCC45_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_FLAGS)
> +DEFINE GCC45_IA32_DLINK2_FLAGS   = DEF(GCC44_IA32_DLINK2_FLAGS)
>  DEFINE GCC45_X64_DLINK_FLAGS = DEF(GCC44_X64_DLINK_FLAGS)
> +DEFINE GCC45_X64_DLINK2_FLAGS= DEF(GCC44_X64_DLINK2_FLAGS)
>  DEFINE GCC45_ASM_FLAGS   = DEF(GCC44_ASM_FLAGS)
>  
>  DEFINE GCC46_IA32_CC_FLAGS   = DEF(GCC45_IA32_CC_FLAGS) -Wno-address 
> -Wno-unused-but-set-variable
> @@ -3866,7 +3870,9 @@ DEFINE GCC46_X64_CC_FLAGS= 
> DEF(GCC45_X64_CC_FLAGS) -Wno-address -Wno
>  DEFINE GCC46_IA32_X64_DLINK_COMMON   = DEF(GCC45_IA32_X64_DLINK_COMMON)
>  DEFINE GCC46_IA32_X64_ASLDLINK_FLAGS = DEF(GCC45_IA32_X64_ASLDLINK_FLAGS)
>  DEFINE GCC46_IA32_X64_DLINK_FLAGS= DEF(GCC45_IA32_X64_DLINK_FLAGS)
> +DEFINE GCC46_IA32_DLINK2_FLAGS   = DEF(GCC45_IA32_DLINK2_FLAGS)
>  DEFINE GCC46_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS)
> +DEFINE GCC46_X64_DLINK2_FLAGS= DEF(GCC45_X64_DLINK2_FLAGS)
>  DEFINE GCC46_ASM_FLAGS   = DEF(GCC45_ASM_FLAGS)
>  DEFINE GCC46_ARM_ASM_FL

Re: [edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker script

2015-07-29 Thread Jordan Justen
Subject prefix: BaseTools/X86|IA32 => BaseTools IA32/X64

What about 1 more step? :)

This change starts to make use of the -z common-page-size and
--defsym=PECOFF_HEADER_SIZE params, but the description says 'move to
unified script'.

So, how about first modifying the gcc*-ld-script files to use -z
common-page-size and --defsym=PECOFF_HEADER_SIZE and then the last
patch is trivial:

  BaseTools IA32/X64: Use GccBase.lds instead of gcc*-ld-script

  These scripts all now have the same contents, so we only need to use
  GccBase.lds. Therefore we can delete gcc-4K-align-ld-script,
  gcc4.4-ld-script and gcc4.9-ld-script.

With that change, the series is

  Reviewed-by: Jordan Justen 

although, I would like someone to test the changes on a '4k' aligned
image build. Liming, do you know who might be able to do that?

-Jordan

On 2015-07-29 08:12:02, Ard Biesheuvel wrote:
> Drop the GCC 4.4/X86 and 4.9/X86 specific linker scripts and use
> the new unified one instead.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel 
> ---
>  BaseTools/Conf/tools_def.template| 28 +--
>  BaseTools/Scripts/gcc-4K-align-ld-script | 38 
>  BaseTools/Scripts/gcc4.4-ld-script   | 38 
>  BaseTools/Scripts/gcc4.9-ld-script   | 38 
>  4 files changed, 26 insertions(+), 116 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index d3dfdc41ada1..eeb488fb3597 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -3847,10 +3847,12 @@ DEFINE GCC_AARCH64_RC_FLAGS= -I binary -O 
> elf64-littleaarch64 -B aarch64
>  DEFINE GCC44_ALL_CC_FLAGS= -g -fshort-wchar -fno-strict-aliasing 
> -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c 
> -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
>  DEFINE GCC44_IA32_CC_FLAGS   = DEF(GCC44_ALL_CC_FLAGS) -m32 
> -malign-double -fno-stack-protector -D EFI32
>  DEFINE GCC44_X64_CC_FLAGS= DEF(GCC44_ALL_CC_FLAGS) -m64 
> -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS 
> -mno-red-zone -Wno-address -mcmodel=large
> -DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections 
> --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script
> +DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections -z 
> common-page-size=0x20
>  DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) 
> --entry ReferenceAcpiTable -u ReferenceAcpiTable
>  DEFINE GCC44_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_COMMON) 
> --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
> $(DEST_DIR_DEBUG)/$(BASE_NAME).map
> +DEFINE GCC44_IA32_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x220
>  DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS)  
> -melf_x86_64 --oformat=elf64-x86-64
> +DEFINE GCC44_X64_DLINK2_FLAGS= DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x228
>  DEFINE GCC44_ASM_FLAGS   = DEF(GCC_ASM_FLAGS)
>  
>  DEFINE GCC45_IA32_CC_FLAGS   = DEF(GCC44_IA32_CC_FLAGS)
> @@ -3858,7 +3860,9 @@ DEFINE GCC45_X64_CC_FLAGS= 
> DEF(GCC44_X64_CC_FLAGS)
>  DEFINE GCC45_IA32_X64_DLINK_COMMON   = DEF(GCC44_IA32_X64_DLINK_COMMON)
>  DEFINE GCC45_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS)
>  DEFINE GCC45_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_FLAGS)
> +DEFINE GCC45_IA32_DLINK2_FLAGS   = DEF(GCC44_IA32_DLINK2_FLAGS)
>  DEFINE GCC45_X64_DLINK_FLAGS = DEF(GCC44_X64_DLINK_FLAGS)
> +DEFINE GCC45_X64_DLINK2_FLAGS= DEF(GCC44_X64_DLINK2_FLAGS)
>  DEFINE GCC45_ASM_FLAGS   = DEF(GCC44_ASM_FLAGS)
>  
>  DEFINE GCC46_IA32_CC_FLAGS   = DEF(GCC45_IA32_CC_FLAGS) -Wno-address 
> -Wno-unused-but-set-variable
> @@ -3866,7 +3870,9 @@ DEFINE GCC46_X64_CC_FLAGS= 
> DEF(GCC45_X64_CC_FLAGS) -Wno-address -Wno
>  DEFINE GCC46_IA32_X64_DLINK_COMMON   = DEF(GCC45_IA32_X64_DLINK_COMMON)
>  DEFINE GCC46_IA32_X64_ASLDLINK_FLAGS = DEF(GCC45_IA32_X64_ASLDLINK_FLAGS)
>  DEFINE GCC46_IA32_X64_DLINK_FLAGS= DEF(GCC45_IA32_X64_DLINK_FLAGS)
> +DEFINE GCC46_IA32_DLINK2_FLAGS   = DEF(GCC45_IA32_DLINK2_FLAGS)
>  DEFINE GCC46_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS)
> +DEFINE GCC46_X64_DLINK2_FLAGS= DEF(GCC45_X64_DLINK2_FLAGS)
>  DEFINE GCC46_ASM_FLAGS   = DEF(GCC45_ASM_FLAGS)
>  DEFINE GCC46_ARM_ASM_FLAGS   = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) 
> DEF(GCC_ASM_FLAGS) -mlittle-endian
>  DEFINE GCC46_ARM_CC_FLAGS= $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
> DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector
> @@ -3878,7 +3884,9 @@ DEFINE GCC47_X64_CC_FLAGS= 
> DEF(GCC46_X64_CC_FLAGS)
>  DEFINE GCC47_IA32_X64_DLINK_COMMON   = DEF(GCC46_IA32_X64_DLINK_COMMON)
>  DEFI

[edk2] [PATCH v3 12/12] BaseTools/X86|IA32: move to unified GCC linker script

2015-07-29 Thread Ard Biesheuvel
Drop the GCC 4.4/X86 and 4.9/X86 specific linker scripts and use
the new unified one instead.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel 
---
 BaseTools/Conf/tools_def.template| 28 +--
 BaseTools/Scripts/gcc-4K-align-ld-script | 38 
 BaseTools/Scripts/gcc4.4-ld-script   | 38 
 BaseTools/Scripts/gcc4.9-ld-script   | 38 
 4 files changed, 26 insertions(+), 116 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template 
b/BaseTools/Conf/tools_def.template
index d3dfdc41ada1..eeb488fb3597 100644
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -3847,10 +3847,12 @@ DEFINE GCC_AARCH64_RC_FLAGS= -I binary -O 
elf64-littleaarch64 -B aarch64
 DEFINE GCC44_ALL_CC_FLAGS= -g -fshort-wchar -fno-strict-aliasing 
-Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include 
AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
 DEFINE GCC44_IA32_CC_FLAGS   = DEF(GCC44_ALL_CC_FLAGS) -m32 
-malign-double -fno-stack-protector -D EFI32
 DEFINE GCC44_X64_CC_FLAGS= DEF(GCC44_ALL_CC_FLAGS) -m64 
-fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS 
-mno-red-zone -Wno-address -mcmodel=large
-DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections 
--script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script
+DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections -z 
common-page-size=0x20
 DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) 
--entry ReferenceAcpiTable -u ReferenceAcpiTable
 DEFINE GCC44_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_COMMON) 
--entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
$(DEST_DIR_DEBUG)/$(BASE_NAME).map
+DEFINE GCC44_IA32_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) 
--defsym=PECOFF_HEADER_SIZE=0x220
 DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS)  
-melf_x86_64 --oformat=elf64-x86-64
+DEFINE GCC44_X64_DLINK2_FLAGS= DEF(GCC_DLINK2_FLAGS_COMMON) 
--defsym=PECOFF_HEADER_SIZE=0x228
 DEFINE GCC44_ASM_FLAGS   = DEF(GCC_ASM_FLAGS)
 
 DEFINE GCC45_IA32_CC_FLAGS   = DEF(GCC44_IA32_CC_FLAGS)
@@ -3858,7 +3860,9 @@ DEFINE GCC45_X64_CC_FLAGS= 
DEF(GCC44_X64_CC_FLAGS)
 DEFINE GCC45_IA32_X64_DLINK_COMMON   = DEF(GCC44_IA32_X64_DLINK_COMMON)
 DEFINE GCC45_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS)
 DEFINE GCC45_IA32_X64_DLINK_FLAGS= DEF(GCC44_IA32_X64_DLINK_FLAGS)
+DEFINE GCC45_IA32_DLINK2_FLAGS   = DEF(GCC44_IA32_DLINK2_FLAGS)
 DEFINE GCC45_X64_DLINK_FLAGS = DEF(GCC44_X64_DLINK_FLAGS)
+DEFINE GCC45_X64_DLINK2_FLAGS= DEF(GCC44_X64_DLINK2_FLAGS)
 DEFINE GCC45_ASM_FLAGS   = DEF(GCC44_ASM_FLAGS)
 
 DEFINE GCC46_IA32_CC_FLAGS   = DEF(GCC45_IA32_CC_FLAGS) -Wno-address 
-Wno-unused-but-set-variable
@@ -3866,7 +3870,9 @@ DEFINE GCC46_X64_CC_FLAGS= 
DEF(GCC45_X64_CC_FLAGS) -Wno-address -Wno
 DEFINE GCC46_IA32_X64_DLINK_COMMON   = DEF(GCC45_IA32_X64_DLINK_COMMON)
 DEFINE GCC46_IA32_X64_ASLDLINK_FLAGS = DEF(GCC45_IA32_X64_ASLDLINK_FLAGS)
 DEFINE GCC46_IA32_X64_DLINK_FLAGS= DEF(GCC45_IA32_X64_DLINK_FLAGS)
+DEFINE GCC46_IA32_DLINK2_FLAGS   = DEF(GCC45_IA32_DLINK2_FLAGS)
 DEFINE GCC46_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS)
+DEFINE GCC46_X64_DLINK2_FLAGS= DEF(GCC45_X64_DLINK2_FLAGS)
 DEFINE GCC46_ASM_FLAGS   = DEF(GCC45_ASM_FLAGS)
 DEFINE GCC46_ARM_ASM_FLAGS   = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_ASM_FLAGS) -mlittle-endian
 DEFINE GCC46_ARM_CC_FLAGS= $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector
@@ -3878,7 +3884,9 @@ DEFINE GCC47_X64_CC_FLAGS= 
DEF(GCC46_X64_CC_FLAGS)
 DEFINE GCC47_IA32_X64_DLINK_COMMON   = DEF(GCC46_IA32_X64_DLINK_COMMON)
 DEFINE GCC47_IA32_X64_ASLDLINK_FLAGS = DEF(GCC46_IA32_X64_ASLDLINK_FLAGS)
 DEFINE GCC47_IA32_X64_DLINK_FLAGS= DEF(GCC46_IA32_X64_DLINK_FLAGS)
+DEFINE GCC47_IA32_DLINK2_FLAGS   = DEF(GCC46_IA32_DLINK2_FLAGS)
 DEFINE GCC47_X64_DLINK_FLAGS = DEF(GCC46_X64_DLINK_FLAGS)
+DEFINE GCC47_X64_DLINK2_FLAGS= DEF(GCC46_X64_DLINK2_FLAGS)
 DEFINE GCC47_ASM_FLAGS   = DEF(GCC46_ASM_FLAGS)
 DEFINE GCC47_ARM_ASM_FLAGS   = DEF(GCC46_ARM_ASM_FLAGS)
 DEFINE GCC47_AARCH64_ASM_FLAGS   = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_ASM_FLAGS) -mlittle-endian
@@ -3895,7 +3903,9 @@ DEFINE GCC48_X64_CC_FLAGS= 
DEF(GCC47_X64_CC_FLAGS)
 DEFINE GCC48_IA32_X64_DLINK_COMMON   = DEF(GCC47_IA32_X64_DLINK_COMMON)
 DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC47_IA32_X64_ASLDLINK_FLAGS)
 DEFINE GCC48_IA32_X64_DLINK_FLAGS= DEF(GCC47_IA32_X64_DLINK_FLAGS)
+DEFINE GCC48_IA32_DLINK2_FLAGS   = DEF(GCC47_IA32_DLINK2_FLAGS)
 DEFINE GCC48_X64_DLINK_FLAGS = DEF(GCC47_X64_DLINK_FLAGS)
+DE