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>