From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2607:f8b0:4001:c0b::242; helo=mail-it0-x242.google.com; envelope-from=mw@semihalf.com; receiver=edk2-devel@lists.01.org Received: from mail-it0-x242.google.com (mail-it0-x242.google.com [IPv6:2607:f8b0:4001:c0b::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4F2B92035BB04 for ; Tue, 21 Nov 2017 08:44:09 -0800 (PST) Received: by mail-it0-x242.google.com with SMTP id b5so2748440itc.3 for ; Tue, 21 Nov 2017 08:48:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=7UD/ousLgbujbI9NRy6dUujhk02VfY53/pq9BpNvbSM=; b=hBwhQIZh+vBCWv944XcRP8847s9/S4p9gQ+JGcSQpbWzDvdPqyBDhnswCOGbmxrzCR dX6FRx9v2B6CkWUhRzgM6iRiM7f6XEM2v7qgzEgqOMed75WN6c4PoldEZGxev+AOPUnd Zg+i9dwU1KNstDZ0rrxq3gCFHNv4IDTus67layGfEdd9lELMwrTC1fA/6u6uQvpZLMXa jecpD3bkNIQkFek+7y5C4gp749Y0PCUHW69hu4y0Kb5qD+5avckIvvNTiY/CfYKxfsno e/5J14CjlmGlIzzNsABnzLf9DrvRglS36JJYHvNDRO+j8dfCt8e+Bk/OmmjUFEtD7iMU gZxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=7UD/ousLgbujbI9NRy6dUujhk02VfY53/pq9BpNvbSM=; b=pJgoz14uRF2PS3zN/44Nj4GmzM3rmPZje9e5cW4jEe0SB88ma66T7aYQHSJ3Eq5JEZ UpdWJ740eJR9LJuR9cbKTPVS1b5fqxFwFJdG7Ei94o5TPhFhUyps9kt3ZbdYQNCjx822 94DFL0BKt4ynFs3HrvDDEvPSKkJhU9kxuzehBt0u11GOGATehJdCl2QJX84QysCvyMiS 1vXsz+vDjX/CEYtzTz+wtZ3KrvFqpiG0VYj3d2prpcJ2rwbrIrvGZFcon1b8UZAejcRN hkOxx6XeD+KHIf53ydz7bMdJSEb+iG31l+QGzulUNWhOZ34VFm1uc9FvhjhkQ25UdRn+ R41Q== X-Gm-Message-State: AJaThX5cQ4JMwHYNz9Z2V6fnq+h1Ub/IPhqfvmm6q/W0MXdwRDAVQnau Vi0hmCEFZhR/0RGJx8TA2zyiJhJSKt60d++BW+TQli5F9hk= X-Google-Smtp-Source: AGs4zMaitxoeJ1LYoaaEPvr/JYhVttjqPmy6jDpeUPyxQJzGY+R/+InkkpyDIUZMJujqo1vSfPdhsMKxC6VEjf9O5n4= X-Received: by 10.36.238.73 with SMTP id b70mr2586511iti.127.1511282903524; Tue, 21 Nov 2017 08:48:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.132.164 with HTTP; Tue, 21 Nov 2017 08:48:23 -0800 (PST) In-Reply-To: <20171121161037.26573-1-ard.biesheuvel@linaro.org> References: <20171121161037.26573-1-ard.biesheuvel@linaro.org> From: Marcin Wojtas Date: Tue, 21 Nov 2017 17:48:23 +0100 Message-ID: To: Ard Biesheuvel Cc: edk2-devel-01 , Leif Lindholm , "Zhu, Yonghong" , "Gao, Liming" , Daniel Thompson Subject: Re: [PATCH] BaseTools/tools_def AARCH64 ARM: suppres PIE sections via linker script X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2017 16:44:09 -0000 Content-Type: text/plain; charset="UTF-8" Hi Ard, 2017-11-21 17:10 GMT+01:00 Ard Biesheuvel : > 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 > --- > 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) > > #################################################################################### > # > -- Thanks for the patch - this fixes regression, I observed when building edk2 with gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu, so Tested-by: Marcin Wojtas