Re: [RFC PATCH 07/18] build: extend ld_magic_routines for the aarch64 PIE kernel

Sergey Bugaev <[email protected]>
Newsgroups gmane.os.hurd.bugs
Message-ID <CAN9u=HdGTUFuQqWBQg9+j-9sCVa+ixGjVyRnx1U_Dd_VWGLoxA@mail.gmail.com>
On Sun, May 24, 2026 at 4:43 AM Paulo Duarte <[email protected]> wrote:
>
> The aarch64 port builds gnumach as a static-PIE so the bootloader
> can place it at any 2 MiB-aligned address in RAM (per the Linux
> arm64 boot protocol).  That introduces a handful of additional
> linker-provided symbols (__rela_start, __rela_end, __bss_start,
> __bss_end, _image_end, __text_start) plus a GOT reference
> (_GLOBAL_OFFSET_TABLE_) which appear as undefined in gnumach.o
> before the final link.
>
> Add these to the undef-check filter so the aarch64 build no longer
> fails the gnumach-undef-bad sanity check.  On i386/x86_64 the
> kernel doesn't reference any of these symbols, so the additional
> filter entries are a no-op there.

This too is my code that you're submitting, right? If so, it should
say that somewhere in the mail header (From: or something) or at least
be mentioned in the commit message.

> ---
>  Makefile.am | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index 6f21e55e..57e80ef4 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -175,12 +175,13 @@ noinst_PROGRAMS += \
>  # This is the list of routines we use from libgcc.
>  libgcc_routines := udivdi3 __udivdi3 __udivmoddi4 __umoddi3 __divdi3 __divmoddi4 __moddi3 __ffsdi2
>  # References generated by ld.
> -ld_magic_routines := __rel_iplt_start __rel_iplt_end __rela_iplt_start __rela_iplt_end _START etext _edata _end
> +ld_magic_routines := __rel_iplt_start __rel_iplt_end __rela_iplt_start __rela_iplt_end __rela_start __rela_end \
> +       _START etext _edata _end __bss_start __bss_end _image_end __text_start
>  gnumach-undef: gnumach.$(OBJEXT)
>         $(NM_V) $(NM) -u $< | sed 's/  *U  *//' | sort -u > $@
>  MOSTLYCLEANFILES += gnumach-undef
>  gnumach-undef-bad: gnumach-undef Makefile
> -       $(AM_V_GEN) sed '$(foreach r,$(libgcc_routines) $(ld_magic_routines),/^$r$$/d;)' $< > $@
> +       $(AM_V_GEN) sed '$(foreach r,$(libgcc_routines) $(ld_magic_routines) _GLOBAL_OFFSET_TABLE_,/^$r$$/d;)' $< > $@
>  MOSTLYCLEANFILES += gnumach-undef-bad
>  libgcc-routines.o: gnumach-undef gnumach-undef-bad
>         $(AM_V_at) if test -s gnumach-undef-bad; \
> --
> 2.54.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.