[U-Boot] [PATCH v1] Makefile: Don't generate position independent code

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Aug 6 17:32:28 UTC 2018


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.
> 



More information about the U-Boot mailing list