From 6f20e9ddc2d15ec70b7c2d4035c78b156a36656a Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Wed, 18 Apr 2012 12:35:10 +0100 Subject: [PATCH] Mac OS: Fixed shared library symbol issues Some of our shared libraries (in particular, roken) build with different symbols in them depending on the exact configuration options for a particular platform. This means that not all of the symbols in the map file may be present within the library. On Mac OS X we have been working around this by using the "-flat_namespace,-undefined,suppress" linker options. However, with Lion this no longer works, as the linker still expects to find the symbol in the library whose mapfile indicated that it was present. So, for example, we end up with errors like: dyld: Symbol not found: _errx Referenced from: openafs.git/tests/rx/../../src/tools/rxperf/rxperf Expected in: openafs.git/lib/librokenafs.dylib.1.1 ... despite errx actually being provided by the system libraries. The fix to this is to use the default two level namespace, and change our behaviour for undefined symbols to 'dynamic_lookup', rather than 'suppress' Change-Id: Ide37856198a8db3d42ee0a5261d097176bcc9301 Reviewed-on: http://gerrit.openafs.org/7242 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/config/shlib-build.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/shlib-build.in b/src/config/shlib-build.in index bb4bc99129..c19e7d009a 100644 --- a/src/config/shlib-build.in +++ b/src/config/shlib-build.in @@ -152,7 +152,7 @@ hp_ux*) > $library.exp export="-Wl,-exported_symbols_list,$library.exp" if [ ! -z "$ignore" ] ; then - export="$export,-flat_namespace,-undefined,suppress" + export="$export,-undefined,dynamic_lookup" fi fi echo "$linker $export -o $filename $*"