Make -ansi -D_POSIX_C_SOURCE=200112L -DGCDEBUG=1
work
#163
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.
This modifies the GCDEBUG stuff to be more standards-compliant. It removes the (nonfunctional, it turns out, on both macOS and the Hurd) special-cased mach stuff, changes the
caddr_t
to avoid *
, accounts forMAP_ANONYMOUS
vs.MAP_ANON
, and adds fallback behavior in case mmap() or mprotect() are missing. I tested that the fallback behavior still causes the shell to quickly implode when memory bugs are present. So this fixes #155. At the same time I added a fallback fromva_copy
to__va_copy
to fix #157.Tested on my usual set of OSes -- the Hurd, FreeBSD, Haiku, Omni OS, and Linux -- and on all of them
-DGCDEBUG=1
works, both with and without-ansi -D_POSIX_C_SOURCE=200112L -DNSIG=28
. I also tested macOS, and it works with-DGCDEBUG=1
, but with the ansi flags,HAVE_MMAP
needs to be turned off manually. Given this is still an improvement on the previous state on macOS, I'm not too motivated to investigate that at the moment :)