This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

The -imacros change



Hi all,

Zack's change:
1999-06-18  Zack Weinberg  <zack@rabi.columbia.edu>

        * include/libintl.h: Declare _libc_intl_domainname here.
        Define _ and N_ here.
        * include/libc-symbols.h: Don't include <libintl.h>.  Don't
        define _ and N_.  Don't declare _libc_intl_domainname.
        * Makeconfig (CPPFLAGS): Use -imacros to read libc-symbols.h.
        ...

breaks the compilation of some files since now <features.h> and
<sys/cdefs.h> is not anymore included in each and every file.  On
alpha the compilation of sysdeps/generic/divmod_1.c breaks with this
message:

In file included from ../sysdeps/generic/divmod_1.c:30:
longlong.h:169: parse error before `__P'
../sysdeps/generic/divmod_1.c: In function `__mpn_divmod_1':
../sysdeps/generic/divmod_1.c:91: warning: implicit declaration of function `__udiv_qrnnd'

The problem is a missing #define __P ... The only question is how to
define it.  I suggested to add a 
#include <sys/cdefs.h>
to stdlib/longlong.h

Another problem I encountered on ix86 with posix/getopt1.c:
In file included from getopt1.c:25:
getopt.h:136: warning: function declaration isn't a prototype
[...getopt_init compile command]
In file included from ../include/getopt.h:1,
                 from getopt_init.c:25:
../posix/getopt.h:136: warning: function declaration isn't a prototype

Here's the relevant context:
#if defined __STDC__ && __STDC__
# ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with
   differences in the consts, in stdlib.h.  To avoid compilation
   errors, only prototype getopt for the GNU C library.  */
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
# else /* not __GNU_LIBRARY__ */
extern int getopt (); <-------- this is line 136
# endif /* __GNU_LIBRARY__ */

The problem here is that __GNU_LIBRARY__ isn't defined anymore since
<features.h> is included indirectly after the inclusion of "getopt.h".
Should we just move the inclusion further down for getopt_init.c and
getop1.c?

Fixing these small problems isn't a problem per se - but I fear that
we might miss some places that need fixes due to these changes.  Is
there a way to check that everything was adjusted?  Zack, could you
please explain what the advantage of this change is?

Cheers
Andreas
-- 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]