[PATCH v4] efi: arm64: Add vmlinux debug link to the Image binary
Ard Biesheuvel
ard.biesheuvel at linaro.org
Thu Feb 2 10:36:47 PST 2017
On 2 February 2017 at 18:30, Will Deacon <will.deacon at arm.com> wrote:
> Hi Ard,
>
> On Thu, Feb 02, 2017 at 05:33:19PM +0000, Ard Biesheuvel wrote:
>> When building with debugging symbols, take the absolute path to the
>> vmlinux binary and add it to the special PE/COFF debug table entry.
>> This allows a debug EFI build to find the vmlinux binary, which is
>> very helpful in debugging, given that the offset where the Image is
>> first loaded by EFI is highly unpredictable.
>>
>> On implementations of UEFI that choose to implement it, this
>> information is exposed via the EFI debug support table, which is a UEFI
>> configuration table that is accessible both by the firmware at boot time
>> and by the OS at runtime, and lists all PE/COFF images loaded by the
>> system.
>>
>> The format of the NB10 Codeview entry is based on the definition used
>> by EDK2, which is our primary reference when it comes to the use of
>> PE/COFF in the context of UEFI firmware.
>>
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
>> ---
>> v4: add a separate DEBUG_EFI debug option so that this feature is disabled
>> by default
>> dropped 1/2 which has been queued already in the EFI tree
>> use ASCII rather than an opaque constant for "NB10" signature
>>
>> arch/arm64/Kconfig.debug | 8 ++++
>> arch/arm64/kernel/Makefile | 4 ++
>> arch/arm64/kernel/head.S | 47 +++++++++++++++++++-
>> 3 files changed, 58 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug
>> index d1ebd46872fd..f7f38b1aab14 100644
>> --- a/arch/arm64/Kconfig.debug
>> +++ b/arch/arm64/Kconfig.debug
>> @@ -95,6 +95,14 @@ config DEBUG_ALIGN_RODATA
>>
>> If in doubt, say N.
>>
>> +config DEBUG_EFI
>> + depends on EFI && DEBUG_INFO
>> + bool "UEFI debugging"
>> + help
>> + Enable this option to include EFI specific debugging features into
>> + the kernel that are only useful when using a debug build of the
>> + UEFI firmware
>> +
>
> I don't much like embedding the absolute host build path in the kernel
> image, but if that's what the tools expect then so be it.
>
>> source "drivers/hwtracing/coresight/Kconfig"
>>
>> endmenu
>> diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
>> index 7d66bbaafc0c..2600c60337ac 100644
>> --- a/arch/arm64/kernel/Makefile
>> +++ b/arch/arm64/kernel/Makefile
>> @@ -55,3 +55,7 @@ obj-y += $(arm64-obj-y) vdso/ probes/
>> obj-m += $(arm64-obj-m)
>> head-y := head.o
>> extra-y += $(head-y) vmlinux.lds
>> +
>> +ifeq ($(CONFIG_DEBUG_EFI),y)
>> +AFLAGS_head.o += -DVMLINUX_PATH="\"$(shell readlink -f $(objtree)/vmlinux)\""
>> +endif
>
> Can we use the Make realpath directive instead of calling out to the shell?
>
Yep. This works as expected:
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 2600c60337ac..1606c6b2a280 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -57,5 +57,5 @@ head-y := head.o
extra-y += $(head-y) vmlinux.lds
ifeq ($(CONFIG_DEBUG_EFI),y)
-AFLAGS_head.o += -DVMLINUX_PATH="\"$(shell readlink -f $(objtree)/vmlinux)\""
+AFLAGS_head.o += -DVMLINUX_PATH="\"$(realpath $(objtree)/vmlinux)\""
endif
> Do you want me to merge this via arm64?
>
Yes, please
More information about the linux-arm-kernel
mailing list