summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-08-09 23:40:11 +0200
committerLudovic Courtès <ludo@gnu.org>2009-08-09 23:40:11 +0200
commit9af080f7206dccffb91409529fff74e6554f2385 (patch)
tree03ad76c93e5f305b6482d4535e58da36bba4dcd2
parent25361e4b2564623f57a5b338912b2f656bfc8d94 (diff)
downloadguile-9af080f7206dccffb91409529fff74e6554f2385.tar.gz
Use a linker version script for libguile.
* libguile/Makefile.am (libguile_la_LDFLAGS)[HAVE_LD_VERSION_SCRIPT]: Use `libguile.map'. (EXTRA_DIST): Add `libguile.map'. * libguile/libguile.map: New file.
-rw-r--r--libguile/Makefile.am9
-rw-r--r--libguile/libguile.map44
2 files changed, 52 insertions, 1 deletions
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index dfaa65a8f..09be8785f 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -223,6 +223,13 @@ libguile_la_DEPENDENCIES = @LIBLOBJS@
libguile_la_LIBADD = @LIBLOBJS@ $(gnulib_library) $(LTLIBGMP) $(LTLIBUNISTRING)
libguile_la_LDFLAGS = @LTLIBINTL@ -version-info @LIBGUILE_INTERFACE_CURRENT@:@LIBGUILE_INTERFACE_REVISION@:@LIBGUILE_INTERFACE_AGE@ -export-dynamic -no-undefined
+if HAVE_LD_VERSION_SCRIPT
+
+libguile_la_LDFLAGS += -Wl,--version-script="$(srcdir)/libguile.map"
+
+endif HAVE_LD_VERSION_SCRIPT
+
+
# These are headers visible as <guile/mumble.h>
pkginclude_HEADERS =
@@ -264,7 +271,7 @@ EXTRA_DIST = ChangeLog-scm ChangeLog-threads \
cpp_errno.c cpp_err_symbols.in cpp_err_symbols.c \
cpp_sig_symbols.c cpp_sig_symbols.in cpp_cnvt.awk \
c-tokenize.lex version.h.in \
- scmconfig.h.top libgettext.h
+ scmconfig.h.top libgettext.h libguile.map
# $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES) \
# guile-procedures.txt guile.texi
diff --git a/libguile/libguile.map b/libguile/libguile.map
new file mode 100644
index 000000000..2586e0abf
--- /dev/null
+++ b/libguile/libguile.map
@@ -0,0 +1,44 @@
+# Linker version script for libguile. -*- ld-script -*-
+#
+# Copyright (C) 2009 Free Software Foundation, Inc.
+#
+# This file is part of GUILE.
+#
+# GUILE is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 3, or
+# (at your option) any later version.
+#
+# GUILE is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GUILE; see the file COPYING.LESSER. If not,
+# write to the Free Software Foundation, Inc., 51 Franklin Street,
+# Fifth Floor, Boston, MA 02110-1301 USA
+
+GUILE_2.0
+{
+ global:
+ # Note: This includes `scm_i_' symbols declared as `SCM_API' (e.g.,
+ # symbols from `deprecated.c' or symbols used by public inline
+ # functions or macros).
+ scm_*;
+
+ # GDB interface.
+ gdb_options;
+ gdb_language;
+ gdb_result;
+ gdb_output;
+ gdb_output_length;
+ gdb_maybe_valid_type_p;
+ gdb_read;
+ gdb_eval;
+ gdb_print;
+ gdb_binding;
+
+ local:
+ *;
+};