Clang now builds world and kernel, on i386 and amd64

Derek Tattersall dlt at mebtel.net
Wed Sep 29 15:57:04 UTC 2010


* 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


More information about the freebsd-current mailing list