libtool-patches
[Top][All Lists]
Advanced

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

Re: [PATCH 2/4] Fix incompatible struct declarations.


From: Bob Friesenhahn
Subject: Re: [PATCH 2/4] Fix incompatible struct declarations.
Date: Mon, 5 Apr 2010 16:21:47 -0500 (CDT)
User-agent: Alpine 2.01 (GSO 1266 2009-07-14)

On Sun, 4 Apr 2010, Ralf Wildenhues wrote:

Wow, that's a plain incompatibility with (C) in any C dialect!

Thus far the analysis.  Question is, how do we fix it.  My preference
would be to fix the manual and the test cases, since the actual code has
been fairly stable.

That is a reasonable approach.

Then it only remains to fix the const-ness in the declaration.  In a
followup.

OK to apply?

Yes, please do.

Bob


Thanks,
Ralf

ChangeLog                             |    9 +++++++++
doc/libtool.texi                      |   26 ++++++++++----------------
tests/demo/dlmain.c                   |   11 ++++++-----
tests/pdemo/longer_file_name_dlmain.c |   11 ++++++-----
4 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b324240..c082cee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2010-04-04  Ralf Wildenhues  <address@hidden>

+       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.
+
        Support GCC LTO on GNU/Linux.
        * NEWS: Update.
        * libltdl/config/ltmain.m4sh (func_mode_link): Allow through
diff --git a/doc/libtool.texi b/doc/libtool.texi
index 323bf4e..f73f5a7 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}).

address@hidden {Structure} {struct} lt_dlsymbol @{ @w{const char 
address@hidden;} @w{void address@hidden;} @}
address@hidden {Data Type} {lt_dlsymlist} typedef struct @
+  @{ @w{const char address@hidden;} @w{void address@hidden;} @} 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}.
address@hidden deftypefn
-
address@hidden {Structure} {struct} lt_dlsymlist @{ @w{const char 
address@hidden;} @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,
address@hidden has a corresponding @var{originator} value of
address@hidden; 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
address@hidden
address@hidden deftypefn
address@hidden deftp

address@hidden {const lt_dlsymlist *} lt_preloaded_symbols
-An array of @var{lt_symbol} structures, representing all the preloaded
address@hidden {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,
address@hidden 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 0d42d88..c970998 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 fdb5526..ef1e4c5 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;
--
1.7.0.rc1.161.g90487




--
Bob Friesenhahn
address@hidden, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]