Remove some legacy cruft

Function trace logs will report stack usage accurately. It won't include
the argv/environ block. Our clone() polyfill is now simpler and does not
use as much stack memory. Function call tracing on x86 is now faster too
This commit is contained in:
Justine Tunney 2025-01-02 18:44:07 -08:00
parent 8db646f6b2
commit a15958edc6
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
21 changed files with 291 additions and 467 deletions

View file

@ -84,7 +84,8 @@ o/$(MODE)/libc/sysv/sysret.o: private \
CFLAGS += \
-ffreestanding \
-fno-stack-protector \
-fno-sanitize=all
-fno-sanitize=all \
-mgeneral-regs-only
ifeq ($(ARCH),aarch64)
o/$(MODE)/libc/sysv/sysv.o: private \

View file

@ -35,8 +35,10 @@ errno_t __errno;
/**
* Returns address of `errno` variable.
*
* This function promises to not clobber argument registers.
*/
errno_t *__errno_location(void) {
nocallersavedregisters errno_t *__errno_location(void) {
if (__tls_enabled) {
return &__get_tls()->tib_errno;
} else {

View file

@ -187,7 +187,7 @@ systemfive_error:
#endif
systemfive_errno:
xchg %eax,%ecx
.errno
call __errno_location
mov %ecx,(%rax) // normalize to c library convention
push $-1 // negative one is only error result
pop %rax // the push pop is to save code size