mirror of https://github.com/acidanthera/audk.git
BaseTools: Add GCC49 toolchain; align data sections to 0x40
GCC 4.9 may use 64-byte (0x40) alignment for data sections. Therefore we use a different link script for GCC 4.9. The only difference from the gcc4.4-ld-script is the alignment for data sections. When using the GCC48 toolchain with GCC 4.9, this error would be encountered by GenFw: > GenFw: ERROR 3000: Invalid > Unsupported section alignment. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Yingke Liu <yingke.d.liu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15697 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2412c2978e
commit
dafe0fedc5
|
@ -162,6 +162,9 @@ DEFINE GCC47_X64_PREFIX = /usr/bin/
|
|||
DEFINE GCC48_IA32_PREFIX = /usr/bin/
|
||||
DEFINE GCC48_X64_PREFIX = /usr/bin/
|
||||
|
||||
DEFINE GCC49_IA32_PREFIX = /usr/bin/
|
||||
DEFINE GCC49_X64_PREFIX = /usr/bin/
|
||||
|
||||
DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl
|
||||
DEFINE WIN_ASL_BIN_DIR = C:\ASL
|
||||
DEFINE WIN_IASL_BIN = DEF(WIN_ASL_BIN_DIR)\iasl.exe
|
||||
|
@ -307,6 +310,12 @@ DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G
|
|||
# Required to build platforms or ACPI tables:
|
||||
# Intel(r) ACPI Compiler v20101013 from
|
||||
# http://www.acpica.org/downloads/previous_releases.php
|
||||
# GCC49 -Linux- Requires:
|
||||
# GCC 4.9
|
||||
# Optional:
|
||||
# Required to build platforms or ACPI tables:
|
||||
# Intel(r) ACPI Compiler v20101013 from
|
||||
# http://www.acpica.org/downloads/previous_releases.php
|
||||
# ELFGCC -Linux- Requires:
|
||||
# GCC(this tool chain uses whatever version of gcc and binutils that is installed in /usr/bin)
|
||||
# Optional:
|
||||
|
@ -3216,6 +3225,22 @@ DEFINE GCC48_AARCH64_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON)
|
|||
DEFINE GCC48_ARM_ASLDLINK_FLAGS = DEF(GCC47_ARM_ASLDLINK_FLAGS)
|
||||
DEFINE GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
|
||||
|
||||
DEFINE GCC49_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS)
|
||||
DEFINE GCC49_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS)
|
||||
DEFINE GCC49_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.9-ld-script
|
||||
DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) --entry ReferenceAcpiTable -u ReferenceAcpiTable
|
||||
DEFINE GCC49_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
|
||||
DEFINE GCC49_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -melf_x86_64 --oformat=elf64-x86-64
|
||||
DEFINE GCC49_ASM_FLAGS = DEF(GCC48_ASM_FLAGS)
|
||||
DEFINE GCC49_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS)
|
||||
DEFINE GCC49_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS)
|
||||
DEFINE GCC49_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS)
|
||||
DEFINE GCC49_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS)
|
||||
DEFINE GCC49_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS)
|
||||
DEFINE GCC49_AARCH64_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON)
|
||||
DEFINE GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC48_ARM_ASLDLINK_FLAGS)
|
||||
DEFINE GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
|
||||
|
||||
####################################################################################
|
||||
#
|
||||
# Unix GCC And Intel Linux ACPI Compiler
|
||||
|
@ -3767,6 +3792,126 @@ RELEASE_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -Wno-unused-but-set-v
|
|||
DEBUG_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -O0
|
||||
RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable
|
||||
|
||||
####################################################################################
|
||||
#
|
||||
# GCC 4.9 - This configuration is used to compile under Linux to produce
|
||||
# PE/COFF binaries using GCC 4.9.
|
||||
#
|
||||
####################################################################################
|
||||
*_GCC49_*_*_FAMILY = GCC
|
||||
|
||||
*_GCC49_*_MAKE_PATH = make
|
||||
*_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
|
||||
*_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
*_GCC49_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
|
||||
*_GCC49_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
|
||||
*_GCC49_*_APP_FLAGS =
|
||||
*_GCC49_*_ASL_FLAGS = DEF(IASL_FLAGS)
|
||||
*_GCC49_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
|
||||
|
||||
##################
|
||||
# GCC49 IA32 definitions
|
||||
##################
|
||||
*_GCC49_IA32_OBJCOPY_PATH = DEF(GCC49_IA32_PREFIX)objcopy
|
||||
*_GCC49_IA32_CC_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_SLINK_PATH = DEF(GCC49_IA32_PREFIX)ar
|
||||
*_GCC49_IA32_DLINK_PATH = DEF(GCC49_IA32_PREFIX)ld
|
||||
*_GCC49_IA32_ASLDLINK_PATH = DEF(GCC49_IA32_PREFIX)ld
|
||||
*_GCC49_IA32_ASM_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_PP_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_VFRPP_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_ASLCC_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_ASLPP_PATH = DEF(GCC49_IA32_PREFIX)gcc
|
||||
*_GCC49_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy
|
||||
|
||||
*_GCC49_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32
|
||||
*_GCC49_IA32_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m elf_i386
|
||||
*_GCC49_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386
|
||||
*_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os
|
||||
*_GCC49_IA32_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -m elf_i386 --oformat=elf32-i386
|
||||
*_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
|
||||
*_GCC49_IA32_OBJCOPY_FLAGS =
|
||||
|
||||
##################
|
||||
# GCC49 X64 definitions
|
||||
##################
|
||||
*_GCC49_X64_OBJCOPY_PATH = DEF(GCC49_X64_PREFIX)objcopy
|
||||
*_GCC49_X64_CC_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_SLINK_PATH = DEF(GCC49_X64_PREFIX)ar
|
||||
*_GCC49_X64_DLINK_PATH = DEF(GCC49_X64_PREFIX)ld
|
||||
*_GCC49_X64_ASLDLINK_PATH = DEF(GCC49_X64_PREFIX)ld
|
||||
*_GCC49_X64_ASM_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_PP_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_VFRPP_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_ASLCC_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_ASLPP_PATH = DEF(GCC49_X64_PREFIX)gcc
|
||||
*_GCC49_X64_RC_PATH = DEF(GCC49_X64_PREFIX)objcopy
|
||||
|
||||
*_GCC49_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64
|
||||
*_GCC49_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m elf_x86_64
|
||||
*_GCC49_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64
|
||||
*_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS)
|
||||
*_GCC49_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS)
|
||||
*_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
|
||||
*_GCC49_X64_OBJCOPY_FLAGS =
|
||||
|
||||
##################
|
||||
# GCC49 ARM definitions
|
||||
##################
|
||||
*_GCC49_ARM_CC_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_SLINK_PATH = ENV(GCC49_ARM_PREFIX)ar
|
||||
*_GCC49_ARM_DLINK_PATH = ENV(GCC49_ARM_PREFIX)ld
|
||||
*_GCC49_ARM_ASLDLINK_PATH = ENV(GCC49_ARM_PREFIX)ld
|
||||
*_GCC49_ARM_ASM_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_PP_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_VFRPP_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_ASLCC_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_ASLPP_PATH = ENV(GCC49_ARM_PREFIX)gcc
|
||||
*_GCC49_ARM_RC_PATH = ENV(GCC49_ARM_PREFIX)objcopy
|
||||
|
||||
*_GCC49_ARM_ARCHCC_FLAGS = -mthumb
|
||||
*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
|
||||
*_GCC49_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
|
||||
*_GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS)
|
||||
*_GCC49_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS)
|
||||
*_GCC49_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS)
|
||||
*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC49_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
*_GCC49_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
|
||||
|
||||
DEBUG_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0
|
||||
RELEASE_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable
|
||||
|
||||
##################
|
||||
# GCC49 AARCH64 definitions
|
||||
##################
|
||||
*_GCC49_AARCH64_CC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_SLINK_PATH = ENV(GCC49_AARCH64_PREFIX)ar
|
||||
*_GCC49_AARCH64_DLINK_PATH = ENV(GCC49_AARCH64_PREFIX)ld
|
||||
*_GCC49_AARCH64_ASLDLINK_PATH = ENV(GCC49_AARCH64_PREFIX)ld
|
||||
*_GCC49_AARCH64_ASM_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_PP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_VFRPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_ASLCC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_ASLPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
|
||||
*_GCC49_AARCH64_RC_PATH = ENV(GCC49_AARCH64_PREFIX)objcopy
|
||||
|
||||
*_GCC49_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
|
||||
*_GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
|
||||
*_GCC49_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS)
|
||||
*_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
|
||||
*_GCC49_AARCH64_PLATFORM_FLAGS =
|
||||
*_GCC49_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
|
||||
*_GCC49_AARCH64_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
|
||||
|
||||
DEBUG_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0
|
||||
RELEASE_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable
|
||||
|
||||
####################################################################################
|
||||
#
|
||||
# Cygwin GCC And Intel ACPI Compiler
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/* OUTPUT_FORMAT(efi-bsdrv-x86_64) */
|
||||
SECTIONS
|
||||
{
|
||||
/* . = 0 + SIZEOF_HEADERS; */
|
||||
. = 0x280;
|
||||
.text ALIGN(0x20) :
|
||||
{
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
. = ALIGN(0x20);
|
||||
} =0x90909090
|
||||
.data ALIGN(0x40) :
|
||||
{
|
||||
*(
|
||||
.rodata .rodata.* .gnu.linkonce.r.*
|
||||
.data .data.* .gnu.linkonce.d.*
|
||||
.bss .bss.*
|
||||
*COM*
|
||||
)
|
||||
. = ALIGN(0x20);
|
||||
}
|
||||
.eh_frame ALIGN(0x20) :
|
||||
{
|
||||
KEEP (*(.eh_frame))
|
||||
}
|
||||
.got ALIGN(0x20) :
|
||||
{
|
||||
*(.got .got.*)
|
||||
. = ALIGN(0x20);
|
||||
}
|
||||
.rela ALIGN(0x20) :
|
||||
{
|
||||
*(.rela .rela.*)
|
||||
}
|
||||
/DISCARD/ : {
|
||||
*(.note.GNU-stack) *(.gnu_debuglink)
|
||||
*(.interp)
|
||||
*(.dynsym)
|
||||
*(.dynstr)
|
||||
*(.dynamic)
|
||||
*(.hash)
|
||||
*(.comment)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue