Re: Problem with ltdl.h

2000-11-30 Thread Kevin Atkinson

On Wed, 29 Nov 2000, Gary V. Vaughan wrote:

 On Wed, Nov 29, 2000 at 01:01:23AM -0200, Alexandre Oliva wrote:
  On Nov 28, 2000, "Gary V. Vaughan" [EMAIL PROTECTED] wrote:
  
   How about we simply change the name of the struct to lt_handlerecord
   or something?
  
  I prefer `something' :-)
  
  How about `typedef struct lt_dlhandle_struct lt_dlhandle'?
 
 Done!

Thanks.  It works find now.
 

-- 
Kevin Atkinson
kevina at users sourceforge net
http://metalab.unc.edu/kevina/


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



RE: Problem with ltdl.h

2000-11-28 Thread Bernard Dautrevaux

 -Original Message-
 From: Kevin Atkinson [mailto:[EMAIL PROTECTED]]
 Sent: Tuesday, November 28, 2000 9:01 AM
 To: [EMAIL PROTECTED]
 Subject: Re: Problem with ltdl.h
 
 
 On Tue, 28 Nov 2000, Kevin Atkinson wrote:
 
  
  I just updated to the latest CVS version of libtool and I 
 noticed two
  problems.
  
  1) Even though I defined LT_NON_POSIX_NAMESPACE I still 
 can't get lt_ptr_t
  to work.  After looking at the header file I discovered the 
 really is
  LT_FUBAR_NAMESPACE.  Either the docs or the header files need to be
  changed
  
  2) I keep on getting...
  /usr/local/include/ltdl.h:143: conflicting types for 
 `typedef struct 
  lt_dlhandle *lt_dlhandle'
  /usr/local/include/ltdl.h:143: previous declaration as `struct 
  lt_dlhandle'
  
  I tried the affending line on egcs 1.1 gcc 2.95 and the gcc 
 included in
  RedHat 7.0 and all of them give the same error.
 
 I should add that this works with C code but not in C++ code.
 

Ooooh... Now I understand better: this diagnostic is due to the fact that in
C++
struct lt_dlhandle
automatically define a TYPENAME i.e. makes an implicit
typedef struct lt_dlhandle lt_dlhandle;

Then the explicit
typedef struct lt_dlhandle* lt_dlhandle;

defining the TYPENAME lt_dlhandle to be a pointer-to struct lt_dlhandle
creates a conflict.

I must say that although this is perfect C code, it's nevertheless highly
questionable... It's kinda

#define ADD(a, b)   ((a) - (b))
   ^
   |
This is not an error and was intentional to show some perfectly legal code
that I would never accept if a programmer do that in my team ;-0

To be coherent, either the explicit typedef should read 
typedef struct lt_dlhandle* lt_dlhandle_ptr;
or
typedef struct lt_dlhandle* lt_dlhandle_handle;
or the struct name is not good and everything should read:
typedef struct lt_dl* lt_dlhandle;
but clearly here we have a naming problem :-)

I don't know from where this problem comes; I'm using a quite recent
CVS-libtool (from beginning of october I think) and do not have this
problem.

HTH

Bernard


Bernard Dautrevaux
Microprocess Ingenierie
97 bis, rue de Colombes
92400 COURBEVOIE
FRANCE
Tel:+33 (0) 1 47 68 80 80
Fax:+33 (0) 1 47 88 97 85
e-mail: [EMAIL PROTECTED]
[EMAIL PROTECTED]
 

___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Alexandre Oliva

On Nov 28, 2000, Bernard Dautrevaux [EMAIL PROTECTED] wrote:

 in C++
   struct lt_dlhandle
 automatically define a TYPENAME i.e. makes an implicit
   typedef struct lt_dlhandle lt_dlhandle;

However, IIRC, it is valid to have the implicit name overridden by
another definition of the name, which is what the `typedef' does.

 I don't know from where this problem comes; I'm using a quite recent
 CVS-libtool (from beginning of october I think) and do not have this
 problem.

Maybe this is only a problem in system headers?  (GCC makes
distinction between headers in standard search PATHs and those
introduced by -I switches)

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicampoliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist*Please* write to mailing lists, not to me

___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Kevin Atkinson

On 28 Nov 2000, Alexandre Oliva wrote:

 On Nov 28, 2000, Bernard Dautrevaux [EMAIL PROTECTED] wrote:
 
  in C++
  struct lt_dlhandle
  automatically define a TYPENAME i.e. makes an implicit
  typedef struct lt_dlhandle lt_dlhandle;
 
 However, IIRC, it is valid to have the implicit name overridden by
 another definition of the name, which is what the `typedef' does.

So are you saying that you are not going to fix it.  It does NOT appear
to be valid C++ code, thus when the header file is used in C++ programs it
prevents them from being compiled.

--- 
Kevin Atkinson
kevina at users sourceforge net
http://metalab.unc.edu/kevina/


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Alexandre Oliva

On Nov 28, 2000, Kevin Atkinson [EMAIL PROTECTED] wrote:

 On 28 Nov 2000, Alexandre Oliva wrote:
 On Nov 28, 2000, Bernard Dautrevaux [EMAIL PROTECTED] wrote:
 
  in C++
 struct lt_dlhandle
  automatically define a TYPENAME i.e. makes an implicit
 typedef struct lt_dlhandle lt_dlhandle;
 
 However, IIRC, it is valid to have the implicit name overridden by
 another definition of the name, which is what the `typedef' does.

 So are you saying that you are not going to fix it.

Not really.  I'm just asking for better arguments to make me change my
mind about it :-)

 It does NOT appear
 to be valid C++ code

I've just managed to compile:

typedef struct foo foo;

with g++, version 2.95.2.  So it *is* valid C++.  I don't understand
why G++ is complaining about it.

If some widely used C++ compiler fails to compile it, for example,
when ltdl.h is in its standard header-file search path, then we may
have a good reason to change it.  But first I want to understand the
problem, so that it can at least be documented.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicampoliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist*Please* write to mailing lists, not to me

___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Kevin Atkinson

On 28 Nov 2000, Alexandre Oliva wrote:

 On Nov 28, 2000, Kevin Atkinson [EMAIL PROTECTED] wrote:

  It does NOT appear
  to be valid C++ code
 
 I've just managed to compile:
 
 typedef struct foo foo;

Yes that will compile but

  typedef struct foo * foo

Won't, which is what the line in question looks like.

--- 
Kevin Atkinson
kevina at users sourceforge net
http://metalab.unc.edu/kevina/


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Gary V. Vaughan

On Tue, Nov 28, 2000 at 08:53:00PM -0200, Alexandre Oliva wrote:
 On Nov 28, 2000, Kevin Atkinson [EMAIL PROTECTED] wrote:
 
  On 28 Nov 2000, Alexandre Oliva wrote:
  On Nov 28, 2000, Bernard Dautrevaux [EMAIL PROTECTED] wrote:
  
   in C++
struct lt_dlhandle
   automatically define a TYPENAME i.e. makes an implicit
typedef struct lt_dlhandle lt_dlhandle;
  
  However, IIRC, it is valid to have the implicit name overridden by
  another definition of the name, which is what the `typedef' does.
 
  So are you saying that you are not going to fix it.
 
 Not really.  I'm just asking for better arguments to make me change my
 mind about it :-)
 
  It does NOT appear
  to be valid C++ code
 
 I've just managed to compile:
 
 typedef struct foo foo;
 
 with g++, version 2.95.2.  So it *is* valid C++.  I don't understand
 why G++ is complaining about it.
 
 If some widely used C++ compiler fails to compile it, for example,
 when ltdl.h is in its standard header-file search path, then we may
 have a good reason to change it.  But first I want to understand the
 problem, so that it can at least be documented.

I introduced this problem when getting rid of the `_t' suffixes, where
the line used to say:

   typedef struct lt_dlhandle *lt_dlhandle_t;
   
which is fine because the explicit typedef has a different name to the
implicit C++ typedef.  Now that the _t has gone, a C++ compiler has
two conflicting definitions for lt_dlhandle:

   typedef struct lt_dlhandle lt_dlhandle_t;
   typedef struct lt_dlhandle *lt_dlhandle_t;
   
The first implicit one created by the compiler and the second from the
code.

I must say that I don't care much for `typedef foo *foo', and would be
happy to remove the inderection and fix all of the exported functions.
I fear this will break the API too radically -- e.g.:

lt_dlhandle *lt_dlopen (...);

Since the struct is an incomplete type anyway, and used like this only
to remove the typecasting inside libltdl that would be necessary if we
used:

   typedef lt_ptr *lt_dlhandle_t;

How about we simply change the name of the struct to lt_handlerecord
or something?

Cheers,
Gary.
-- 
  ___  _   ___   __  _ mailto: [EMAIL PROTECTED]
 / __|__ _ _ ___ _| | / / | / /_ _ _  _ __ _| |_  __ _ ___   [EMAIL PROTECTED] 
| (_ / _` | '_|// / |/ /| |/ / _` | || / _` | ' \/ _` | _ \
 \___\__,_|_|\_, /|___(_)___/\__,_|\_,_\__, |_||_\__,_|//_/
home page:  /___/  /___/  gpg public key:
http://www.oranda.demon.co.uk   http://www.oranda.demon.co.uk/key.asc

___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-28 Thread Alexandre Oliva

On Nov 28, 2000, "Gary V. Vaughan" [EMAIL PROTECTED] wrote:

 How about we simply change the name of the struct to lt_handlerecord
 or something?

I prefer `something' :-)

How about `typedef struct lt_dlhandle_struct lt_dlhandle'?

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicampoliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist*Please* write to mailing lists, not to me

___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: Problem with ltdl.h

2000-11-27 Thread Kevin Atkinson

On Tue, 28 Nov 2000, Kevin Atkinson wrote:

 
 I just updated to the latest CVS version of libtool and I noticed two
 problems.
 
 1) Even though I defined LT_NON_POSIX_NAMESPACE I still can't get lt_ptr_t
 to work.  After looking at the header file I discovered the really is
 LT_FUBAR_NAMESPACE.  Either the docs or the header files need to be
 changed
 
 2) I keep on getting...
 /usr/local/include/ltdl.h:143: conflicting types for `typedef struct 
 lt_dlhandle *lt_dlhandle'
 /usr/local/include/ltdl.h:143: previous declaration as `struct 
 lt_dlhandle'
 
 I tried the affending line on egcs 1.1 gcc 2.95 and the gcc included in
 RedHat 7.0 and all of them give the same error.

I should add that this works with C code but not in C++ code.

--- 
Kevin Atkinson
kevina at users sourceforge net
http://metalab.unc.edu/kevina/


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool