Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Sep 2010 11:56:59 -0400
From:      Derek Tattersall <dlt@mebtel.net>
To:        Dimitry Andric <dim@freebsd.org>
Cc:        Renato Botelho <rbgarga@gmail.com>, current@freebsd.org
Subject:   Re: Clang now builds world and kernel, on i386 and amd64
Message-ID:  <20100929155659.GA82433@oriental.arm.org>
In-Reply-To: <4CA3244D.7030907@FreeBSD.org>
References:  <4C99A53E.7060707@FreeBSD.org> <AANLkTimYj1VnVQBLROE94rqPYO7pQyHWfpjiYYZ2ORrX@mail.gmail.com> <AANLkTikm0FrJbOTiRPQhcqM30N-GyOYRBk_8jR-Gq9jF@mail.gmail.com> <20100929002843.GA5001@oriental.arm.org> <4CA2E00D.3080102@FreeBSD.org> <AANLkTik4k%2Bg8NGwRUp=7bvF2MiHhbBOHmA=Ree_-xRDT@mail.gmail.com> <4CA3244D.7030907@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
* Dimitry Andric <dim@freebsd.org> [100929 08:55]:
> On 2010-09-29 13:23, Renato Botelho wrote:
> > #!/usr/bin/perl
> >
> > use File::Temp;
> >
> > my ( $fh, $filename ) = File::Temp::tempfile();
> > print "$filename\n";
> 
> For me it works perfectly, though I am using perl 5.10:
> 
> $ cat foo.pl
> #!/usr/bin/perl
> 
> use File::Temp;
> 
> my ( $fh, $filename ) = File::Temp::tempfile();
> print "$filename\n";
> $ perl -v
> 
> This is perl, v5.10.1 (*) built for i386-freebsd-64int
> 
> Copyright 1987-2009, Larry Wall
> 
> Perl may be copied only under the terms of either the Artistic License or the
> GNU General Public License, which may be found in the Perl 5 source kit.
> 
> Complete documentation for Perl, including FAQ lists, should be found on
> this system using "man perl" or "perldoc perl".  If you have access to the
> Internet, point your browser at http://www.perl.org/, the Perl Home Page.
> 
> $ perl foo.pl
> /tmp/tv25CPnWhF
> $ perl foo.pl
> /tmp/L2UJQ5_JJs
> $ perl foo.pl
> /tmp/6ynQYvWIc1
> $ perl foo.pl
> /tmp/Tdpf7PKBMg
> $ perl foo.pl
> /tmp/76ir2i1ici
> $ perl foo.pl
> /tmp/LhfD0eZgd8
> 
> I'll try building perl 5.12 and try it again.
> 
> Btw, I assume you did *not* rebuild perl with clang, so your perl is
> still compiled with gcc?
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
I built a test case using perl 5.12 and demonstrated that calling int(rand())
in perl returns NAN, as does calling rand() by itself.  A "C" program
that calls libc's rand() does return differing integers.  The perl
documentation claims that perl's rand() calls "C"s rand() and srand() if
necessary.  I think this effectively demonstrates that the problem lies
with the perl function rand() and it's interface to libc's rand() as
provided by clang.  

On a recent stable system, perl's mktemp works fine.  The only real
difference is that libc on stable is built with gcc and libc on current
is built with clang.

The perl source for mktemp() is in
/usr/local/lib/perl5/5.12.2/File/Temp.pm.  The line that builds the
filename from the template is line 632.
-- 
Best regards,
Derek Tattersall
dlt@mebtel.net		dlt666@yahoo.com		 dtatters@gmail.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100929155659.GA82433>