| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
If we die while executing a UNITCHECK inside of an eval we shouldn't
leave PL_restartop set, as we will execute PL_op->op_next anyway. See
the previous commit for more details in the context yy_parse().
Thanks to Bram for coming up with a test case that demonstrated the
problem.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix GH Issue #20396, try_yyparse() breaks Attribute::Handlers.
Reduced test case is:
perl -e'CHECK { eval "]" }'
which should not assert or segfault.
In c304acb49 we made it so that when doeval_compile() is executed and it
calls yyparse() inside of an eval any exceptions that occur during the
parse process are trapped by try_yyparse() so that exection would return
to doeval_compile(). This was done so that post eval compilation cleanup
logic could be handled similarly regardless of whether Perl_croak() was
called or not. However the logic to setup PL_restartop was not adjusted
accordingly.
The opcode that calls doeval_compile() setups an eval context data
before it calls doeval_compile(). This data includes the "retop" which
is used to return control to after the eval should it die and is set to
the be the evaling opcodes op_next. When Perl_die_unwind() is called it
sets PL_restartop to be the "retop" of the of the current eval frame,
and then does a longjmp, on the assumption it will end up inside of a
"run loop enabled jump enviornment", where it restarts the run loop
based on the value of PL_restartop, zeroing it aftewards.
After c304acb49 however, a die inside of try_yyparse the die_unwind
returns control back to the try_yyparse, which ignores PL_restartop, and
leaves it set. Code then goes through the "compilation failed" branch
and execution returns to PL_restartop /anyway/, as PL_op hasn't changed
and pp_entereval returns control to PL_op->op_next, which is what we
pushed into the eval context anyway for the PL_restartop.
The end result of this however is that PL_restartop remains set when we
enter perl_run() for the first time. perl_run() is a "run loop enabled
jump enviornment" which uses run_body() to do its business, such that
when PL_restartop is NULL it executes the just compiled body of the
program, and when PL_restartop is not null it assumes it must be in the
eval handler from an eval from the main body and it should recontinue.
The leaked PL_restartop is thus executed instead of the main program
body and things go horribly wrong.
This patch changes it so that when try_yyparse traps an exception we
restore PL_restartop back to its old value. Same for its partner
PL_restartjmpenv. This is fine as they have been set to the values from
the beginning of the eval frame which we are part of, which is now over.
|
|
|
|
|
|
|
| |
This makes the logic a bit simpler, and makes it easier to debug
as well. Reducing the amount of code that needs to be inside
the eval makes it easier to debug what is going on, especially
from an internals point of view (eg with -Dl enabled).
|
| |
|
|
|
|
| |
This can be helpful debugging issues related to phaser blocks and eval.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In 4ab96809c99e944e70c21779641e4b1c9a00df41 the perl version
data was bumped, without doing any Module-CoreList changes and
now related tests are failing. Release managers guide said to
do:
./perl -Ilib Porting/corelist.pl cpan
to update the corelist data, which is this commit. Not sure if
this is 100% the right thing to do, but it makes the test fails
stop for now. Someone who knows this better can do any mop-up.
|
|
|
|
| |
detected by make test_porting and fixed by make regen
|
| |
|
|\
| |
| |
| | |
they found
|
| | |
|
| |
| |
| |
| | |
and update Changes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
the system perl on darwin
The system compiler on sufficienctly recent darwin doesn't appear to
find header files installed with the system perl if the CORE include
directory is specified with -I, even if we've checked that directory
contains EXTERN.h.
EU::MM adopted a change from Apple's patches, and this change adapts
that change for ExtUtils::CBuilder.
This problem prevented ExtUtils::ParseXS tests from completing
successfully, failing to find EXTERN.h.
|
| |
| |
| |
| |
| |
| |
| | |
The darwin hints file ensures this is set, but Apple appears to have
removed it for the system perl.
This prevented the emulation code for darwin from being compiled.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The system compiler on recent-ish darwin doesn't appear to find the
system perl headers when the CORE directory is supplied with -I, they
need the directory to be specified by -iwithsysroot.
Logic adapted from ExtUtils::MakeMaker.
|
| |
| |
| |
| |
| |
| |
| |
| | |
bf2a3dae added usage of PERL_SRAND_OVERRIDE_NEXT_PARENT(), but this
isn't defined for older perls.
Since this macro doesn't have much general use outside of threads,
just define it in the "bundled" threads.h.
|
| | |
|
| |
| |
| |
| |
| | |
This currently does not ensure that dependencies are installed, but
does allow for simpler testing locally.
|
| |
| |
| |
| |
| |
| | |
in the generated Makefile.PL. This broke threads-shared, as the
.so was in auto/threads-shared/shared.so instead of
auto/threads/shared/shared.so
|
| |
| |
| |
| |
| |
| |
| | |
Provides some extra definitions not included in threads.h.
As with threads.h it may be possible to eliminate this with the up to
date ppport.h.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
errors
In some cases it wasn't obvious why some code was failing (in
particular the DEFINE=-DHAS_PPPORT_H wasn't being added for
threads-shared), so report what we're doing, and more information on
why it failed if it does (which @bram-perl originally asked for.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
threads and threads-shared both bundle this on CPAN. It provides
empty definitions for a few macros that may not have been defined in
ppport.h. For now this includes the version from CPAN, but we may be
able to optimize it to a smaller version given that ppport.h has been
updated.
Since we now have two files, rather than including them as (fairly
large for t/test.pl) here-docs, move the content to __DATA__. I've
retained the individual functions that forward onto _write_from_data()
to provide a place to document why those files are needed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It turns out the Makefile.PL for both these distributions define the
HAS_PPPORT_H symbol so they both only include ppport.h when built from
CPAN.
We need them to include ppport.h for our testing, so define it here
too.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This tests two things for us:
- it tests on a "strange" platform, where things aren't exactly
POSIX, but similar enough for some purposes.
This allows testing for https://github.com/Perl/perl5/issues/20362
- the MacOS system perl is threaded, which is a flaw with the
existing dist-modules tests. This found a few problems which
are fixed in the following commits.
|
| |
| |
| |
| |
| | |
This allows this to be tested with your system perl, or any perl
where you don't want the dist/ modules to be installed.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a dist fails then continue with the next one instead of aborting.
A failure is reported when it happens and it is also repeated at the
end of the run.
The only exception to this is: Devel-PPPort: if that fails then it
aborts the run and no other dists are tested.
|
| |
| |
| |
| |
| |
| |
| | |
When restarting an Action on GitHub there is an extra checkbox to
enable 'debug logging'. This sets the 'RUNNER_DEBUG' environment
variable. (Ab)use that environment var as default value for the
verbose flag of `make test`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GitHub has support for grouping so use it in the dist-modules job.
Unfortunately there is no support for sub-groups (i.e. to group the
output of `perl Makefile.PL`, `make test` and `make install`) so one
group per dist has to be good enough.
(Also enable autoflush, it might not be needed but enabling it can't hurt.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The test/checkout does work with `actions/checkout@v2` so use it instead
of 'checkout@v1'. (v2 is faster because it does a shallow clone and doesn't
fetch the tags.)
(My *assumption* on why `checkout@v1` was used: `checkout@v2` does not work
when a 32-bit container is used on a 64-bit host. In these tests it uses
a 64-bit container and that does work.)
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For "BODYLESS" IVs and NVs, type up/downgrades can be easily done
without having to call sv_upgrade. (Which will also not convert a
BODYLESS NV back down to an IV, even when it is harmless to do so.)
This commit adds "BODYLESS" handling to sv_setiv and sv_setnv, which
previously lacked it, and "BODYLESS_NV" handling to sv_setsv_flags,
which previously only special-cased "BODYLESS_IV"s.
The BODYLESS_IV code in sv_setsv_flags previously did not preserve
flags such as SVs_TEMP or SVs_PADTMP, which seemed like a potential
latent bug. (The new BODYLESS_NV code *has* to preserve SVs_TEMP in
order for all tests in t/lib/warnings to continue to pass.) Rather
than clearing all flags, this commit instead does a SvOK_off(dsv)
for both BODYLESS_IV and BODYLESS_NV cases.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This commit:
* Adds support for negative keys, as per the original AELEMFAST_LEX
* Changes an if() check for a "useless assignment to a temporary" into
an assert, since this condition should never be true when the LHS is
the result of an array fetch.
|
|\ \ |
|
| | | |
|
|/ / |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Remove unmatched quotes in last month's
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
- New modules.
- Provide thanks.
- Removed empty sections.
- VMS configure changes.
|
| | |
|
|/ |
|
|
|
|
|
|
| |
OpenVMS x86_64 is out and should be getting a native (not cross)
C compiler Real Soon Now. So prepare for that and try to get the
archname in a fashion that will work for any future architectures.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
1.14 Sun 16 Oct 2022
* No recursion depth warning from the Memoize wrapper function.
This was a backcompat breakage in 1.09
1.13 Tue 30 Aug 2022
* No functional changes
* Further test fixes
1.12 Mon 29 Aug 2022
* No functional changes
* Test fixes
1.11 Sun 28 Aug 2022
* Large test suite refactor
* Additional tests
* Updated packaging and package metadata
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
2.75 2022-09-01 12:44:03 rurban
Minor
- Modernized the synopsis (https://github.com/rurban/Net-Ping/pull/31)
- Fixed a link in a comment (https://github.com/rurban/Net-Ping/pull/25)
META Changes
- Remove some TEST_REQUIRES (https://github.com/rurban/Net-Ping/pull/23)
Test fixes
- Support NO_NETWORK_TESTING=1 (https://github.com/rurban/Net-Ping/pull/24)
- Fix non-routable addresses for negative tests (https://github.com/rurban/Net-Ping/pull/24)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There has not been a viable GCC for VMS in a couple of decades and
the hacks and workarounds that were necessary then are unlikely to
be helpful for any future work. Reportedly significant portions of
the GCC toolchain were available in GNAT Ada, but there was never
an independent release of the C compiler and that support has now
been removed as well.
Cleaning this up should make it easier to add alternate compiler
support in the future, such as for the clang port in progress at
VSI.
|