Thread
-
Re: BUG #19095: Test if function exit() is used fail when linked static
VASUKI M <vasukim1992002@gmail.com> — 2025-12-03T11:59:33Z
Hi Hackers, This is a refreshed version of the patch to unify the exit() reference check performed during libpq builds. Earlier versions had duplicated logic between the Makefile and Meson builds, while platform-specific details were also split between comments and build rules. Following feedback from Michael, Daniel, Tom, and Nazir, v4 includes the following changes: Changes in v4 - Added top-level AC_PATH_PROG(NM, nm) in configure.ac, and propagated it via NM, so both build systems use the same nm path. - Updated Makefile and Meson rules to invoke the new Perl helper using - - -nm=$(NM) / - -nm=@NM@ - Centralized all platform-specific behavior in the Perl script: - Skip on Solaris and Windows - Handle ThreadSanitizer (__tsan_func_exit) - Handle OpenBSD’s __cxa_atexit - Whitelist pthread_exit() - Gracefully skip if nm is not available - Removed redundant checks from meson.build and Makefile and replaced them with a short reference to the script. - Added missing cleanup (closing filehandle), and improved comments. - Ensured consistent behavior across autoconf and Meson builds. Testing: Both autoconf and Meson builds were tested with: - Valid nm present - Missing nm - Solaris/Windows-skip behavior - Injected exit() symbol to confirm failure mode works correctly The behavior is now uniform across build systems. Patch is attached. Thanks for the reviews so far, and I welcome further comments. Regards, Vasuki > > On Wed, 26 Nov 2025 at 09:13, Michael Paquier <michael@paquier.xyz> wrote: > >> On Tue, Nov 25, 2025 at 11:51:55AM +0100, Daniel Gustafsson wrote: >> > +if find_program('nm', required: false, native: true).found() and not >> get_option('b_coverage') >> > Sorry for being late to the party, but I wonder why we aren't adding >> this check >> > to the toplevel meson.build and configure.ac (via config/programs.m4) >> like how >> > we check for all others tools used by the build? Such checks should of >> course >> > not fail the configuration, merely record the presence or absence of >> the tool. >> > The path can then be exported to >> src/interfaces/libpq/{Makefile|meson.build} to >> > use. >> >> +1 for this find_program() call grouped at the top of meson.build, >> grouped with the others. >> > Fixed in the v4 please review it. > -- >> Michael >> >