I got one very succinct response from Casper Dik <casper@holland.Sun.COM>.
Thanks Casper!
The original request:
>I am trying to generate an object file suitable for loading into
>another program using dlopen().  It has numerous functions in it
>which must remain hidden to the outside world.  Only one function
>should be visible externally; it will be used to access everything
>else.
>
>The ld man page says to use "-B reduce" or "-B local" to make
>everything local, and to use "-M mapfile" to specify those symbols
>which must remain global.  It then points to the "Linker and Libraries
>manual" for instructions.  This manual talks at length about using
>mapfiles, but never about how to specify global symbols with them.
Casper's response:
> Here's an example:
> % cat mapfile
> {
>         global:
>                 foo;
>                 bar;
>                 baz;
>         local: *;
> };
> Then link the library with:
>         cc -M mapfile -G *.o -o lib.so 
> and you'll only get foo bar baz as globals (and the builtin symbols).
> The "local: *" directive makes all symbols local.  Global: lists the
> exceptions.
--- 
        David L. Markowitz			Director, UNIX Software
        David.Markowitz@litronic.com		Litronic Industries 
        http://intra.litronic.com/davem		http://www.litronic.com/
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:12:05 CDT