Forum > FPC development

Build failure in Fedora 35 due to glibc 2.34 code hardening


Fedora has recently moved to using glibc 2.34. That caused Free Pascal Compiler to stop building with the following output:

--- Code: ---/usr/bin/ld:
undefined reference to `__libc_csu_init'
undefined reference to `__libc_csu_fini'
Error: Error while linking
--- End code ---

One of the guys responsible for glibc in Fedora gave this explanation:

--- Quote ---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.
--- End quote ---

I'm not the maintainer of fpc package in Fedora, but hopefully the real maintainer will add themselves in this discussion. Do you have any hint on how we can make fpc build again?


Difficult. Even if what he suggests is the best way (and that is still to be established), it is a long term project. If only because, unlike most *nix compilers, FPC also has a libcless mode, exactly to isolate of these constant unnecessary incompatibilities.

Short solution is that you simply maintain a patch with the proper new functions called, and hope they don't changed the signature only the name.

One suggestion a glibc guy has made was:

--- Quote ---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.
--- End quote ---

What do you think?
(see also


[0] Message Index

Go to full version