[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

versioned symbols



Hello,

The major issue stopping Heimdal 0.8.1 getting into Debian now is the
requirement for versioned symbols.

These are required to ensure symbol names will never conflict, even if
Heimdal is linked into PAM libraries for example.

Previously somebody supplied a patch for 0.7.2, but it involved
changing libtool, and I had problems getting it to apply cleanly to
0.8.1.

Is there any chance of getting versioned symbols incorporated into the
Heimdal code?

I have attached to message posted to debian-devel that may be helpful.

Thanks.




Brian May <bam@snoopy.debian.net> writes:
>>>>>> "Russ" == Russ Allbery <rra@debian.org> writes:

>     Russ> Out of curiosity, have you talked to Love about this issue
>     Russ> already?  Given that MIT Kerberos supports symbol versions
>     Russ> upstream, I'm a little surprised that Heimdal doesn't as
>     Russ> well, and I'd think that Love would at least be happy to
>     Russ> take a patch even if he doesn't have time to write it
>     Russ> himself.

> Anyone here willing to write such a patch if upstream would accept it?

> The current patch may not be acceptable, it modifies libtool.

I have some code that I use for other projects that supports doing symbol
versioning on Linux without modifying libtool (it just passes the
appropriate flags through libtool with -Wl).  I don't have a lot of time
to work on this, but I'm happy to provide those details to start people
off.

I do this in configure.ac:

dnl If and only if we're on Linux, use a mapfile to do symbol versioning.
dnl We'd like to do this on all platforms, but the syntax is different
dnl everywhere and I don't feel like dealing with the differences.
case "$host" in
*-linux*)
    VERSION_LDFLAGS="-Wl,--version-script=mapfile"
    ;;
*)
    VERSION_LDFLAGS=""
    ;;
esac
AC_SUBST([VERSION_LDFLAGS])

and then put a mapfile that contains the symbol versioning information in
each directory with a shared library.  Then, in the Makefile, just include
$(VERSION_LDFLAGS) in the arguments passed to libtool for the link.
(Heimdal uses Automake, so this means adding them to the appropriate
_LDFLAGS variable for each library.

If I remember the Heimdal build system properly, it builds only one shared
library in each directory, so this should work.  If multiple shared
libraries are built in a particular directory, you have to do something
more complicated.

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>


-- 
To UNSUBSCRIBE, email to debian-devel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org





-- 
Brian May <bam@snoopy.apana.org.au>