Re: Clang now builds world and kernel, on i386 and amd64

From: Derek Tattersall <dlt_at_mebtel.net>
Date: Wed, 29 Sep 2010 11:56:59 -0400
* Dimitry Andric <dim_at_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_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_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_at_mebtel.net		dlt666_at_yahoo.com		 dtatters_at_gmail.com
Received on Wed Sep 29 2010 - 13:57:04 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:07 UTC