Thread

  1. 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
    >>
    >