Document the -Wl,--stack-first option to clang.

As discussed in WebAssembly/wasi-libc#233, document the
`-Wl,--stack-first` option to help users diagnose stack overflow errors.
This commit is contained in:
Dan Gohman
2021-03-03 12:05:36 -08:00
parent cfbe0ef96a
commit 66c2827ac9

View File

@@ -12,4 +12,12 @@ that provide builds of Clang and sysroot libraries.
WASI doesn't yet support `setjmp`/`longjmp` or C++ exceptions, as it is
waiting for [unwinding support in WebAssembly].
By default, the C/C++ toolchain orders linear memory to put the globals first,
the stack second, and start the heap after that. This reduces code size,
because references to globals can use small offsets. However, it also means
that stack overflow will often lead to corrupted globals. The
`-Wl,--stack-first` flag to clang instructs it to put the stack first, followed
by the globals and the heap, which may produce slightly larger code, but will
more reliably trap on stack overflow.
[unwinding support in WebAssembly]: https://github.com/WebAssembly/exception-handling/