Re: Fwd: perl@10517 (Fail)

2001-06-13 Thread Nick Ing-Simmons

Ken Williams [EMAIL PROTECTED] writes:
[EMAIL PROTECTED] (Jarkko Hietaniemi) wrote:
Ken wrote:
 Looking at the GNUmakefile produced during Configure, I see this:
 
 
 # The following are used to build and install shared libraries for
 # dynamic loading.
 LDDLFLAGS =  -bundle -undefined suppress -L/usr/local/lib
 SHRPLDFLAGS =  -L/usr/local/lib -dynamiclib 
 -compatibility_version 1-current_version 5.0
  -image_base 0x4be0 
 -install_name $(shrpdir)/$@
 CCDLFLAGS =  
 DLSUFFIX = .bundle
 PLDLFLAGS =  
 LIBPERL = libperl.dylib
 LLIBPERL= $(LIBPERL)
 SHRPENV = env LD_RUN_PATH=/System/Library/Perl/darwin/CORE

Try commenting that line out with # and then retrying the build.
Since PerlIO seems to be part of the problem, do the build like this

  env LD_RUN_PATH=$PWD PERLIO=stdio make all

No dice, I get the same bus error as before.

Jarkko's suggestion does not help directly. PERLIO=stdio is still
using PerlIO infrastructure, but using stdio as the implementation.
The before-interpreter-exists issue is with the infrastructure
(I am using AVs and HVs in the infrastructure and the is no intepreter
to anchor them in :-( - I need to re-invent a hash table and a list-of-things
structure in perlio.c and use those.)



  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum
-- 
Nick Ing-Simmons
who is looking for a new job see http://www.ni-s.u-net.com/




Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Jarkko Hietaniemi

 Please let me know if I should send reports to a different address.  I'm
 sending to P5P ([EMAIL PROTECTED]) and CC-ing Jarkko and the
 OSX-perl list.

Sounds okay.

 `sh  cflags libperl.dylib perly.o`  perly.c
   CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -Wall 
-fno-strict-aliasing -I/usr/local/include -O3 
 perly.c: In function `Perl_yyparse':
 perly.c:1539: warning: suggest parentheses around assignment used as truth value

Known, suspceted harmless, maybe bogus (I tried adding parentheses
but couldn't make it (gcc) happy...)

 util.c: In function `Perl_cast_ulong':
 util.c:2936: warning: decimal constant is so large that it is unsigned
 util.c:2936: warning: decimal constant is so large that it is unsigned
 util.c: In function `Perl_cast_i32':
 util.c:2954: warning: decimal constant is so large that it is unsigned
 util.c:2954: warning: decimal constant is so large that it is unsigned

Hmm, I wonder why no other gccs seem to care?  What's the version of gcc?

   CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -Wall 
-fno-strict-aliasing -I/usr/local/include -O3 
 pp_sys.c: In function `Perl_pp_system':
 pp_sys.c:3961: warning: variable `sp' might be clobbered by `longjmp' or `vfork'
 pp_sys.c:3961: warning: variable `mark' might be clobbered by `longjmp' or `vfork'

Ditto, why other gccs don't pick this up?  I can mark those variables
as volatile to make gcc happier, but it would be nice to know why
the Mac OS X gcc feels more strongly than others?

 [...snip...]
 
 You may see some irrelevant test failures if you have been unable
 to build lib/Config.pm.
 cd t  (rm -f perl; /bin/ln -s ../miniperl perl) \
  DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./perl TEST base/*.t comp/*.t 
cmd/*.t run/*.t io/*.t op/*.t pragma/*.t /dev/tty
 make[1]: *** [minitest] Bus error
 make: [extra.pods] Error 1 (ignored)
 DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./miniperl configpm configpm.tmp
 make: *** [lib/Config.pm] Bus error

Ouch.  This definitely isn't some irrelevant (test) failure.
Could you:

rm -f config.sh
sh Configure -des -Dusedevel -Doptimize=-g
make miniperl
gdb ./miniperl
(gdb) run
(gdb) where

-- 
$jhi++; # http://www.iki.fi/jhi/
# There is this special biologist word we use for 'stable'.
# It is 'dead'. -- Jack Cohen



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Ken Williams

[EMAIL PROTECTED] (Nicholas Clark) wrote:
On Mon, Jun 11, 2001 at 03:41:57PM -0500, Jarkko Hietaniemi wrote:
  util.c: In function `Perl_cast_ulong':
  util.c:2936: warning: decimal constant is so large that it is unsigned
  util.c:2936: warning: decimal constant is so large that it is unsigned
  util.c: In function `Perl_cast_i32':
  util.c:2954: warning: decimal constant is so large that it is unsigned
  util.c:2954: warning: decimal constant is so large that it is unsigned
 
 Hmm, I wonder why no other gccs seem to care?  What's the version of gcc?

It's I32_MIN and IV_MIN it's complaining about. This would be a bad thing.

Could you compile and run

#include EXTERN.h
#include perl.h
int main (void) {
  puts (I32_MIN='STRINGIFY(I32_MIN)');
  return 0;
}

in your perl build directory please. I see this on ARM Linux:

../testit
I32_MIN='(-2147483647-1)'

which looks like a sensible way to get -2147483648

I see this on OS X:

  [localhost:~/Downloads/perl] ken% ./testprogram
  I32_MIN='-2147483648'

  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Andy Dougherty

On Mon, 11 Jun 2001, Jarkko Hietaniemi wrote:

  cd t  (rm -f perl; /bin/ln -s ../miniperl perl) \
   DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./perl TEST base/*.t 
comp/*.t cmd/*.t run/*.t io/*.t op/*.t pragma/*.t /dev/tty
  make[1]: *** [minitest] Bus error
  make: [extra.pods] Error 1 (ignored)
  DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./miniperl configpm configpm.tmp
  make: *** [lib/Config.pm] Bus error
 
 Ouch.  This definitely isn't some irrelevant (test) failure.

Another possibility is to try running some of the tests individually.

make minitest

will make t/perl a symbolic link to miniperl.  Then you can do

cd t
./perl base/cond.t
./perl base/lex.t

etc. 

to try to get a fairly simple script that gives you the core dump.

-- 
Andy Dougherty  [EMAIL PROTECTED]
Dept. of Physics
Lafayette College, Easton PA 18042




Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Ken Williams

[EMAIL PROTECTED] (Nicholas Clark) wrote:
On Mon, Jun 11, 2001 at 05:41:25PM -0500, Ken Williams wrote:
 Okay, I get
 
   % cc -o testprogram testprogram.c 
   testprogram.c: In function `main':
   testprogram.c:4: warning: decimal constant is so large that it is unsigned
   % ./testprogram
   I32_MIN='-2147483648'
   I32_MIN=2.14748e+09
 
 so it looks like we're okay?

Erk No.
Darwin's gcc seems to be broken, in that it thinks that -2147483648
is a positive number.

Ack, you'd think I would have noticed that.  

I've got to go to be [work in the morning. :-(] but I think that finding
some way to force I32_MIN and IV_Min to be defined as -2147483647-1
should solve this bug, and may well make other things less unhappy.
[although that SEGV might also need to be solved first before the benefits
of IV_MIN being less than zero become apparent]

I did a little more poking around, which (because I don't exactly know
my way around) may or may not be useful.  First, to see where I32_MIN
was coming from, I did this (the same test done in 'handy.h'):

   #include EXTERN.h
   #include perl.h
   int main (void) {
   #if defined(UINT8_MAX)  defined(INT16_MAX)  defined(INT32_MAX)
 puts (Case 1: I32_MIN == INT32_MIN);
   #else
 puts (Case 2: I32_MIN == PERL_LONG_MIN);
   #endif
 return 0;
   }

   Output:
 Case 1: I32_MIN == INT32_MIN

INT32_MIN is set in /usr/include/stdint.h by:
   #define INT32_MIN-2147483648

So then I tried the following test programs:

  
   #include stdint.h
   int main (void) {
 double a = INT32_MIN;
 printf (INT32_MIN=%g\n, a);
 return 0;
   }

   Output:
 INT32_MIN=2.14748e+09
  
   #define INT32_MIN-2147483648
   int main (void) {
 double a = INT32_MIN;
 printf (INT32_MIN=%g\n, a);
 return 0;
   }
   
   Output:
 INT32_MIN=2.14748e+09
  
   #define INT32_MIN-2147483647-1
   int main (void) {
 double a = INT32_MIN;
 printf (INT32_MIN=%g\n, a);
 return 0;
   }
   
   Output:
 INT32_MIN=-2.14748e+09
  

In the cases where the output is positive, I get the compiler warning
about decimal constant is so large that it is unsigned.  In the final
case there are no warnings.

Hope that's helpful.

  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Ken Williams

Hi,

Please let me know if I should send reports to a different address.  I'm
sending to P5P ([EMAIL PROTECTED]) and CC-ing Jarkko and the
OSX-perl list.

See results below.

[EMAIL PROTECTED] (Chris Nandor) wrote:
Hi, everybody!

Jarkko humbly requests that people test the latest snapshot of perl 5.7 on
Mac OS X.

-- Chris

Date: Mon, 11 Jun 2001 11:20:24 -0500
From: Jarkko Hietaniemi [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: perl@10517
Mail-Followup-To: Jarkko Hietaniemi [EMAIL PROTECTED],
  [EMAIL PROTECTED]
X-Spam-Rating: onion.valueclick.com 1.6.2 0/1000/N

  http:[EMAIL PROTECTED]
  http:[EMAIL PROTECTED]
  ftp:[EMAIL PROTECTED]


I configured using sh Configure -de -Dusedevel. I had some warnings
and errors during 'make', and was not able to run any tests.  Here are
some relevant bits of the 'make' output:

==
`sh  cflags libperl.dylib perly.o`  perly.c
  CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -Wall 
-fno-strict-aliasing -I/usr/local/include -O3 
perly.c: In function `Perl_yyparse':
perly.c:1539: warning: suggest parentheses around assignment used as truth value

[...snip...]

`sh  cflags libperl.dylib util.o`  util.c
  CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -Wall 
-fno-strict-aliasing -I/usr/local/include -O3 
util.c: In function `Perl_cast_ulong':
util.c:2936: warning: decimal constant is so large that it is unsigned
util.c:2936: warning: decimal constant is so large that it is unsigned
util.c: In function `Perl_cast_i32':
util.c:2954: warning: decimal constant is so large that it is unsigned
util.c:2954: warning: decimal constant is so large that it is unsigned

[...snip...]

`sh  cflags libperl.dylib pp_sys.o`  pp_sys.c
  CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -Wall 
-fno-strict-aliasing -I/usr/local/include -O3 
pp_sys.c: In function `Perl_pp_system':
pp_sys.c:3961: warning: variable `sp' might be clobbered by `longjmp' or `vfork'
pp_sys.c:3961: warning: variable `mark' might be clobbered by `longjmp' or `vfork'

[...snip...]

You may see some irrelevant test failures if you have been unable
to build lib/Config.pm.
cd t  (rm -f perl; /bin/ln -s ../miniperl perl) \
 DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./perl TEST base/*.t comp/*.t 
cmd/*.t run/*.t io/*.t op/*.t pragma/*.t /dev/tty
make[1]: *** [minitest] Bus error
make: [extra.pods] Error 1 (ignored)
DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./miniperl configpm configpm.tmp
make: *** [lib/Config.pm] Bus error
==


When I try to run 'make test', I get this:

[localhost:~/Downloads/perl] ken% make test
sh writemain lib/auto/DynaLoader/DynaLoader.a   writemain.tmp
sh mv-if-diff writemain.tmp perlmain.c
File perlmain.c not changed.
DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl ./miniperl configpm configpm.tmp
make: *** [lib/Config.pm] Bus error
[localhost:~/Downloads/perl] ken% 

There is no file 'lib/Config.pm' in the build directory.

Hope this is helpful.


  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Jarkko Hietaniemi

 Looking at the GNUmakefile produced during Configure, I see this:
 
 
 # The following are used to build and install shared libraries for
 # dynamic loading.
 LDDLFLAGS =  -bundle -undefined suppress -L/usr/local/lib
 SHRPLDFLAGS =  -L/usr/local/lib -dynamiclib 
 -compatibility_version 1-current_version 5.0
  -image_base 0x4be0 
 -install_name $(shrpdir)/$@
 CCDLFLAGS =  
 DLSUFFIX = .bundle
 PLDLFLAGS =  
 LIBPERL = libperl.dylib
 LLIBPERL= $(LIBPERL)
 SHRPENV = env LD_RUN_PATH=/System/Library/Perl/darwin/CORE

Try commenting that line out with # and then retrying the build.
Since PerlIO seems to be part of the problem, do the build like this

env LD_RUN_PATH=$PWD PERLIO=stdio make all

 # The following is used to include the current directory in
 # the dynamic loader path you are building a shared libperl.
 LDLIBPTH = DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl
 
 
 Looks like that's where the /System stuff is getting into the mix.

-- 
$jhi++; # http://www.iki.fi/jhi/
# There is this special biologist word we use for 'stable'.
# It is 'dead'. -- Jack Cohen



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Ken Williams

[EMAIL PROTECTED] (Jarkko Hietaniemi) wrote:
 util.c: In function `Perl_cast_ulong':
 util.c:2936: warning: decimal constant is so large that it is unsigned
 util.c:2936: warning: decimal constant is so large that it is unsigned
 util.c: In function `Perl_cast_i32':
 util.c:2954: warning: decimal constant is so large that it is unsigned
 util.c:2954: warning: decimal constant is so large that it is unsigned

Hmm, I wonder why no other gccs seem to care?  What's the version of gcc?

It says:

  [localhost:~/Downloads/perl] ken% cc -v
  Reading specs from /usr/libexec/gcc/darwin/ppc/2.95.2/specs
  Apple Computer, Inc. version gcc-926, based on gcc version 2.95.2 19991024 (release)


Ouch.  This definitely isn't some irrelevant (test) failure.

That's what I figured. =)

Could you:

   rm -f config.sh
   sh Configure -des -Dusedevel -Doptimize=-g
   make miniperl
   gdb ./miniperl
   (gdb) run
   (gdb) where

I get the same results as Larry Shatzer - doubly defined symbols. 
Looking at the GNUmakefile produced during Configure, I see this:


# The following are used to build and install shared libraries for
# dynamic loading.
LDDLFLAGS =  -bundle -undefined suppress -L/usr/local/lib
SHRPLDFLAGS =  -L/usr/local/lib -dynamiclib 
-compatibility_version 1-current_version 5.0
 -image_base 0x4be0 
-install_name $(shrpdir)/$@
CCDLFLAGS =  
DLSUFFIX = .bundle
PLDLFLAGS =  
LIBPERL = libperl.dylib
LLIBPERL= $(LIBPERL)
SHRPENV = env LD_RUN_PATH=/System/Library/Perl/darwin/CORE

# The following is used to include the current directory in
# the dynamic loader path you are building a shared libperl.
LDLIBPTH = DYLD_LIBRARY_PATH=/Users/ken/Downloads/perl


Looks like that's where the /System stuff is getting into the mix.


  ------
  Ken Williams Last Bastion of Euclidity
  [EMAIL PROTECTED]The Math Forum



Re: Fwd: perl@10517 (Fail)

2001-06-11 Thread Nicholas Clark

On Mon, Jun 11, 2001 at 05:41:25PM -0500, Ken Williams wrote:
 [EMAIL PROTECTED] (Nicholas Clark) wrote:
 Please could you send the output of this revised test program:
 
 #include EXTERN.h
 #include perl.h
 int main (void) {
   double a = I32_MIN;
   char buffer[256];
   puts (I32_MIN='STRINGIFY(I32_MIN)');
   sprintf (buffer, I32_MIN=%g, a);
   puts (buffer);
   return 0;
 }

 I get
  ./testit 
 I32_MIN='(-2147483647-1)'
 I32_MIN=-2.14748e+09

   ^ Minus
 
 Okay, I get
 
   % cc -o testprogram testprogram.c 
   testprogram.c: In function `main':
   testprogram.c:4: warning: decimal constant is so large that it is unsigned
   % ./testprogram
   I32_MIN='-2147483648'
   I32_MIN=2.14748e+09
 
 so it looks like we're okay?

Erk No.
Darwin's gcc seems to be broken, in that it thinks that -2147483648
is a positive number.

I've got to go to be [work in the morning. :-(] but I think that finding
some way to force I32_MIN and IV_Min to be defined as -2147483647-1
should solve this bug, and may well make other things less unhappy.
[although that SEGV might also need to be solved first before the benefits
of IV_MIN being less than zero become apparent]

Nicholas Clark