Closed
Conversation
It's not used, but autoconf will generate it.
Allows the output to be more readily compared with autoconf's generated
s.h. Lines are purely reordered so:
diff <(git cat-file --textconv HEAD~1:config/s-nt.h | sort) \
<(git cat-file --textconv HEAD:config/s-nt.h | sort)
should return no differences.
These match up with facts determined by autoconf. The following
additional HAS_ defines are made:
- HAS_UNISTD
Behaviour of otherlibs/unix/access.c and otherlibs/win32unix/lseek.c
is affected but the effect is correct.
Behaviour of runtime/fix_code.c affected, but unistd.h includes
io.h, so there's no effective change.
In other cases, unistd.h is simply included where before it wasn't.
- HAS_DIRENT
Used in Unix-only closedir.c, opendir.c, readdir.c and rewinddir.c
Used in runtime/unix.c, but that obviously won't affect Windows!
- HAS_REWINDDIR
Used in Unix-only rewinddir.c
- HAS_TRUNCATE
Used in Unix-only ftruncate.c, mmap.c and truncate.c
- HAS_NANOSLEEP
Used in Unix-only sleep.c
- HAS_GETTIMEOFDAY
Used in vmthreads and Unix-only gettimeofday.c
Used in runtime/sys.c, but in a branch guarded by #ifndef _WIN32
- HAS_MKSTEMP
Changes yacc/main.c to use the MinGW implementation of mkstemp
(part of mingwex, which is linked by flexdll)
This variable was originally added in 1973b55 and 1596174 and was always specifically for Windows for installing the README files. This should have been renamed to INSTALL_DISTRIB in de4f4cf (which was part of MPR#6358/GPR#27). It should then have been removed in 13bb9d2 (GPR#1033). May it forever rest in peace.
No-op, since spacetime is not enabled by default, but easier comparison with autoconf
win32graph removed in ocaml#2318
-g is ignored by flexlink, -link -g is passed on to GCC.
Pedantic correction - $(SO) is not used by the Windows ports.
22b6097 to
2b3fad6
Compare
dra27
pushed a commit
that referenced
this pull request
Jun 9, 2022
- Don't put channels opened from C on this list, only those opened from OCaml and tracked by the GC. - Simplify several functions accordingly. - Fix an error in caml_finalize_channel where the channel could be unlinked from the list, then not freed because not flushed.
dra27
pushed a commit
that referenced
this pull request
Jul 29, 2024
…l#13294) The toplevel printer detects cycles by keeping a hashtable of values that it has already traversed. However, some OCaml runtime types (at least bigarrays) may be partially uninitialized, and hashing them at arbitrary program points may read uninitialized memory. In particular, the OCaml testsuite fails when running with a memory-sanitizer enabled, as bigarray printing results in reads to uninitialized memory: ``` ==133712==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x4e6d11 in caml_ba_hash /var/home/edwin/git/ocaml/runtime/bigarray.c:486:45 #1 0x52474a in caml_hash /var/home/edwin/git/ocaml/runtime/hash.c:251:35 #2 0x599ebf in caml_interprete /var/home/edwin/git/ocaml/runtime/interp.c:1065:14 #3 0x5a909a in caml_main /var/home/edwin/git/ocaml/runtime/startup_byt.c:575:9 #4 0x540ccb in main /var/home/edwin/git/ocaml/runtime/main.c:37:3 #5 0x7f0910abb087 in __libc_start_call_main (/lib64/libc.so.6+0x2a087) (BuildId: 8f53abaad945a669f2bdcd25f471d80e077568ef) #6 0x7f0910abb14a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2a14a) (BuildId: 8f53abaad945a669f2bdcd25f471d80e077568ef) #7 0x441804 in _start (/var/home/edwin/git/ocaml/runtime/ocamlrun+0x441804) (BuildId: 7a60eef57e1c2baf770bc38d10d6c227e60ead37) Uninitialized value was created by a heap allocation #0 0x47d306 in malloc (/var/home/edwin/git/ocaml/runtime/ocamlrun+0x47d306) (BuildId: 7a60eef57e1c2baf770bc38d10d6c227e60ead37) #1 0x4e7960 in caml_ba_alloc /var/home/edwin/git/ocaml/runtime/bigarray.c:246:12 #2 0x4e801f in caml_ba_create /var/home/edwin/git/ocaml/runtime/bigarray.c:673:10 #3 0x59b8fc in caml_interprete /var/home/edwin/git/ocaml/runtime/interp.c:1058:14 #4 0x5a909a in caml_main /var/home/edwin/git/ocaml/runtime/startup_byt.c:575:9 #5 0x540ccb in main /var/home/edwin/git/ocaml/runtime/main.c:37:3 #6 0x7f0910abb087 in __libc_start_call_main (/lib64/libc.so.6+0x2a087) (BuildId: 8f53abaad945a669f2bdcd25f471d80e077568ef) #7 0x7f0910abb14a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2a14a) (BuildId: 8f53abaad945a669f2bdcd25f471d80e077568ef) #8 0x441804 in _start (/var/home/edwin/git/ocaml/runtime/ocamlrun+0x441804) (BuildId: 7a60eef57e1c2baf770bc38d10d6c227e60ead37) SUMMARY: MemorySanitizer: use-of-uninitialized-value /var/home/edwin/git/ocaml/runtime/bigarray.c:486:45 in caml_ba_hash ``` The only use of hashing in genprintval is to avoid cycles, that is, it is only useful for OCaml values that contain other OCaml values (including possibly themselves). Bigarrays cannot introduce cycles, and they are always printed as "<abstr>" anyway. The present commit proposes to be more conservative in which values are hashed by the cycle detector to avoid this issue: we skip hashing any value with tag above No_scan_tag -- which may not contain any OCaml values. Suggested-by: Gabriel Scherer <[email protected]> Signed-off-by: Edwin Török <[email protected]> Co-authored-by: Edwin Török <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.