From: Glenn Washburn Date: Fri, 18 Mar 2022 06:34:05 +0000 (-0500) Subject: gdb: Add malloc and free symbols to kernel.exec to improve gdb functionality X-Git-Tag: grub-2.12-rc1~422 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0da8d3d35162de9f39ed667a85623632900faa3;p=thirdparty%2Fgrub.git gdb: Add malloc and free symbols to kernel.exec to improve gdb functionality Add linker flags when linking kernel.exec to have malloc and free point to grub_malloc() and grub_free() respectively. Some gdb functionality depends on gdb locating the symbols "malloc" and "free", such as dynamically creating strings for arguments to injected function calls. A trivial example would the gdb command 'p strlen("astring")'. Make sure not to do this on emu platforms, or an infinite loop occurs because emu has a special grub_malloc() that calls malloc(). Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- diff --git a/conf/Makefile.common b/conf/Makefile.common index b343a038e..2d8f1bf2e 100644 --- a/conf/Makefile.common +++ b/conf/Makefile.common @@ -39,6 +39,13 @@ LDFLAGS_KERNEL = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1 CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM) STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version -R .MIPS.abiflags -R .ARM.exidx +if !COND_emu +if COND_HAVE_ASM_USCORE + LDFLAGS_KERNEL += -Wl,--defsym=_malloc=_grub_malloc -Wl,--defsym=_free=_grub_free +else + LDFLAGS_KERNEL += -Wl,--defsym=malloc=grub_malloc -Wl,--defsym=free=grub_free +endif +endif CFLAGS_MODULE = $(CFLAGS_PLATFORM) -ffreestanding LDFLAGS_MODULE = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r