Use the system-provided execvpe() if possible. Otherwise, use
a serious reimplementation written in OCaml and patterned after
the Glibc execvpe() implementation.
Added a test in tests/lib-unix/unix-execvpe.
Don't test Unix.execvpe if we are using the system-provided implementation.
The execvpe() functions provided by Win32 and Cygwin aren't quite to
our specs. At any rate, the test is there to find bugs in our
implementation of execvpe(), not in others's.
This is a follow-up to commit 6d9ce26 and to GPR #1361.
I forgot that the win_{in,out}channel_of_filedescr functions from the
Win32 implementation of the Unix library call caml_open_descriptor_{in,out}
directly, without going through caml_ml_open_descriptor_{in,out} like
the Unix implementation of the Unix library does.
As a consequence the CHANNEL_FLAG_MANAGED_BY_GC flag is not set by
the Win32 implementation.
This commit fixes the Win32 implementation and brings it in sync with
the Unix implementation by setting the CHANNEL_FLAG_MANAGED_BY_GC
flag.
This causes trouble when the doc comments are actually in UTF8 and
the user is providing their own preamble with an UTF8 inputenc.
The default preamble still contains \usepackage[latin1]{inputenc},
so the Latin-1 accents will still display fine.
Now that actions can occur directly in test blocks, it is no longer
necessary to wrap each action in a test. This commit thus removes
all the single-action tests.
It also renames a few actions to give them simpler names.
This test shows bizarre behaviors on the BSDs, including MacOS: it looks like the INT signal is ignored when the test program is run from signal2.runner, but not when running it manually outside of the test script. That could be a Caml problem, or a BSD pthread implementation problem, or a misunderstanding of signal handling in POSIX threads.
At any rate, the signal2 test as it was until recently is useless because it is designed to succeed even in the face of the BSD failure mentioned above (kill -9 to guarantee termination + grepping only for [ab]*, which always succeeds). So, I'm just removing it.
signal2.ml: normalize the signal numbers
signal.checker: accept some "ab" output after the "exiting" message
(exiting is not instantaneous; the threads can still emit some a's and b's)
signal2.checker: do like signal.checker
On OpenBSD this script removes the newline at the end of each line
that is transformed. If the next line is a `# lineno "filename"`
directive, a syntax error occurs.
This commit changes the script to use a sed 's' command instead of a
'c' command. This restores the expected behavior under OpenBSD and
seems to make no difference for other systems.
* Fix duplicates in Cmmgen when handling switches with no default and not all cases
* Improve handling of incomplete Lambda switches in Flambda
* Add test (for reference) and changes
* Fix nitpick
* Cleanup: split the switch stores to reflect usage
* Improve compilation of incomplete switches with flambda
* Split switch stores into context-aware and -unaware versions
* Credit reviewers
* Go back to a single Switch.t_store type
This commit makes the heading hierarchy of ocamldoc start at {0 rather
than {1. This level {0 should be reserved for global titles, freeing
the use of {1 for normal subtitles.
tests/asmgen contains the custom C-- code generator and the tests written in C--
tests/asmcomp contains the tests written in OCaml
The purpose of this split is to make it easier to skip or remove entirely the asmgen tests in the future, and to adapt the other tests to the new test infrastructure.
Also: modernize the asm stubs in asmgen and remove the stubs for no-longer-supported architectures.
Inria's CI uses an "other-configs" job to test various, less
widespread configurations of the OCaml compiler.
Before this commit, the list of configurations to test was part of the
configuration of the Jenkins job itself, making it impossible to
have branch-specific configurations.
This commit introduces the tools/ci-build-other-configs script, which
can vary from branch to branch.
The job's configuration has been updated to execute the script when
it exists and to fallback to the former, built-in list of
configurations on the branches where this script is not present.
Probably by mistake a "Clflags.dlcode := false" was added along with the ARM64 port. As shown in MPR#7642 this produces link errors on ARM if the linker is PIE by default.
-(un)safe-string becomes -(no-)force-safe-string
-(un)safe-string-default becomes -default-unsafe-string
Config.safe_string (and Clflags.unsafe_string) keep their name for
backward-compatibility, as well as the C define CAML_SAFE_STRING
(which corresponds to -force-safe-string).