[watcom] Save DS register across syscalls, don't set DS on NULL pointers #2171
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.
The DS register would be set to zero when NULL was passed to system calls in the OpenWatcom version of the ELKS C library. This then allowed a NULL DS register to be write outside the process address space in the previous commit.
This PR now saves DS across Watcom system call wrappers using the OWC -Wc,-r option so this won't ever happen. In addition, the sys_setseg macro checks for NULL and won't set DS if so.
All pointer arguments to Watcom syscalls are now checked/set with sys_setseg, and the OWC syscall wrappers cleaned up.
A Watcom ASM version of fmemcmp is added to the C library, although still unused by 8086 toolchain as an inline version was written within AS86 for highest speed.