OpenAFS Master Repository branch, master, updated. openafs-devel-1_9_2-16-g150ca3c

Gerrit Code Review gerrit@openafs.org
Thu, 21 Nov 2024 10:23:20 -0500


The following commit has been merged in the master branch:
commit 150ca3c410f0017fcf39dbd1dfeda947889f843a
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Tue Nov 19 17:30:56 2024 -0600

    Link LWP binaries with libafshcrypto_lwp.a
    
    Most of our binaries link with -lhcrypto or our internally-built
    -lafshcrypto for heimdal-provided crypto code. But we also build an LWP
    variant, libafshcrypto_lwp.a, which avoids any pthread calls and is to
    be used when linking against LWP instead of pthreads.
    
    Currently, a few binaries link against LWP, but also link against
    $(LIB_hcrypto) (which gets expanded to -lhcrypto or -lafshcrypto). This
    includes most binaries in src/tests, src/rx/test, and src/rxkad/test,
    and has been the case since these commits:
    
      236cb51b83 rx: Cleanup and build src/rx/test
      1fe1dac4c5 rxkad: Cleanup and build src/rxkad/test
      80c23d958c tests: Make src/tests buildable
    
    On most platforms, this isn't so noticeable; the binaries just get built
    for LWP, but have a pthreaded hcrypto and contain references to
    pthreads. (hcrypto itself just uses a single global mutex that is
    briefly held, and so tends to not cause cause any problems running with
    LWP.)
    
    On AIX, this causes a build error when building with --disable-shared,
    because we build these programs without linking to the pthreads library:
    
      /opt/IBM/xlC/16.1.0/bin/cc [...] -o test-setgroups test-setgroups.o [...]/lib/libopr.a -lafshcrypto -lrokenafs
      ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_lock
      ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_unlock
      ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
      make: *** [test-setgroups] Error 8
    
    (Without --disable-shared, this succeeds, presumably because we link
    against the libtool libafshcrypto.la library, which is smart enough to
    know it depends on pthreads.)
    
    To fix this, link against libafshcrypto_lwp.a for these LWP binaries
    instead of $(LIB_hcrypto), like other LWP binaries do. We could maybe
    change $(LIB_hcrypto) to expand to libafshcrypto_lwp.a for Makefile.lwp,
    but that can be confusing, especially for directories that build both
    LWP and pthreaded binaries.
    
    Written in collaboration with ben@huntsmans.net, who noticed the issue
    and provided testing.
    
    Change-Id: Ic4eef01c40e3ecdc4a8dc999b21273d7da364d34
    Reviewed-on: https://gerrit.openafs.org/15904
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Ben Huntsman <ben@huntsmans.net>
    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

 src/rx/test/Makefile.in    | 2 +-
 src/rxkad/test/Makefile.in | 1 -
 src/tests/Makefile.in      | 2 +-
 3 files changed, 2 insertions(+), 3 deletions(-)

-- 
OpenAFS Master Repository