diff --git a/ChangeLog b/ChangeLog index 4e274ea7..84c0bc3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-04-09 Ralf Wildenhues + + Fix incompatible struct declarations. + * doc/libtool.texi (Dlpreopening): Remove broken documentation + of lt_dlsymbol and lt_dlsymlist. Document typedef lt_dlsymlist + and symbol lt_preloaded_symbols according to the implementation. + * tests/demo/dlmain.c (lt_symlist): Make struct anonymous ... + (lt_dlsymlist): ... and typedef to this name. + (lt_preloaded_symbols, main): Adjust. + * tests/pdemo/longer_file_name_dlmain.c: Likewise. + 2010-04-04 Ralf Wildenhues Use linker_flags not compiler_flags with $LD. diff --git a/doc/libtool.texi b/doc/libtool.texi index 323bf4e5..f73f5a7d 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -3388,25 +3388,15 @@ you must declare the objects you want your application to dlopen by using the @option{-dlopen} or @option{-dlpreopen} flags when you link your program (@pxref{Link mode}). -@deftypefn {Structure} {struct} lt_dlsymbol @{ @w{const char *@var{name};} @w{void *@var{address};} @} +@deftp {Data Type} {lt_dlsymlist} typedef struct @ + @{ @w{const char *@var{name};} @w{void *@var{address};} @} lt_dlsymlist The @var{name} attribute is a null-terminated character string of the symbol name, such as @code{"fprintf"}. The @var{address} attribute is a generic pointer to the appropriate object, such as @code{&fprintf}. -@end deftypefn +@end deftp -@deftypefn {Structure} {struct} lt_dlsymlist @{ @w{const char *@var{originator};} @w{const lt_dlsymbol @var{symbols}[];} @} -The @var{originator} attribute is a null-terminated character string, -naming the compilation unit that @var{symbols} were preloaded on -behalf of. This is usually the basename of a library, -@file{libltdl.la} has a corresponding @var{originator} value of -@samp{libltdl}; if the @var{symbols} are for the benefit of the -application proper, then @var{originator} is @samp{@@PROGRAM@@}, -though Libtool takes care of that detail if you use -@samp{LTDL_SET_PRELOADED_SYMBOLS}. -@end deftypefn - -@deftypevar {const lt_dlsymlist *} lt_preloaded_symbols -An array of @var{lt_symbol} structures, representing all the preloaded +@deftypevar {const lt_dlsymlist } lt_preloaded_symbols[] +An array of @var{lt_dlsymlist} structures, representing all the preloaded symbols linked into the program proper. For each module @option{-dlpreopen}ed by the Libtool linked program there is an element with the @var{name} of the module and an @var{address} @@ -3414,6 +3404,10 @@ of @code{0}, followed by all symbols exported from this file. For the executable itself the special name @samp{@@PROGRAM@@} is used. The last element of all has a @var{name} and @var{address} of @code{0}. + +To facilitate inclusion of symbol lists into libraries, +@code{lt_preloaded_symbols} is @samp{#define}d to a suitably unique name +in @file{ltdl.h}. @end deftypevar Some compilers may allow identifiers that are not valid in ANSI C, such diff --git a/tests/demo/dlmain.c b/tests/demo/dlmain.c index 0d42d881..c970998d 100644 --- a/tests/demo/dlmain.c +++ b/tests/demo/dlmain.c @@ -1,6 +1,7 @@ /* dlmain.c -- hello test program that uses simulated dynamic linking - Copyright (C) 1996-1999, 2004, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1996-1999, 2004, 2006, 2007, 2010 Free Software + Foundation, Inc. This file is part of GNU Libtool. @@ -27,18 +28,18 @@ or obtained by writing to the Free Software Foundation, Inc., #define lt_preloaded_symbols lt__PROGRAM__LTX_preloaded_symbols -struct lt_symlist +typedef struct { const char *name; lt_ptr_t address; -}; +} lt_dlsymlist; -extern const struct lt_symlist lt_preloaded_symbols[]; +extern const lt_dlsymlist lt_preloaded_symbols[]; int main () { - const struct lt_symlist *s; + const lt_dlsymlist *s; int (*pfoo)() = 0; int (*phello)() = 0; int *pnothing = 0; diff --git a/tests/pdemo/longer_file_name_dlmain.c b/tests/pdemo/longer_file_name_dlmain.c index fdb55266..ef1e4c5b 100644 --- a/tests/pdemo/longer_file_name_dlmain.c +++ b/tests/pdemo/longer_file_name_dlmain.c @@ -1,6 +1,7 @@ /* dlmain.c -- hello test program that uses simulated dynamic linking - Copyright (C) 1996-1999, 2004, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1996-1999, 2004, 2006, 2007, 2010 Free Software + Foundation, Inc. This file is part of GNU Libtool. @@ -27,18 +28,18 @@ or obtained by writing to the Free Software Foundation, Inc., #define lt_preloaded_symbols lt__PROGRAM__LTX_preloaded_symbols -struct lt_symlist +typedef struct { const char *name; lt_ptr_t address; -}; +} lt_dlsymlist; -extern const struct lt_symlist lt_preloaded_symbols[]; +extern const lt_dlsymlist lt_preloaded_symbols[]; int main (int argc, char **argv) { - const struct lt_symlist *s; + const lt_dlsymlist *s; int (*pfoo)() = 0; int (*phello)() = 0; int *pnothing = 0;