public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Gao, Liming" <liming.gao@intel.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"leif.lindholm@linaro.org" <leif.lindholm@linaro.org>,
	"mw@semihalf.com" <mw@semihalf.com>,
	"Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"daniel.thompson@linaro.org" <daniel.thompson@linaro.org>
Subject: Re: [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE sections via linker script
Date: Thu, 23 Nov 2017 10:21:26 +0000	[thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E1826D1@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <CAKv+Gu8ri1GkQK24PhVQhttdpv-9zgXWYJP6HNOgECFYdi4iAg@mail.gmail.com>

OK. I see the change to add DEF(GCC_DLINK2_FLAGS_COMMON) into ASLDLINK_FLAGS. 

Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]
>Sent: Thursday, November 23, 2017 6:19 PM
>To: Gao, Liming <liming.gao@intel.com>
>Cc: edk2-devel@lists.01.org; leif.lindholm@linaro.org; mw@semihalf.com;
>Zhu, Yonghong <yonghong.zhu@intel.com>; daniel.thompson@linaro.org
>Subject: Re: [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE
>sections via linker script
>
>On 23 November 2017 at 10:16, Gao, Liming <liming.gao@intel.com> wrote:
>> Ard:
>>   Have you own GCC linker script? Is it not in BaseTools?
>>
>
>No it is just GccBase.lds like we use for PE/COFF binaries, but this
>patch uses it for .aslc files as well.
>
>>>-----Original Message-----
>>>From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]
>>>Sent: Wednesday, November 22, 2017 12:11 AM
>>>To: edk2-devel@lists.01.org; leif.lindholm@linaro.org
>>>Cc: mw@semihalf.com; Zhu, Yonghong <yonghong.zhu@intel.com>; Gao,
>>>Liming <liming.gao@intel.com>; daniel.thompson@linaro.org; Ard
>Biesheuvel
>>><ard.biesheuvel@linaro.org>
>>>Subject: [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE sections
>>>via linker script
>>>
>>>Recent distro builds of GCC 6 enable PIE linking by default, and allow
>>>the previous behavior to be restored by passing the -no-pie command line
>>>argument. This was implemented by commits 1894a7c64c0a and
>3380a591232d
>>>but unfortunately, it turns out that GCC 5 does not support this command
>>>line argument, and exits with an error.
>>>
>>>To avoid the need for yet another toolchain tag, to distinguish between
>>>GCC 5 and GCC 6, let's use our GCC linker scripts when building objects
>>>from .aslc files. This will ensure that the extra sections that are added
>>>by the PIE linker are discarded from the ELF binary, and so they will not
>>>corrupt the resulting .acpi file.
>>>
>>>This reverts
>>>
>>>1894a7c64c0a BaseTools/tools_def AARCH64 ARM: disable PIE linking
>>>3380a591232d BaseTools/tools_def AARCH64 ARM: disable PIE linking
>for .aslc
>>>sources
>>>
>>>Contributed-under: TianoCore Contribution Agreement 1.1
>>>Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>---
>>> BaseTools/Conf/tools_def.template | 13 +++++++------
>>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>>
>>>diff --git a/BaseTools/Conf/tools_def.template
>>>b/BaseTools/Conf/tools_def.template
>>>index aebd7d558633..4d2a3b7dbe56 100755
>>>--- a/BaseTools/Conf/tools_def.template
>>>+++ b/BaseTools/Conf/tools_def.template
>>>@@ -4356,9 +4356,10 @@ DEFINE GCC_IA32_X64_DLINK_COMMON   =
>>>DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
>>> DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -
>nostdlib -
>>>Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-
>>>e,$(IMAGE_ENTRY_POINT),-
>Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
>>> DEFINE GCC_ARM_DLINK_FLAGS         =
>>>DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20
>>> DEFINE GCC_AARCH64_DLINK_FLAGS     =
>>>DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20
>>>+DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,--
>>>defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z
>>>common-page-size=0x20
>>> DEFINE GCC_IA32_X64_ASLDLINK_FLAGS =
>>>DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u
>>>$(IMAGE_ENTRY_POINT)
>>>-DEFINE GCC_ARM_ASLDLINK_FLAGS      = DEF(GCC_ARM_DLINK_FLAGS) -
>>>Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
>>>-DEFINE GCC_AARCH64_ASLDLINK_FLAGS  =
>>>DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u
>>>$(IMAGE_ENTRY_POINT)
>>>+DEFINE GCC_ARM_ASLDLINK_FLAGS      = DEF(GCC_ARM_DLINK_FLAGS) -
>>>Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
>>>DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
>>>+DEFINE GCC_AARCH64_ASLDLINK_FLAGS  =
>>>DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u
>>>$(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
>>> DEFINE GCC_IA32_X64_DLINK_FLAGS    =
>>>DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) -
>-
>>>file-alignment 0x20 --section-alignment 0x20 -Map
>>>$(DEST_DIR_DEBUG)/$(BASE_NAME).map
>>> DEFINE GCC_IPF_DLINK_FLAGS         = -nostdlib -O2 --gc-sections --dll -static
>--
>>>entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map
>>>$(DEST_DIR_DEBUG)/$(BASE_NAME).map
>>> DEFINE GCC_IPF_OBJCOPY_FLAGS       = -I elf64-ia64-little -O efi-bsdrv-ia64
>>>@@ -4494,12 +4495,12 @@ DEFINE GCC5_ARM_CC_FLAGS             =
>>>DEF(GCC49_ARM_CC_FLAGS)
>>> DEFINE GCC5_ARM_CC_XIPFLAGS          = DEF(GCC49_ARM_CC_XIPFLAGS)
>>> DEFINE GCC5_AARCH64_CC_FLAGS         =
>DEF(GCC49_AARCH64_CC_FLAGS)
>>> DEFINE GCC5_AARCH64_CC_XIPFLAGS      =
>>>DEF(GCC49_AARCH64_CC_XIPFLAGS)
>>>-DEFINE GCC5_ARM_DLINK_FLAGS          = DEF(GCC49_ARM_DLINK_FLAGS)
>-
>>>no-pie
>>>+DEFINE GCC5_ARM_DLINK_FLAGS          = DEF(GCC49_ARM_DLINK_FLAGS)
>>> DEFINE GCC5_ARM_DLINK2_FLAGS         =
>DEF(GCC49_ARM_DLINK2_FLAGS) -
>>>Wno-error
>>>-DEFINE GCC5_AARCH64_DLINK_FLAGS      =
>>>DEF(GCC49_AARCH64_DLINK_FLAGS) -no-pie
>>>+DEFINE GCC5_AARCH64_DLINK_FLAGS      =
>>>DEF(GCC49_AARCH64_DLINK_FLAGS)
>>> DEFINE GCC5_AARCH64_DLINK2_FLAGS     =
>>>DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-error
>>>-DEFINE GCC5_ARM_ASLDLINK_FLAGS       =
>>>DEF(GCC49_ARM_ASLDLINK_FLAGS) -no-pie
>>>-DEFINE GCC5_AARCH64_ASLDLINK_FLAGS   =
>>>DEF(GCC49_AARCH64_ASLDLINK_FLAGS) -no-pie
>>>+DEFINE GCC5_ARM_ASLDLINK_FLAGS       =
>>>DEF(GCC49_ARM_ASLDLINK_FLAGS)
>>>+DEFINE GCC5_AARCH64_ASLDLINK_FLAGS   =
>>>DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
>>>
>>>
>>>#########################################################
>##
>>>#########################
>>> #
>>>--
>>>2.11.0
>>

  reply	other threads:[~2017-11-23 10:17 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21 16:10 [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE sections via linker script Ard Biesheuvel
2017-11-21 16:48 ` Marcin Wojtas
2017-11-23 10:16 ` Gao, Liming
2017-11-23 10:19   ` Ard Biesheuvel
2017-11-23 10:21     ` Gao, Liming [this message]
2017-11-23 10:46       ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E1826D1@SHSMSX104.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox