diff --git a/MANIFEST b/MANIFEST index 45b2b5cc6..7de0ffea4 100644 --- a/MANIFEST +++ b/MANIFEST @@ -127,14 +127,12 @@ mkpkg pathnames.h.in plugins/sample/Makefile.in plugins/sample/sample_plugin.c -plugins/sample/sample_plugin.map -plugins/sample/sample_plugin.sym +plugins/sample/sample_plugin.exp plugins/sample_group/Makefile.in plugins/sample_group/getgrent.c plugins/sample_group/plugin_test.c plugins/sample_group/sample_group.c -plugins/sample_group/sample_group.map -plugins/sample_group/sample_group.sym +plugins/sample_group/sample_group.exp plugins/sudoers/Makefile.in plugins/sudoers/aixcrypt.exp plugins/sudoers/alias.c @@ -260,10 +258,9 @@ plugins/sudoers/set_perms.c plugins/sudoers/sudo_nss.c plugins/sudoers/sudo_nss.h plugins/sudoers/sudoers.c +plugins/sudoers/sudoers.exp plugins/sudoers/sudoers.h plugins/sudoers/sudoers.in -plugins/sudoers/sudoers.map -plugins/sudoers/sudoers.sym plugins/sudoers/sudoers2ldif plugins/sudoers/sudoers_version.h plugins/sudoers/sudoreplay.c @@ -278,8 +275,7 @@ plugins/sudoers/tsgetgrpw.h plugins/sudoers/visudo.c plugins/system_group/Makefile.in plugins/system_group/system_group.c -plugins/system_group/system_group.map -plugins/system_group/system_group.sym +plugins/system_group/system_group.exp pp src/Makefile.in src/conversation.c diff --git a/configure b/configure index b98b3410f..d15c3d9e7 100755 --- a/configure +++ b/configure @@ -740,6 +740,8 @@ SUDO_OBJS SUDOERS_OBJS COMMON_OBJS LT_LDEXPORTS +LT_LDDEP +LT_LDOPT LT_LDMAP LT_LDFLAGS SUDOERS_LDFLAGS @@ -2883,6 +2885,8 @@ $as_echo "$as_me: Configuring Sudo version $PACKAGE_VERSION" >&6;} + + @@ -2951,7 +2955,8 @@ AUTH_EXCL= AUTH_EXCL_DEF= AUTH_DEF=passwd SUDO_NLS=disabled -LT_LDEXPORTS="-export-symbols \$(symfile)" +LT_LDEXPORTS="-export-symbols \$(shlib_exp)" +LT_LDDEP="\$(shlib_exp)" CHECKSHADOW=true shadow_defs= @@ -20132,6 +20137,7 @@ if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : CFLAGS="${CFLAGS} -fvisibility=hidden" LT_LDEXPORTS= + LT_LDDEP= else @@ -20173,6 +20179,7 @@ if test x"$ax_cv_check_cflags___Bhidden_def" = xyes; then : CFLAGS="${CFLAGS} -Bhidden_def" LT_LDEXPORTS= + LT_LDDEP= else : @@ -20217,6 +20224,7 @@ if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : CFLAGS="${CFLAGS} -xldscope=hidden" LT_LDEXPORTS= + LT_LDDEP= else : @@ -20239,8 +20247,10 @@ if test -n "$LT_LDEXPORTS"; then EOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5 $as_echo_n "checking whether ld supports anonymous map files... " >&6; } + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map" + LDFLAGS="$LDFLAGS -fpic -shared -Wl,--version-script,./conftest.map" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo; @@ -20254,11 +20264,12 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : - LT_LDEXPORTS=; LT_LDMAP="-Wl,--version-script,\$(mapfile)" + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,--version-script,\$(shlib_map)" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + CFLAGS="$_CFLAGS" LDFLAGS="$_LDFLAGS" else case "$host" in @@ -20271,8 +20282,10 @@ rm -f core conftest.err conftest.$ac_objext \ EOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5 $as_echo_n "checking whether ld supports anonymous map files... " >&6; } + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map" + LDFLAGS="$LDFLAGS -shared -Wl,-M,./conftest.map" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo; @@ -20286,11 +20299,47 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : - LT_LDEXPORTS=; LT_LDMAP="-Wl,-M,\$(mapfile)" + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,-M,\$(shlib_map)" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + CFLAGS="$_CFLAGS" + LDFLAGS="$_LDFLAGS" + ;; + *-*-hpux*) + cat > conftest.opt <<-EOF + +e foo + EOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports controlling exported symbols" >&5 +$as_echo_n "checking whether ld supports controlling exported symbols... " >&6; } + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" + _LDFLAGS="$LDFLAGS" + if test -n "$GCC"; then + LDFLAGS="$LDFLAGS -shared -Wl,-c,./conftest.opt" + else + LDFLAGS="$LDFLAGS -Wl,-b -Wl,-c,./conftest.opt" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_opt)"; LT_LDOPT="-Wl,-c,\$(shlib_opt)" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$_CFLAGS" LDFLAGS="$_LDFLAGS" ;; esac diff --git a/configure.in b/configure.in index 52d2bf574..9a69ebf03 100644 --- a/configure.in +++ b/configure.in @@ -22,6 +22,8 @@ AC_SUBST([LDFLAGS]) AC_SUBST([SUDOERS_LDFLAGS]) AC_SUBST([LT_LDFLAGS]) AC_SUBST([LT_LDMAP]) +AC_SUBST([LT_LDOPT]) +AC_SUBST([LT_LDDEP]) AC_SUBST([LT_LDEXPORTS]) AC_SUBST([COMMON_OBJS]) AC_SUBST([SUDOERS_OBJS]) @@ -178,7 +180,8 @@ AUTH_EXCL= AUTH_EXCL_DEF= AUTH_DEF=passwd SUDO_NLS=disabled -LT_LDEXPORTS="-export-symbols \$(symfile)" +LT_LDEXPORTS="-export-symbols \$(shlib_exp)" +LT_LDDEP="\$(shlib_exp)" dnl dnl Other vaiables @@ -3178,6 +3181,7 @@ AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [ AC_DEFINE(HAVE_DSO_VISIBILITY) CFLAGS="${CFLAGS} -fvisibility=hidden" LT_LDEXPORTS= + LT_LDDEP= ], [ if test -z "$GCC"; then case "$host" in @@ -3186,6 +3190,7 @@ AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [ AC_DEFINE(HAVE_DSO_VISIBILITY) CFLAGS="${CFLAGS} -Bhidden_def" LT_LDEXPORTS= + LT_LDDEP= ]) ;; *-*-solaris2*) @@ -3193,6 +3198,7 @@ AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [ AC_DEFINE(HAVE_DSO_VISIBILITY) CFLAGS="${CFLAGS} -xldscope=hidden" LT_LDEXPORTS= + LT_LDDEP= ]) ;; esac @@ -3213,11 +3219,14 @@ if test -n "$LT_LDEXPORTS"; then }; EOF AC_MSG_CHECKING([whether ld supports anonymous map files]) + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map" + LDFLAGS="$LDFLAGS -fpic -shared -Wl,--version-script,./conftest.map" AC_TRY_LINK([int foo;], [], [ - LT_LDEXPORTS=; LT_LDMAP="-Wl,--version-script,\$(mapfile)" + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,--version-script,\$(shlib_map)" ]) + CFLAGS="$_CFLAGS" LDFLAGS="$_LDFLAGS" else case "$host" in @@ -3229,11 +3238,33 @@ if test -n "$LT_LDEXPORTS"; then }; EOF AC_MSG_CHECKING([whether ld supports anonymous map files]) + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map" + LDFLAGS="$LDFLAGS -shared -Wl,-M,./conftest.map" AC_TRY_LINK([int foo;], [], [ - LT_LDEXPORTS=; LT_LDMAP="-Wl,-M,\$(mapfile)" + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,-M,\$(shlib_map)" ]) + CFLAGS="$_CFLAGS" + LDFLAGS="$_LDFLAGS" + ;; + *-*-hpux*) + cat > conftest.opt <<-EOF + +e foo + EOF + AC_MSG_CHECKING([whether ld supports controlling exported symbols]) + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" + _LDFLAGS="$LDFLAGS" + if test -n "$GCC"; then + LDFLAGS="$LDFLAGS -shared -Wl,-c,./conftest.opt" + else + LDFLAGS="$LDFLAGS -Wl,-b -Wl,-c,./conftest.opt" + fi + AC_TRY_LINK([int foo;], [], [ + LT_LDEXPORTS=; LT_LDDEP="\$(shlib_opt)"; LT_LDOPT="-Wl,-c,\$(shlib_opt)" + ]) + CFLAGS="$_CFLAGS" LDFLAGS="$_LDFLAGS" ;; esac diff --git a/plugins/sample/Makefile.in b/plugins/sample/Makefile.in index b731a3c8d..22ca14fc9 100644 --- a/plugins/sample/Makefile.in +++ b/plugins/sample/Makefile.in @@ -43,7 +43,7 @@ CFLAGS = @CFLAGS@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ -LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDEXPORTS@ +LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDOPT@ @LT_LDEXPORTS@ # Where to install things... prefix = @prefix@ @@ -59,8 +59,9 @@ plugindir = @PLUGINDIR@ # File extension, mode and map file to use for shared libraries/objects soext = @SOEXT@ shlib_mode = @SHLIB_MODE@ -mapfile = $(srcdir)/sample_plugin.map -symfile = $(srcdir)/sample_plugin.sym +shlib_exp = $(srcdir)/sample_plugin.exp +shlib_map = sample_plugin.map +shlib_opt = sample_plugin.opt # OS dependent defines DEFS = @OSDEFS@ @@ -85,7 +86,13 @@ Makefile: $(srcdir)/Makefile.in .c.lo: $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $< -sample_plugin.la: $(OBJS) +$(shlib_map): $(shlib_exp) + @awk 'BEGIN { print "{\n\tglobal:" } { print "\t\t"$$0";" } END { print "\tlocal:\n\t\t*;\n};" }' $(shlib_exp) > $@ + +$(shlib_opt): $(shlib_exp) + @sed 's/^/+e /' $(shlib_exp) > $@ + +sample_plugin.la: $(OBJS) @LT_LDDEP@ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ $(OBJS) $(LIBS) -module -avoid-version -rpath $(plugindir) pre-install: diff --git a/plugins/sample/sample_plugin.sym b/plugins/sample/sample_plugin.exp similarity index 100% rename from plugins/sample/sample_plugin.sym rename to plugins/sample/sample_plugin.exp diff --git a/plugins/sample/sample_plugin.map b/plugins/sample/sample_plugin.map deleted file mode 100644 index 046b0c6f3..000000000 --- a/plugins/sample/sample_plugin.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - global: - # Policy and I/O plugin structs - sample_policy; - sample_io; - local: - *; -}; diff --git a/plugins/sample_group/Makefile.in b/plugins/sample_group/Makefile.in index 523b972bd..7c2410af5 100644 --- a/plugins/sample_group/Makefile.in +++ b/plugins/sample_group/Makefile.in @@ -44,7 +44,7 @@ CFLAGS = @CFLAGS@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ -LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDEXPORTS@ +LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDOPT@ @LT_LDEXPORTS@ # Where to install things... prefix = @prefix@ @@ -60,8 +60,9 @@ plugindir = @PLUGINDIR@ # File extension, mode and map file to use for shared libraries/objects soext = @SOEXT@ shlib_mode = @SHLIB_MODE@ -mapfile = $(srcdir)/sample_group.map -symfile = $(srcdir)/sample_group.sym +shlib_exp = $(srcdir)/sample_group.exp +shlib_map = sample_group.map +shlib_opt = sample_group.opt # OS dependent defines DEFS = @OSDEFS@ @@ -86,7 +87,13 @@ Makefile: $(srcdir)/Makefile.in .c.lo: $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $< -sample_group.la: $(OBJS) $(LT_LIBS) +$(shlib_map): $(shlib_exp) + @awk 'BEGIN { print "{\n\tglobal:" } { print "\t\t"$$0";" } END { print "\tlocal:\n\t\t*;\n};" }' $(shlib_exp) > $@ + +$(shlib_opt): $(shlib_exp) + @sed 's/^/+e /' $(shlib_exp) > $@ + +sample_group.la: $(OBJS) $(LT_LIBS) @LT_LDDEP@ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ $(OBJS) $(LIBS) -module -avoid-version -rpath $(plugindir) pre-install: diff --git a/plugins/sample_group/sample_group.sym b/plugins/sample_group/sample_group.exp similarity index 100% rename from plugins/sample_group/sample_group.sym rename to plugins/sample_group/sample_group.exp diff --git a/plugins/sample_group/sample_group.map b/plugins/sample_group/sample_group.map deleted file mode 100644 index 1a1206440..000000000 --- a/plugins/sample_group/sample_group.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - global: - # Group plugin structure - group_plugin; - local: - *; -}; diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index 40240143c..a733681f2 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -58,7 +58,7 @@ CFLAGS = @CFLAGS@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ -LT_LDFLAGS = @SUDOERS_LDFLAGS@ @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDEXPORTS@ +LT_LDFLAGS = @SUDOERS_LDFLAGS@ @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDOPT@ @LT_LDEXPORTS@ # Where to install things... prefix = @prefix@ @@ -74,8 +74,9 @@ localstatedir = @localstatedir@ # File extension, mode and map file to use for shared libraries/objects soext = @SOEXT@ shlib_mode = @SHLIB_MODE@ -mapfile = $(srcdir)/sudoers.map -symfile = $(srcdir)/sudoers.sym +shlib_exp = $(srcdir)/sudoers.exp +shlib_map = sudoers.map +shlib_opt = sudoers.opt # Directory in which to install the sudoers plugin plugindir = @PLUGINDIR@ @@ -158,6 +159,12 @@ all: $(PROGS) .c.lo: $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $< +$(shlib_map): $(shlib_exp) + @awk 'BEGIN { print "{\n\tglobal:" } { print "\t\t"$$0";" } END { print "\tlocal:\n\t\t*;\n};" }' $(shlib_exp) > $@ + +$(shlib_opt): $(shlib_exp) + @sed 's/^/+e /' $(shlib_exp) > $@ + # Prevent default rules from building .c files from .l and .y files .l.c: @@ -169,7 +176,7 @@ Makefile: $(srcdir)/Makefile.in libparsesudoers.la: $(LIBPARSESUDOERS_OBJS) $(LIBTOOL) --mode=link $(CC) -o $@ $(LIBPARSESUDOERS_OBJS) -no-install -sudoers.la: $(SUDOERS_OBJS) $(LT_LIBS) libparsesudoers.la +sudoers.la: $(SUDOERS_OBJS) $(LT_LIBS) libparsesudoers.la @LT_LDDEP@ $(LIBTOOL) @LT_STATIC@ --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ $(SUDOERS_OBJS) libparsesudoers.la $(SUDOERS_LIBS) -module -avoid-version -rpath $(plugindir) visudo: libparsesudoers.la $(VISUDO_OBJS) $(LT_LIBS) @@ -296,7 +303,7 @@ check: $(TEST_PROGS) visudo testsudoers ./check_iolog_path $(srcdir)/regress/iolog_path/data; \ rval=`expr $$rval + $$?`; \ if [ X"$(soext)" != X"" ]; then \ - ./check_symbols .libs/sudoers$(soext) $(symfile); \ + ./check_symbols .libs/sudoers$(soext) $(shlib_exp); \ rval=`expr $$rval + $$?`; \ fi; \ ./check_wrap $(srcdir)/regress/logging/check_wrap.in > check_wrap.out; \ diff --git a/plugins/sudoers/sudoers.sym b/plugins/sudoers/sudoers.exp similarity index 100% rename from plugins/sudoers/sudoers.sym rename to plugins/sudoers/sudoers.exp diff --git a/plugins/sudoers/sudoers.map b/plugins/sudoers/sudoers.map deleted file mode 100644 index a721c5964..000000000 --- a/plugins/sudoers/sudoers.map +++ /dev/null @@ -1,13 +0,0 @@ -{ - global: - # Policy and I/O plugin structs - sudoers_policy; - sudoers_io; - # Group cache functions for system_group plugin - sudo_getgrgid; - sudo_getgrnam; - sudo_gr_addref; - sudo_gr_delref; - local: - *; -}; diff --git a/plugins/system_group/Makefile.in b/plugins/system_group/Makefile.in index 96b158ef7..c841e1d67 100644 --- a/plugins/system_group/Makefile.in +++ b/plugins/system_group/Makefile.in @@ -44,7 +44,7 @@ CFLAGS = @CFLAGS@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ -LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDEXPORTS@ +LT_LDFLAGS = @LT_LDFLAGS@ @LT_LDMAP@ @LT_LDOPT@ @LT_LDEXPORTS@ # Where to install things... prefix = @prefix@ @@ -60,8 +60,9 @@ plugindir = @PLUGINDIR@ # File extension, mode and map file to use for shared libraries/objects soext = @SOEXT@ shlib_mode = @SHLIB_MODE@ -mapfile = $(srcdir)/system_group.map -symfile = $(srcdir)/system_group.sym +shlib_exp = $(srcdir)/system_group.exp +shlib_map = system_group.map +shlib_opt = system_group.opt # OS dependent defines DEFS = @OSDEFS@ @@ -86,7 +87,13 @@ Makefile: $(srcdir)/Makefile.in .c.lo: $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $< -system_group.la: $(OBJS) $(LT_LIBS) +$(shlib_map): $(shlib_exp) + @awk 'BEGIN { print "{\n\tglobal:" } { print "\t\t"$$0";" } END { print "\tlocal:\n\t\t*;\n};" }' $(shlib_exp) > $@ + +$(shlib_opt): $(shlib_exp) + @sed 's/^/+e /' $(shlib_exp) > $@ + +system_group.la: $(OBJS) $(LT_LIBS) @LT_LDDEP@ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ $(OBJS) $(LIBS) -module -avoid-version -rpath $(plugindir) pre-install: diff --git a/plugins/system_group/system_group.sym b/plugins/system_group/system_group.exp similarity index 100% rename from plugins/system_group/system_group.sym rename to plugins/system_group/system_group.exp diff --git a/plugins/system_group/system_group.map b/plugins/system_group/system_group.map deleted file mode 100644 index 1a1206440..000000000 --- a/plugins/system_group/system_group.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - global: - # Group plugin structure - group_plugin; - local: - *; -};