Blackfin and version scripts
Ralf Wildenhues
Ralf.Wildenhues at gmx.de
Sat Jun 26 21:36:08 CEST 2010
* Werner Koch wrote on Wed, Jun 23, 2010 at 09:46:01AM CEST:
> On Wed, 23 Jun 2010 07:29, rra at stanford.edu said:
>
> > I can take a pass at starting. All that I need for my packages is to
> > support the basic version syntax:
> >
> > <version> {
> > global:
> > <symbol>;
>
> That would be sufficient for me too as long as a <version_2> with only
> global symbols is supported as well.
>
> Having a second file with a simple list of symbols instead of a version
> script parser is another option. Actually this is required because to
> support W32 we need a .def file
>
> EXPORTS
> gcry_check_version @1
> gcry_control @2
>
> which allows to assign id numbers to symbols. In theory we could add
> this via comment lines to a versions script but that would make a parser
> even more complicated. In some projects I create the .def file from a
> .def.in file to handle differences between W32 and W32CE. In any case
> the .def file is easy to parse and could be used as input to
> --export-symbols.
OK, so the problem space as I see it:
- complex GNU/Solaris ld version scripts, but most users need only a
fairly simple part of that,
- w32 .def files,
- symbols lists or regexes as used by libtool,
- the wild card specification to use: ld uses globbing,
-export-symbols-regex uses ERE.
- mangling relevant also for C: prepending underscore or not, appending
calling convention suffixes @... on w32,
- mangling for non-C languages: C++, Java,
- libtool should be able to add or remove a few symbols to the list,
- for w32, we may need to tag DATA exports,
"Parsing" is hard in the shell. It's probably easiest to define a
libtool-specific language ("file format") that is easily amenable to sed
or old awk, from which we can generate a ld version script, a def file,
or a list of mangled symbols. That language could still allow the user
to specify arbitrarily complex version script constructions, as long as
they are given in a way our parser can easily ignore. That's the hard
part.
A complicating factor in the current libtool handling for exports is
line length limitations: we might need to cope with partial links or
reloadable objects, or, preferably, employ one of the workarounds like
response files or linker scripts. This part in ltmain I know how to
deal with, so if you need help there speak up.
Cheers,
Ralf
More information about the Gcrypt-devel
mailing list