mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
AIX: Link syscall users with -Wl,-bI:afsl.exp
When building with --disable-static on AIX, linking various binaries that call syscall() currently fail: /bin/sh ../../libtool --quiet --mode=link --tag=CC /opt/IBM/xlC/16.1.0/bin/xlc_r -static [...] -o afsd afsd.o afsd_kernel.o [...] ld: 0711-317 ERROR: Undefined symbol: .syscall ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. make: The error code from the last command is 8. There is indeed no symbol 'syscall', because that is a (confusingly-named) syscall provided by our libafs kernel module. To tell the linker that syscall() is a syscall, import our afsl.exp by passing the -Wl,-bI: flag to the linker for all binaries that call it. To make it easier to see what's going on, add the AIX_ONLY subst var, to make it easy to create an AIX-only line in the relevant Makefiles. Change-Id: Id57bf9e6a438c57eded693a1e4ed39b08d36e3c7 Reviewed-on: https://gerrit.openafs.org/15999 Reviewed-by: Ben Huntsman <ben@huntsmans.net> Tested-by: Ben Huntsman <ben@huntsmans.net> Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Mark Vitale <mvitale@sinenomine.net> Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Andrew Deason <adeason@sinenomine.net>
This commit is contained in:
parent
a7cd613437
commit
5196ca7b54
@ -10,6 +10,9 @@ srcdir=@srcdir@
|
||||
include @TOP_OBJDIR@/src/config/Makefile.config
|
||||
include @TOP_OBJDIR@/src/config/Makefile.pthread
|
||||
|
||||
# On AIX, we need to import afsl.exp so the linker can understand that
|
||||
# syscall() is a syscall provided by libafs.
|
||||
@AIX_ONLY@AFSD_KERNEL_LDFLAGS=-Wl,-bI:../sys/afsl.exp
|
||||
|
||||
#
|
||||
# What to make
|
||||
@ -34,7 +37,7 @@ UAFSLIBS=$(top_builddir)/src/cmd/liboafs_cmd.la \
|
||||
|
||||
FUSE_LIBS=@FUSE_LIBS@
|
||||
|
||||
LDFLAGS_afsd = $(AFSD_LDFLAGS)
|
||||
LDFLAGS_afsd = $(AFSD_LDFLAGS) $(AFSD_KERNEL_LDFLAGS)
|
||||
afsd: afsd.o afsd_kernel.o $(AFSLIBS) $(AFSD_LIBS)
|
||||
$(LT_LDRULE_static) afsd.o afsd_kernel.o $(NON_SHARED) \
|
||||
$(AFSLIBS) ${AFSD_LIBS} $(LIB_hcrypto) $(LIB_roken) $(MT_LIBS)
|
||||
|
@ -708,6 +708,13 @@ else
|
||||
esac
|
||||
fi
|
||||
|
||||
dnl For convenience for AIX-only Makefile quirks, comment out all @AIX_ONLY@
|
||||
dnl lines in our Makefiles on non-AIX.
|
||||
AIX_ONLY='#'
|
||||
AS_CASE([$AFS_SYSNAME],
|
||||
[rs_aix*], [AIX_ONLY=])
|
||||
AC_SUBST([AIX_ONLY])
|
||||
|
||||
dnl add additional checks if compilers support the flags
|
||||
AS_IF([test "x$enable_checking" != "xno"],
|
||||
[AX_APPEND_COMPILE_FLAGS([-Wimplicit-fallthrough], [XCFLAGS], [-Werror])
|
||||
|
@ -137,6 +137,7 @@ afsint.ss.o: ../fsint/afsint.ss.c
|
||||
state_analyzer.o: ${VICED}/state_analyzer.c
|
||||
$(AFS_CCRULE) $(VICED)/state_analyzer.c
|
||||
|
||||
@AIX_ONLY@LDFLAGS_dafileserver = -Wl,-bI:../sys/afsl.exp
|
||||
dafileserver: ${objects} ${LIBS}
|
||||
$(LT_LDRULE_static) ${objects} \
|
||||
${LIBS} $(LIB_hcrypto) $(LIB_roken) ${MT_LIBS}
|
||||
|
@ -135,6 +135,7 @@ ihandle.o: ${VOL}/ihandle.c
|
||||
namei_ops.o: ${VOL}/namei_ops.c
|
||||
$(AFS_CCRULE) $(VOL)/namei_ops.c
|
||||
|
||||
@AIX_ONLY@LDFLAGS_davolserver = -Wl,-bI:../sys/afsl.exp
|
||||
davolserver: ${objects} ${LIBS}
|
||||
$(LT_LDRULE_static) ${objects} ${LIBS} $(LIB_hcrypto) $(LIB_roken) \
|
||||
${MT_LIBS} ${XLIBS}
|
||||
|
@ -180,6 +180,7 @@ vos: vos.o ${VOSOBJS} ${VLSERVEROBJS} $(LIBS_client)
|
||||
$(LT_LDRULE_static) vos.o ${VOSOBJS} ${VLSERVEROBJS} $(LIBS_client) \
|
||||
$(LIB_hcrypto) $(LIB_roken) ${MT_LIBS}
|
||||
|
||||
@AIX_ONLY@LDFLAGS_volserver = -Wl,-bI:../sys/afsl.exp
|
||||
volserver: ${objects} $(LIBS_server)
|
||||
$(LT_LDRULE_static) ${objects} $(LIBS_server) \
|
||||
$(LIB_hcrypto) $(LIB_roken) ${MT_LIBS}
|
||||
|
@ -126,6 +126,7 @@ namei_ops.o: ${VOL}/namei_ops.c
|
||||
afsint.ss.o: ../fsint/afsint.ss.c
|
||||
$(AFS_CCRULE) ../fsint/afsint.ss.c
|
||||
|
||||
@AIX_ONLY@LDFLAGS_fileserver = -Wl,-bI:../sys/afsl.exp
|
||||
fileserver: ${objects} ${LIBS}
|
||||
$(LT_LDRULE_static) ${objects} \
|
||||
${LIBS} $(LIB_hcrypto) $(LIB_roken) ${MT_LIBS}
|
||||
|
@ -106,6 +106,7 @@ vos: vos.o libvolser.a ${LIBS}
|
||||
$(AFS_LDRULE) vos.o libvolser.a \
|
||||
${LIBS} $(LIB_roken) ${XLIBS}
|
||||
|
||||
@AIX_ONLY@LDFLAGS_volserver = -Wl,-bI:../sys/afsl.exp
|
||||
volserver: $(SOBJS) volerr.lo volint.xdr.lo volint.cs.lo \
|
||||
$(LIBS) ${TOP_LIBDIR}/libdir.a
|
||||
$(AFS_LDRULE) $(SOBJS) .lwp/volerr.o .lwp/volint.xdr.o .lwp/volint.cs.o \
|
||||
|
Loading…
Reference in New Issue
Block a user