
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.