Re: [PATCH] H8: Add support for preinit/init/fini array

Jeff Johnston <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAOox84s_SjpbEZsAx9EprDrTxB-bT0pgbavt8NXY7iiph8h6Vg@mail.gmail.com>
The changes to fini.c and init.c have been reverted.

-- Jeff J.

On Tue, Aug 11, 2026 at 10:54 PM Hans-Peter Nilsson <[email protected]> wrote:

> > From: Jan Dubiec <[email protected]>
> > Date: Sun, 12 Jul 2026 21:54:53 +0200
>
> > This patch adds support for .preinit_array, .init_array, and .fini_array
> > for the H8 family when binutils and GCC are configured with
> "--enable-initfini-array".
>
> To accomplish that, there should have been a fix to binutils, per
> below.
>
> Instead, this patch broke initfini support for targets with a
> USER_LABEL_PREFIX, like cris-elf.  I was alerted to this commit when
> people tried to use newlib master with cris-elf in
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126518
>
> > The changes to init.c and fini.c ensure that linker-defined symbols
> > referenced from C code are not affected by target-specific symbol naming
> > conventions. For example, GCC for H8 prefixes external symbol names with
> > an underscore, whereas GCC for ARM does not. The asm keyword is used to
> > associate C identifiers with the corresponding linker-defined symbol
> names
> > in a target-independent manner.
> >
> > The patch has been tested on H8 wher it enables support for the
> > initialization and finalization arrays and on ARM in order to verify that
> > the changes do not introduce any regressions.
>
> Since ARM isn't a USER_LABEL_PREFIX-target, your patch was neutral
> there.  While testing the patch there too makes sense, that target
> wasn't in the cross-hairs; it didn't change the symbols.
>
> The parts of this patch to the generic files, should be reverted.
> Instead I suggest to correct binutils for h8300 to emit the "_" as a
> prefix to those linker-generated initfini-symbols in the default
> linker scripts, something like:
>
> diff --git a/ld/emulparams/h8300elf.sh b/ld/emulparams/h8300elf.sh
> index 45b3458d1cea..dd007fcd0ffc 100644
> --- a/ld/emulparams/h8300elf.sh
> +++ b/ld/emulparams/h8300elf.sh
> @@ -9,6 +9,7 @@ MAXPAGESIZE=2
>  TARGET_PAGE_SIZE=128
>  ARCH=h8300
>  TEMPLATE_NAME=elf
> +USER_LABEL_PREFIX=_
>  EMBEDDED=yes
>  STACK_ADDR=0xfefc
>  TINY_READONLY_SECTION=".tinyrodata :
>
> (cf. emulparams/criself.sh and ld/scripttempl/elf.sc)
>
> That might of course have fallout for other symbols defined in those
> scripts, but would align with other targets (no special defines or
> asm-renames needed).
>
> brgds, H-P
>
>
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.