From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heinrich Schuchardt Date: Mon, 6 Aug 2018 19:32:28 +0200 Subject: [U-Boot] [PATCH v1] Makefile: Don't generate position independent code In-Reply-To: <97deab69fc2705e77d5741a5431db29c9bcc3e2a.camel@linux.intel.com> References: <20180806160022.43698-1-andriy.shevchenko@linux.intel.com> <97deab69fc2705e77d5741a5431db29c9bcc3e2a.camel@linux.intel.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 08/06/2018 07:11 PM, Andy Shevchenko wrote: > On Mon, 2018-08-06 at 18:56 +0200, Heinrich Schuchardt wrote: >> On 08/06/2018 06:00 PM, Andy Shevchenko wrote: > >>> Fix all these by disabling PIE on Makefile level. > >> With the patch building with gcc-8.1 works on i386. > > Does it mean you are actually run it and it works? > >> But the interesting >> question is whether the EFI subsystem will be able to relocate the >> runtime code when the EFI service SetVirtualAddressMap() is called. > > EFI code should have different CFLAGS I suppose. This really depends on the architecture: On RISC-V EFI specific flags are not defined. On ARM CFLAGS_NON_EFI := -fno-pic -ffixed-r9 -ffunction-sections -fdata-sections CFLAGS_EFI := -fpic -fshort-wchar On x86 ifeq ($(IS_32BIT),y) CFLAGS_NON_EFI := -mregparm=3 endif CFLAGS_EFI := -fpic -fshort-wchar Do you know how -fpic and -fno-PIE work together when both are passed to gcc? CFLAGS_EFI is only used to compile standalone EFI executables like helloworld.efi not the EFI runtime. See lib/efi_loader/Makefile. Best regards Hienrich > >> Did you boot Linux with the patch via bootefi and call any of the EFI >> runtime services from Linux? > > Nope, I have no platform with UEFI to test. > >> As you are changing this for all architectures this needs to be tested >> on all (ARM, RISC-V, and x86) architectures supporting the EFI >> subsystem. > > Agree. Unfortunately I have almost none of them to play with. > I leave this to others who able to confirm the patch works. > > My understanding we need this anyway and if there are some problems, we > need to fix them on individual basis. >