Commit | Line | Data |
87a42246 |
1 | #!./perl |
2 | |
3 | BEGIN { |
93f00e88 |
4 | delete $ENV{PERL_DL_NONLAZY} if $] < 5.005_58; #Perl_byterun problem |
5638aaac |
5 | if ($ENV{PERL_CORE}){ |
6 | chdir('t') if -d 't'; |
7 | if ($^O eq 'MacOS') { |
8 | @INC = qw(: ::lib ::macos:lib); |
9 | } else { |
10 | @INC = '.'; |
11 | push @INC, '../lib'; |
12 | } |
87a42246 |
13 | } else { |
5638aaac |
14 | unshift @INC, 't'; |
87a42246 |
15 | } |
9cd8f857 |
16 | require Config; |
17 | if (($Config::Config{'extensions'} !~ /\bB\b/) ){ |
18 | print "1..0 # Skip -- Perl configured without B module\n"; |
19 | exit 0; |
20 | } |
87a42246 |
21 | } |
22 | |
23 | $| = 1; |
24 | use warnings; |
25 | use strict; |
26 | use Config; |
93f00e88 |
27 | use Test::More tests => 7; |
28 | use B; |
29 | use B::Debug; |
87a42246 |
30 | |
31 | my $a; |
32 | my $Is_VMS = $^O eq 'VMS'; |
33 | my $Is_MacOS = $^O eq 'MacOS'; |
34 | |
35 | my $path = join " ", map { qq["-I$_"] } @INC; |
36 | my $redir = $Is_MacOS ? "" : "2>&1"; |
37 | |
38 | $a = `$^X $path "-MO=Debug" -e 1 $redir`; |
f071ed12 |
39 | like($a, qr/\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s); |
87a42246 |
40 | |
41 | |
42 | $a = `$^X $path "-MO=Terse" -e 1 $redir`; |
f071ed12 |
43 | like($a, qr/\bLISTOP\b.*leave.*\n OP\b.*enter.*\n COP\b.*nextstate.*\n OP\b.*null/s); |
87a42246 |
44 | |
45 | $a = `$^X $path "-MO=Terse" -ane "s/foo/bar/" $redir`; |
46 | $a =~ s/\(0x[^)]+\)//g; |
47 | $a =~ s/\[[^\]]+\]//g; |
48 | $a =~ s/-e syntax OK//; |
49 | $a =~ s/[^a-z ]+//g; |
50 | $a =~ s/\s+/ /g; |
51 | $a =~ s/\b(s|foo|bar|ullsv)\b\s?//g; |
52 | $a =~ s/^\s+//; |
53 | $a =~ s/\s+$//; |
54 | my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define'; |
55 | if ($is_thread) { |
56 | $b=<<EOF; |
57 | leave enter nextstate label leaveloop enterloop null and defined null |
58 | threadsv readline gv lineseq nextstate aassign null pushmark split pushre |
241416b8 |
59 | threadsv const null pushmark rvav gv nextstate subst const unstack |
87a42246 |
60 | EOF |
61 | } else { |
62 | $b=<<EOF; |
63 | leave enter nextstate label leaveloop enterloop null and defined null |
64 | null gvsv readline gv lineseq nextstate aassign null pushmark split pushre |
241416b8 |
65 | null gvsv const null pushmark rvav gv nextstate subst const unstack |
87a42246 |
66 | EOF |
67 | } |
68 | $b=~s/\n/ /g;$b=~s/\s+/ /g; |
69 | $b =~ s/\s+$//; |
f071ed12 |
70 | is($a, $b); |
87a42246 |
71 | |
93f00e88 |
72 | like(B::Debug::_printop(B::main_root), qr/LISTOP\s+\[OP_LEAVE\]/); |
73 | like(B::Debug::_printop(B::main_start), qr/OP\s+\[OP_ENTER\]/); |
74 | |
cba5fa5d |
75 | $a = `$^X $path "-MO=Debug" -e "B::main_root->debug" $redir`; |
93f00e88 |
76 | like($a, qr/op_next\s+0x0/m); |
cba5fa5d |
77 | $a = `$^X $path "-MO=Debug" -e "B::main_start->debug" $redir`; |
93f00e88 |
78 | like($a, qr/PL_ppaddr\[OP_ENTER\]/m); |