Sat, Feb 10, 2007 at 06:13:00AM -0800, Jerry D. Hedden wrote:
Nicholas Clark <nick (AT) ccl4 (DOT) orgwrote:
That's nuts. reentr.inc doesn't even mention strtoull and strlcpy
I'm wondering what on earth the preprocessor does. I don't know if
this is
the best way to try to work it out, but could you mail the
pre-processed
source for something (eg run.c) for the real 30187 (or one that
breaks)
and the same source with the reentr.inc from 30179 (the one that
doesn't)
If Cygwin is using the Makefile from Makefile.sh then `make run.i`
will do it.
Attached.
These appear to be built from unmodified 30179 and 30187 trees (rather than
a 30187 tree retrofitted with the reentr.inc from 30179), as one doesn't
have the do_ref changes removed with change 31081 - eg diff hunk:
@@ -6741,7 +6345,6 @@
I32 Perl_call_pv(register PerlInterpreter* my_perl __attribute__((unused)), const char* sub_name, I32 flags);
I32 Perl_call_sv(register PerlInterpreter* my_perl __attribute__((unused)), SV* sv, I32 flags);
void Perl_despatch_signals(register PerlInterpreter* my_perl __attribute__((unused)));
- P * Perl_doref(register PerlInterpreter* my_perl __attribute__((unused)), P *o, I32 type, char set_op_ref);
SV* Perl_eval_pv(register PerlInterpreter* my_perl __attribute__((unused)), const char* p, I32 croak_on_error);
I32 Perl_eval_sv(register PerlInterpreter* my_perl __attribute__((unused)), SV* sv, I32 flags);
SV* Perl_get_sv(register PerlInterpreter* my_perl __attribute__((unused)), const char* name, I32 create);
However, there is something else strange going on as the first difference
between the two is
run.i.30179Sat Feb 10 14:15:06 2007
run.i.30189Sat Feb 10 14:15:12 2007
@@ -455,13 +455,6 @@
int __attribute__((__cdecl__)) isxdigit(int);
int __attribute__((__cdecl__)) tolower(int);
int __attribute__((__cdecl__)) toupper(int);
-
-
-int __attribute__((__cdecl__)) isblank(int);
-int __attribute__((__cdecl__)) isascii(int);
-int __attribute__((__cdecl__)) toascii(int);
-int __attribute__((__cdecl__)) _tolower(int);
-int __attribute__((__cdecl__)) _toupper(int);
# 44 "/usr/include/ctype.h" 3 4
extern const __attribute__((dllimport)) char _ctype_[];
# 490 "perl.h" 2
@@ -1105,8 +1098,7 @@
char *mkdtemp (char *);
# 18 "/usr/include/stdlib.h" 2 3 4
-# 1 "/usr/include/alloca.h" 1 3 4
-# 20 "/usr/include/stdlib.h" 2 3 4
+
which is way way way before the first inclusion of op.h (line 3752 or so in
the preprocessed output) let alone anything to do with reentr.h or reentr.inc
So something has to be setting a "strict ANSI C" mode, when it didn't before.
The first section that differs is from ctype.h. The 30179 version looks like
this:
# 10 "/usr/include/ctype.h" 3 4
int __attribute__((__cdecl__)) isalnum(int);
int __attribute__((__cdecl__)) isalpha(int);
int __attribute__((__cdecl__)) iscntrl(int);
int __attribute__((__cdecl__)) isdigit(int);
int __attribute__((__cdecl__)) isgraph(int);
int __attribute__((__cdecl__)) islower(int);
int __attribute__((__cdecl__)) isprint(int);
int __attribute__((__cdecl__)) ispunct(int);
int __attribute__((__cdecl__)) isspace(int);
int __attribute__((__cdecl__)) isupper(int);
int __attribute__((__cdecl__)) isxdigit(int);
int __attribute__((__cdecl__)) tolower(int);
int __attribute__((__cdecl__)) toupper(int);
int __attribute__((__cdecl__)) isblank(int);
Those 3 blanks lines are lines 23-25 in /usr/include/ctype.h
What's in lines 23-25 of /usr/include/ctype.h? I assume an #ifdef?
If so, what's changed to (not) set the symbol that brings in isblank(), and
later on drand48() etc?
Are the config.sh files identical for the failing and successful builds?
Nicholas Clark