* Mattia Verga via devel:

> Hello folks,
>
> I've just noticed that in F35 Mass rebuild everything related to Free
> Pascal is now failing to build.
> The fpc compiler itself is FTB with the following output:
>
> /usr/bin/ld:
> /builddir/build/BUILD/fpcbuild-3.2.2/fpcsrc/rtl/units/powerpc64-linux/si_c.o:(.data.n_TC_$SI_C_$$_START_ADDRESSES+0x10):
> undefined reference to `__libc_csu_init'
> /usr/bin/ld:
> /builddir/build/BUILD/fpcbuild-3.2.2/fpcsrc/rtl/units/powerpc64-linux/si_c.o:(.data.n_TC_$SI_C_$$_START_ADDRESSES+0x18):
> undefined reference to `__libc_csu_fini'
> Error: Error while linking
>
>  From a quick search on search engines it seems a glibc misconfiguration
> of some sort... ?
> The latest fpc that was built successfully on F35 used glibc
> 2.33.9000-2.fc35

It's related to startup code hardening in glibc.  In general, it's not
forward-compatible to call internal glibc functions this way.
__libc_csu_init and __libc_csu_fini where never part of any header file.

It's not clear to me why fpc needs to replace the startup code.  They
could supply a C main function and call Pascall code from that.  Or
compile the main program in such a way that it has a compatible
interface with the C main program.

To adjust to the glibc 2.34 changes without fixing the underlying
problem, use this:

-    .quad   __libc_csu_init
-    .quad   __libc_csu_fini
+    .quad   0
+    .quad   0

Similarly for the other architectures.

You can use this glibc commit for reference purposes:

commit 035c012e32c11e84d64905efaf55e74f704d3668
Author: Florian Weimer <fwei...@redhat.com>
Date:   Thu Feb 25 12:10:57 2021 +0100

    Reduce the statically linked startup code [BZ #23323]

Note that if these changes are applied on older glibc versions (before
2.34), ELF constructors for the main program will no longer run.  But
apart from that, I think this will be a compatible change.

Please also add the glibc copyright headers where they are missing.

Thanks,
Florian
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to