+2010-04-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ 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 <Ralf.Wildenhues@gmx.de>
Use linker_flags not compiler_flags with $LD.
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
-
-@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
+@end deftp
-@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}
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
/* 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.
#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;
/* 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.
#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;