mirror of
git://git.savannah.gnu.org/libtool.git
synced 2025-01-30 14:30:15 +08:00
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. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
This commit is contained in:
parent
519bf919cc
commit
3d0fc4870e
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
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>
|
2010-04-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
Use linker_flags not compiler_flags with $LD.
|
Use linker_flags not compiler_flags with $LD.
|
||||||
|
@ -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
|
using the @option{-dlopen} or @option{-dlpreopen} flags when you link your
|
||||||
program (@pxref{Link mode}).
|
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
|
The @var{name} attribute is a null-terminated character string of the
|
||||||
symbol name, such as @code{"fprintf"}. The @var{address} attribute is a
|
symbol name, such as @code{"fprintf"}. The @var{address} attribute is a
|
||||||
generic pointer to the appropriate object, such as @code{&fprintf}.
|
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}[];} @}
|
@deftypevar {const lt_dlsymlist } lt_preloaded_symbols[]
|
||||||
The @var{originator} attribute is a null-terminated character string,
|
An array of @var{lt_dlsymlist} structures, representing all the preloaded
|
||||||
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
|
|
||||||
symbols linked into the program proper. For each module
|
symbols linked into the program proper. For each module
|
||||||
@option{-dlpreopen}ed by the Libtool linked program
|
@option{-dlpreopen}ed by the Libtool linked program
|
||||||
there is an element with the @var{name} of the module and an @var{address}
|
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.
|
For the executable itself the special name @samp{@@PROGRAM@@} is used.
|
||||||
The last element of all has a @var{name} and @var{address} of
|
The last element of all has a @var{name} and @var{address} of
|
||||||
@code{0}.
|
@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
|
@end deftypevar
|
||||||
|
|
||||||
Some compilers may allow identifiers that are not valid in ANSI C, such
|
Some compilers may allow identifiers that are not valid in ANSI C, such
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* dlmain.c -- hello test program that uses simulated dynamic linking
|
/* 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.
|
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
|
#define lt_preloaded_symbols lt__PROGRAM__LTX_preloaded_symbols
|
||||||
|
|
||||||
struct lt_symlist
|
typedef struct
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
lt_ptr_t address;
|
lt_ptr_t address;
|
||||||
};
|
} lt_dlsymlist;
|
||||||
|
|
||||||
extern const struct lt_symlist lt_preloaded_symbols[];
|
extern const lt_dlsymlist lt_preloaded_symbols[];
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
const struct lt_symlist *s;
|
const lt_dlsymlist *s;
|
||||||
int (*pfoo)() = 0;
|
int (*pfoo)() = 0;
|
||||||
int (*phello)() = 0;
|
int (*phello)() = 0;
|
||||||
int *pnothing = 0;
|
int *pnothing = 0;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* dlmain.c -- hello test program that uses simulated dynamic linking
|
/* 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.
|
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
|
#define lt_preloaded_symbols lt__PROGRAM__LTX_preloaded_symbols
|
||||||
|
|
||||||
struct lt_symlist
|
typedef struct
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
lt_ptr_t address;
|
lt_ptr_t address;
|
||||||
};
|
} lt_dlsymlist;
|
||||||
|
|
||||||
extern const struct lt_symlist lt_preloaded_symbols[];
|
extern const lt_dlsymlist lt_preloaded_symbols[];
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
const struct lt_symlist *s;
|
const lt_dlsymlist *s;
|
||||||
int (*pfoo)() = 0;
|
int (*pfoo)() = 0;
|
||||||
int (*phello)() = 0;
|
int (*phello)() = 0;
|
||||||
int *pnothing = 0;
|
int *pnothing = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user