Merge "Create a distinct temp directory for each run."
diff --git a/libc/Android.mk b/libc/Android.mk
index 9554e18..3b6e3cb 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -227,7 +227,6 @@
     bionic/unlink.cpp \
     bionic/utimes.cpp \
     bionic/vdso.cpp \
-    bionic/vfork.cpp \
     bionic/wait.cpp \
     bionic/wchar.cpp \
     bionic/wctype.cpp \
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 128ec6b..38ae831 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -77,6 +77,7 @@
 int     setgroups:setgroups32(int, const gid_t*)   arm,x86
 int     setgroups:setgroups(int, const gid_t*)     arm64,mips,mips64,x86_64
 int     setpgid(pid_t, pid_t)  all
+pid_t   vfork(void)  arm
 int     setregid:setregid32(gid_t, gid_t)  arm,x86
 int     setregid:setregid(gid_t, gid_t)    arm64,mips,mips64,x86_64
 int     chroot(const char*)  all
diff --git a/libc/arch-arm/syscalls/vfork.S b/libc/arch-arm/syscalls/vfork.S
new file mode 100644
index 0000000..e12fba5
--- /dev/null
+++ b/libc/arch-arm/syscalls/vfork.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(vfork)
+    mov     ip, r7
+    ldr     r7, =__NR_vfork
+    swi     #0
+    mov     r7, ip
+    cmn     r0, #(MAX_ERRNO + 1)
+    bxls    lr
+    neg     r0, r0
+    b       __set_errno
+END(vfork)
diff --git a/libc/arch-arm64/arm64.mk b/libc/arch-arm64/arm64.mk
index 314358e..ed991ce 100644
--- a/libc/arch-arm64/arm64.mk
+++ b/libc/arch-arm64/arm64.mk
@@ -36,6 +36,7 @@
     arch-arm64/bionic/__set_tls.c \
     arch-arm64/bionic/sigsetjmp.S \
     arch-arm64/bionic/syscall.S \
+    arch-arm64/bionic/vfork.S \
 
 
 libc_crt_target_cflags_arm64 := \
diff --git a/libc/bionic/vfork.cpp b/libc/arch-arm64/bionic/vfork.S
similarity index 75%
rename from libc/bionic/vfork.cpp
rename to libc/arch-arm64/bionic/vfork.S
index b706a7f..c700623 100644
--- a/libc/bionic/vfork.cpp
+++ b/libc/arch-arm64/bionic/vfork.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2013 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,23 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
+#include <private/bionic_asm.h>
+#include <asm/signal.h>
+#include <linux/sched.h>
 
-// vfork(2) was removed from POSIX 2008, but it's common enough that we can't
-// actually remove it entirely.
-extern "C" pid_t vfork(void) {
-  return fork();
-}
+ENTRY(vfork)
+    mov     x0, #(CLONE_VM | CLONE_VFORK | SIGCHLD)
+    mov     x1, xzr
+    mov     x2, xzr
+    mov     x3, xzr
+    mov     x4, xzr
+
+    mov     x8, __NR_clone
+    svc     #0
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno
+
+    ret
+END(vfork)
diff --git a/libc/bionic/vfork.cpp b/libc/arch-mips/bionic/vfork.S
similarity index 72%
copy from libc/bionic/vfork.cpp
copy to libc/arch-mips/bionic/vfork.S
index b706a7f..96de69e 100644
--- a/libc/bionic/vfork.cpp
+++ b/libc/arch-mips/bionic/vfork.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2008 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,33 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
+#include <private/bionic_asm.h>
+#include <linux/sched.h>
 
-// vfork(2) was removed from POSIX 2008, but it's common enough that we can't
-// actually remove it entirely.
-extern "C" pid_t vfork(void) {
-  return fork();
-}
+// TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__.
+// #include <asm/signal.h>
+#define SIGCHLD 18
+
+ENTRY(vfork)
+	.set	noreorder
+	.cpload	t9
+
+	li	a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
+	li	a1, 0
+	li	a2, 0
+	li	a3, 0
+	subu	sp, 8
+	sw	$0, 16(sp)
+	li	v0, __NR_clone
+	syscall
+	addu	sp, 8
+	bnez	a3, 1f
+	 move	a0, v0
+
+	j	ra
+	 nop
+1:
+	la	t9, __set_errno
+	j	t9
+	 nop
+END(vfork)
diff --git a/libc/arch-mips/mips.mk b/libc/arch-mips/mips.mk
index bf3b8ae..8e415f9 100644
--- a/libc/arch-mips/mips.mk
+++ b/libc/arch-mips/mips.mk
@@ -59,6 +59,7 @@
     arch-mips/bionic/setjmp.S \
     arch-mips/bionic/sigsetjmp.S \
     arch-mips/bionic/syscall.S \
+    arch-mips/bionic/vfork.S \
 
 ifndef ARCH_MIPS_REV6
 libc_bionic_src_files_mips += \
diff --git a/libc/bionic/vfork.cpp b/libc/arch-mips64/bionic/vfork.S
similarity index 62%
copy from libc/bionic/vfork.cpp
copy to libc/arch-mips64/bionic/vfork.S
index b706a7f..911a264 100644
--- a/libc/bionic/vfork.cpp
+++ b/libc/arch-mips64/bionic/vfork.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2008 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,46 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
+#include <private/bionic_asm.h>
+#include <linux/sched.h>
 
-// vfork(2) was removed from POSIX 2008, but it's common enough that we can't
-// actually remove it entirely.
-extern "C" pid_t vfork(void) {
-  return fork();
-}
+// TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__.
+// #include <asm/signal.h>
+#define SIGCHLD 18
+
+	.text
+
+#if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
+FRAMESZ		=	MKFSIZ(5,0)
+#else
+FRAMESZ		=	MKFSIZ(0,0)
+#endif
+
+LEAF(vfork,FRAMESZ)
+#if FRAMESZ!=0
+	PTR_SUBU sp, FRAMESZ
+#endif
+	SETUP_GP64(a5, vfork)
+	LI	a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
+	move	a1, $0
+	move	a2, $0
+	move	a3, $0
+#if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
+	REG_S	$0, 4*REGSZ(sp)
+#else
+	move	a4, $0
+#endif
+	LI	v0, __NR_clone
+	syscall
+#if FRAMESZ!=0
+	PTR_ADDU sp,FRAMESZ
+#endif
+	move	a0, v0
+	bnez	a3, 1f
+	RESTORE_GP64
+	j	ra
+1:
+	LA	t9,__set_errno
+	RESTORE_GP64
+	j	t9
+	END(vfork)
diff --git a/libc/arch-mips64/mips64.mk b/libc/arch-mips64/mips64.mk
index 6f7a928..230cb26 100644
--- a/libc/arch-mips64/mips64.mk
+++ b/libc/arch-mips64/mips64.mk
@@ -46,6 +46,7 @@
     arch-mips64/bionic/setjmp.S \
     arch-mips64/bionic/sigsetjmp.S \
     arch-mips64/bionic/syscall.S \
+    arch-mips64/bionic/vfork.S \
 
 # FIXME TODO
 ## libc_bionic_src_files_mips64 += arch-mips64/string/memcpy.S
diff --git a/libc/arch-x86/bionic/__bionic_clone.S b/libc/arch-x86/bionic/__bionic_clone.S
index 917dc68..900ea40 100644
--- a/libc/arch-x86/bionic/__bionic_clone.S
+++ b/libc/arch-x86/bionic/__bionic_clone.S
@@ -32,7 +32,7 @@
         # An error occurred, so set errno and return -1.
         negl    %eax
         pushl   %eax
-        call    __set_errno
+        call    PIC_PLT(__set_errno)
         addl    $4, %esp
         jmp     .L_bc_return
 
diff --git a/libc/arch-x86/bionic/__stack_chk_fail_local.h b/libc/arch-x86/bionic/__stack_chk_fail_local.h
index 4f3699a..0b0fd7f 100644
--- a/libc/arch-x86/bionic/__stack_chk_fail_local.h
+++ b/libc/arch-x86/bionic/__stack_chk_fail_local.h
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 
 /*
    __stack_chk_fail routine is runtime part of stack protector compiler
@@ -48,13 +49,9 @@
 */
 
 #ifdef __i386__
-#ifdef __PIC__
 extern void __stack_chk_fail();
 
-__attribute__ ((visibility ("hidden")))
-void __stack_chk_fail_local()
-{
+__LIBC_HIDDEN__ void __stack_chk_fail_local() {
   __stack_chk_fail();
 }
 #endif
-#endif
diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S
index 5b94311..8f9d67c 100644
--- a/libc/arch-x86/bionic/setjmp.S
+++ b/libc/arch-x86/bionic/setjmp.S
@@ -46,11 +46,7 @@
 ENTRY(setjmp)
 	PIC_PROLOGUE
 	pushl	$0
-#ifdef PIC
 	call	PIC_PLT(sigblock)
-#else
-	call	sigblock
-#endif
 	addl	$4,%esp
 	PIC_EPILOGUE
 
@@ -71,11 +67,7 @@
 	movl	4(%esp),%edx
 	PIC_PROLOGUE
 	pushl	24(%edx)
-#ifdef PIC
 	call	PIC_PLT(sigsetmask)
-#else
-	call	sigsetmask
-#endif
 	addl	$4,%esp
 	PIC_EPILOGUE
 
diff --git a/libc/arch-x86/bionic/sigsetjmp.S b/libc/arch-x86/bionic/sigsetjmp.S
index 7ef732e..250c606 100644
--- a/libc/arch-x86/bionic/sigsetjmp.S
+++ b/libc/arch-x86/bionic/sigsetjmp.S
@@ -42,11 +42,7 @@
 
 	PIC_PROLOGUE
 	pushl	$0
-#ifdef PIC
 	call	PIC_PLT(sigblock)
-#else
-	call	sigblock
-#endif
 	addl	$4,%esp
 	PIC_EPILOGUE
 
@@ -70,11 +66,7 @@
 
 	PIC_PROLOGUE
 	pushl	24(%edx)
-#ifdef PIC
 	call	PIC_PLT(sigsetmask)
-#else
-	call	sigsetmask
-#endif
 	addl	$4,%esp
 	PIC_EPILOGUE
 
diff --git a/libc/arch-x86/bionic/syscall.S b/libc/arch-x86/bionic/syscall.S
index 8e76c4e..2139100 100644
--- a/libc/arch-x86/bionic/syscall.S
+++ b/libc/arch-x86/bionic/syscall.S
@@ -38,7 +38,7 @@
     # Yes, so set errno.
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     # Restore the callee save registers.
diff --git a/libc/bionic/vfork.cpp b/libc/arch-x86/bionic/vfork.S
similarity index 75%
copy from libc/bionic/vfork.cpp
copy to libc/arch-x86/bionic/vfork.S
index b706a7f..91453f1 100644
--- a/libc/bionic/vfork.cpp
+++ b/libc/arch-x86/bionic/vfork.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2008 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,19 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
+#include <private/bionic_asm.h>
 
-// vfork(2) was removed from POSIX 2008, but it's common enough that we can't
-// actually remove it entirely.
-extern "C" pid_t vfork(void) {
-  return fork();
-}
+// This custom code preserves the return address across the system call.
+
+ENTRY(vfork)
+  popl    %ecx  // Grab the return address.
+  movl    $__NR_vfork, %eax
+  int     $0x80
+  cmpl    $-MAX_ERRNO, %eax
+  jb      1f
+  negl    %eax
+  pushl   %eax
+  call    PIC_PLT(__set_errno)
+1:
+  jmp     *%ecx  // Jump to the stored return address.
+END(vfork)
diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h
index 913e6c8..bf77525 100644
--- a/libc/arch-x86/include/machine/asm.h
+++ b/libc/arch-x86/include/machine/asm.h
@@ -37,7 +37,6 @@
 #ifndef _I386_ASM_H_
 #define _I386_ASM_H_
 
-#ifdef PIC
 #define PIC_PROLOGUE	\
 	pushl	%ebx;	\
 	call	1f;	\
@@ -49,13 +48,6 @@
 #define PIC_PLT(x)	x@PLT
 #define PIC_GOT(x)	x@GOT(%ebx)
 #define PIC_GOTOFF(x)	x@GOTOFF(%ebx)
-#else
-#define PIC_PROLOGUE
-#define PIC_EPILOGUE
-#define PIC_PLT(x)	x
-#define PIC_GOT(x)	x
-#define PIC_GOTOFF(x)	x
-#endif
 
 /* let kernels and others override entrypoint alignment */
 #if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
diff --git a/libc/arch-x86/syscalls/__accept4.S b/libc/arch-x86/syscalls/__accept4.S
index 2d9cc42..4fdb854 100644
--- a/libc/arch-x86/syscalls/__accept4.S
+++ b/libc/arch-x86/syscalls/__accept4.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__brk.S b/libc/arch-x86/syscalls/__brk.S
index 632dfcf..6039be1 100644
--- a/libc/arch-x86/syscalls/__brk.S
+++ b/libc/arch-x86/syscalls/__brk.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__connect.S b/libc/arch-x86/syscalls/__connect.S
index 5ee4fbf..5263f2d 100644
--- a/libc/arch-x86/syscalls/__connect.S
+++ b/libc/arch-x86/syscalls/__connect.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__epoll_pwait.S b/libc/arch-x86/syscalls/__epoll_pwait.S
index 641ca6d..132bcf1 100644
--- a/libc/arch-x86/syscalls/__epoll_pwait.S
+++ b/libc/arch-x86/syscalls/__epoll_pwait.S
@@ -33,7 +33,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebp
diff --git a/libc/arch-x86/syscalls/__exit.S b/libc/arch-x86/syscalls/__exit.S
index 8578f56..287fb38 100644
--- a/libc/arch-x86/syscalls/__exit.S
+++ b/libc/arch-x86/syscalls/__exit.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__fcntl64.S b/libc/arch-x86/syscalls/__fcntl64.S
index ef58d15..adee16f 100644
--- a/libc/arch-x86/syscalls/__fcntl64.S
+++ b/libc/arch-x86/syscalls/__fcntl64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__fstatfs64.S b/libc/arch-x86/syscalls/__fstatfs64.S
index 0ca3360..7c277ee 100644
--- a/libc/arch-x86/syscalls/__fstatfs64.S
+++ b/libc/arch-x86/syscalls/__fstatfs64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__getcpu.S b/libc/arch-x86/syscalls/__getcpu.S
index b181877..327335c 100644
--- a/libc/arch-x86/syscalls/__getcpu.S
+++ b/libc/arch-x86/syscalls/__getcpu.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__getcwd.S b/libc/arch-x86/syscalls/__getcwd.S
index b71ba0d..10c2f6c 100644
--- a/libc/arch-x86/syscalls/__getcwd.S
+++ b/libc/arch-x86/syscalls/__getcwd.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__getdents64.S b/libc/arch-x86/syscalls/__getdents64.S
index 3fc8719..c4e259b 100644
--- a/libc/arch-x86/syscalls/__getdents64.S
+++ b/libc/arch-x86/syscalls/__getdents64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__getpid.S b/libc/arch-x86/syscalls/__getpid.S
index f138d2f..89f9484 100644
--- a/libc/arch-x86/syscalls/__getpid.S
+++ b/libc/arch-x86/syscalls/__getpid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/__getpriority.S b/libc/arch-x86/syscalls/__getpriority.S
index 103431d..d216a9f 100644
--- a/libc/arch-x86/syscalls/__getpriority.S
+++ b/libc/arch-x86/syscalls/__getpriority.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__ioctl.S b/libc/arch-x86/syscalls/__ioctl.S
index 99d2d2c..bcfd321 100644
--- a/libc/arch-x86/syscalls/__ioctl.S
+++ b/libc/arch-x86/syscalls/__ioctl.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__llseek.S b/libc/arch-x86/syscalls/__llseek.S
index 0cdb98a..39ab749 100644
--- a/libc/arch-x86/syscalls/__llseek.S
+++ b/libc/arch-x86/syscalls/__llseek.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/__mmap2.S b/libc/arch-x86/syscalls/__mmap2.S
index 47131ef..f821423 100644
--- a/libc/arch-x86/syscalls/__mmap2.S
+++ b/libc/arch-x86/syscalls/__mmap2.S
@@ -33,7 +33,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebp
diff --git a/libc/arch-x86/syscalls/__openat.S b/libc/arch-x86/syscalls/__openat.S
index aec10e5..acdd5ad 100644
--- a/libc/arch-x86/syscalls/__openat.S
+++ b/libc/arch-x86/syscalls/__openat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__ppoll.S b/libc/arch-x86/syscalls/__ppoll.S
index 92197b7..a968965 100644
--- a/libc/arch-x86/syscalls/__ppoll.S
+++ b/libc/arch-x86/syscalls/__ppoll.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/__pselect6.S b/libc/arch-x86/syscalls/__pselect6.S
index 38402f0..c147bb5 100644
--- a/libc/arch-x86/syscalls/__pselect6.S
+++ b/libc/arch-x86/syscalls/__pselect6.S
@@ -33,7 +33,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebp
diff --git a/libc/arch-x86/syscalls/__ptrace.S b/libc/arch-x86/syscalls/__ptrace.S
index cea5847..c9a1bfd 100644
--- a/libc/arch-x86/syscalls/__ptrace.S
+++ b/libc/arch-x86/syscalls/__ptrace.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__reboot.S b/libc/arch-x86/syscalls/__reboot.S
index 4546994..3dbbb25 100644
--- a/libc/arch-x86/syscalls/__reboot.S
+++ b/libc/arch-x86/syscalls/__reboot.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigaction.S b/libc/arch-x86/syscalls/__rt_sigaction.S
index bfbe5ba..3da8cae 100644
--- a/libc/arch-x86/syscalls/__rt_sigaction.S
+++ b/libc/arch-x86/syscalls/__rt_sigaction.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigpending.S b/libc/arch-x86/syscalls/__rt_sigpending.S
index dac478a..99e43ec 100644
--- a/libc/arch-x86/syscalls/__rt_sigpending.S
+++ b/libc/arch-x86/syscalls/__rt_sigpending.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__rt_sigprocmask.S b/libc/arch-x86/syscalls/__rt_sigprocmask.S
index f112360..f3cda1f 100644
--- a/libc/arch-x86/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-x86/syscalls/__rt_sigprocmask.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigsuspend.S b/libc/arch-x86/syscalls/__rt_sigsuspend.S
index ef505c0..f5a6704 100644
--- a/libc/arch-x86/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-x86/syscalls/__rt_sigsuspend.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__rt_sigtimedwait.S b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
index d19c7db..621173f 100644
--- a/libc/arch-x86/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__sched_getaffinity.S b/libc/arch-x86/syscalls/__sched_getaffinity.S
index e7cb8f1..fe0b2f6 100644
--- a/libc/arch-x86/syscalls/__sched_getaffinity.S
+++ b/libc/arch-x86/syscalls/__sched_getaffinity.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__set_thread_area.S b/libc/arch-x86/syscalls/__set_thread_area.S
index dda23a0..c67e6e4 100644
--- a/libc/arch-x86/syscalls/__set_thread_area.S
+++ b/libc/arch-x86/syscalls/__set_thread_area.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__set_tid_address.S b/libc/arch-x86/syscalls/__set_tid_address.S
index 1566d9a..f7ccc3a 100644
--- a/libc/arch-x86/syscalls/__set_tid_address.S
+++ b/libc/arch-x86/syscalls/__set_tid_address.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__sigaction.S b/libc/arch-x86/syscalls/__sigaction.S
index f1a51d2..bf46472 100644
--- a/libc/arch-x86/syscalls/__sigaction.S
+++ b/libc/arch-x86/syscalls/__sigaction.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__signalfd4.S b/libc/arch-x86/syscalls/__signalfd4.S
index 335e206..2241fa8 100644
--- a/libc/arch-x86/syscalls/__signalfd4.S
+++ b/libc/arch-x86/syscalls/__signalfd4.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__socket.S b/libc/arch-x86/syscalls/__socket.S
index 368680f..c36fde1 100644
--- a/libc/arch-x86/syscalls/__socket.S
+++ b/libc/arch-x86/syscalls/__socket.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__statfs64.S b/libc/arch-x86/syscalls/__statfs64.S
index 6bb9d99..76023aa 100644
--- a/libc/arch-x86/syscalls/__statfs64.S
+++ b/libc/arch-x86/syscalls/__statfs64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__timer_create.S b/libc/arch-x86/syscalls/__timer_create.S
index 3d28ae9..7de433f 100644
--- a/libc/arch-x86/syscalls/__timer_create.S
+++ b/libc/arch-x86/syscalls/__timer_create.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/__timer_delete.S b/libc/arch-x86/syscalls/__timer_delete.S
index 7d64d6d..b96de3b 100644
--- a/libc/arch-x86/syscalls/__timer_delete.S
+++ b/libc/arch-x86/syscalls/__timer_delete.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__timer_getoverrun.S b/libc/arch-x86/syscalls/__timer_getoverrun.S
index cb37765..ae44926 100644
--- a/libc/arch-x86/syscalls/__timer_getoverrun.S
+++ b/libc/arch-x86/syscalls/__timer_getoverrun.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/__timer_gettime.S b/libc/arch-x86/syscalls/__timer_gettime.S
index 5c43f4a..4c2cbfc 100644
--- a/libc/arch-x86/syscalls/__timer_gettime.S
+++ b/libc/arch-x86/syscalls/__timer_gettime.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/__timer_settime.S b/libc/arch-x86/syscalls/__timer_settime.S
index da7c587..0541128 100644
--- a/libc/arch-x86/syscalls/__timer_settime.S
+++ b/libc/arch-x86/syscalls/__timer_settime.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/__waitid.S b/libc/arch-x86/syscalls/__waitid.S
index 7e3ecdd..fb8416f 100644
--- a/libc/arch-x86/syscalls/__waitid.S
+++ b/libc/arch-x86/syscalls/__waitid.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/_exit.S b/libc/arch-x86/syscalls/_exit.S
index 36e884a..31af905 100644
--- a/libc/arch-x86/syscalls/_exit.S
+++ b/libc/arch-x86/syscalls/_exit.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/acct.S b/libc/arch-x86/syscalls/acct.S
index a036114..a19595f 100644
--- a/libc/arch-x86/syscalls/acct.S
+++ b/libc/arch-x86/syscalls/acct.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/bind.S b/libc/arch-x86/syscalls/bind.S
index ab5a29e..e45b441 100644
--- a/libc/arch-x86/syscalls/bind.S
+++ b/libc/arch-x86/syscalls/bind.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/capget.S b/libc/arch-x86/syscalls/capget.S
index 5441e49..9790f18 100644
--- a/libc/arch-x86/syscalls/capget.S
+++ b/libc/arch-x86/syscalls/capget.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/capset.S b/libc/arch-x86/syscalls/capset.S
index d04e411..a5bd094 100644
--- a/libc/arch-x86/syscalls/capset.S
+++ b/libc/arch-x86/syscalls/capset.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/chdir.S b/libc/arch-x86/syscalls/chdir.S
index d32a0bd..d27f289 100644
--- a/libc/arch-x86/syscalls/chdir.S
+++ b/libc/arch-x86/syscalls/chdir.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/chroot.S b/libc/arch-x86/syscalls/chroot.S
index 63d7e00..18bd1d9 100644
--- a/libc/arch-x86/syscalls/chroot.S
+++ b/libc/arch-x86/syscalls/chroot.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/clock_getres.S b/libc/arch-x86/syscalls/clock_getres.S
index 321299c..1ce61ef 100644
--- a/libc/arch-x86/syscalls/clock_getres.S
+++ b/libc/arch-x86/syscalls/clock_getres.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/clock_gettime.S b/libc/arch-x86/syscalls/clock_gettime.S
index 54f769a..73c51af 100644
--- a/libc/arch-x86/syscalls/clock_gettime.S
+++ b/libc/arch-x86/syscalls/clock_gettime.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/clock_nanosleep.S b/libc/arch-x86/syscalls/clock_nanosleep.S
index ca961c0..3573962 100644
--- a/libc/arch-x86/syscalls/clock_nanosleep.S
+++ b/libc/arch-x86/syscalls/clock_nanosleep.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/clock_settime.S b/libc/arch-x86/syscalls/clock_settime.S
index ab8c43e..35f79eb 100644
--- a/libc/arch-x86/syscalls/clock_settime.S
+++ b/libc/arch-x86/syscalls/clock_settime.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/close.S b/libc/arch-x86/syscalls/close.S
index 0b3e73a..9ea61d4 100644
--- a/libc/arch-x86/syscalls/close.S
+++ b/libc/arch-x86/syscalls/close.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/delete_module.S b/libc/arch-x86/syscalls/delete_module.S
index 757c8c1..d2515f8 100644
--- a/libc/arch-x86/syscalls/delete_module.S
+++ b/libc/arch-x86/syscalls/delete_module.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/dup.S b/libc/arch-x86/syscalls/dup.S
index 64e1538..81542c1 100644
--- a/libc/arch-x86/syscalls/dup.S
+++ b/libc/arch-x86/syscalls/dup.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/dup3.S b/libc/arch-x86/syscalls/dup3.S
index a0ecd19..d0dfb5b 100644
--- a/libc/arch-x86/syscalls/dup3.S
+++ b/libc/arch-x86/syscalls/dup3.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/epoll_create1.S b/libc/arch-x86/syscalls/epoll_create1.S
index 5b6a1ba..23feb05 100644
--- a/libc/arch-x86/syscalls/epoll_create1.S
+++ b/libc/arch-x86/syscalls/epoll_create1.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/epoll_ctl.S b/libc/arch-x86/syscalls/epoll_ctl.S
index 3fd8acd..ac6405c 100644
--- a/libc/arch-x86/syscalls/epoll_ctl.S
+++ b/libc/arch-x86/syscalls/epoll_ctl.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/eventfd.S b/libc/arch-x86/syscalls/eventfd.S
index 55c5e6a..1098d2a 100644
--- a/libc/arch-x86/syscalls/eventfd.S
+++ b/libc/arch-x86/syscalls/eventfd.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/execve.S b/libc/arch-x86/syscalls/execve.S
index 7ad54f7..1a26a81 100644
--- a/libc/arch-x86/syscalls/execve.S
+++ b/libc/arch-x86/syscalls/execve.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/faccessat.S b/libc/arch-x86/syscalls/faccessat.S
index 115d645..087db63 100644
--- a/libc/arch-x86/syscalls/faccessat.S
+++ b/libc/arch-x86/syscalls/faccessat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/fallocate64.S b/libc/arch-x86/syscalls/fallocate64.S
index f8bde62..3bfe4df 100644
--- a/libc/arch-x86/syscalls/fallocate64.S
+++ b/libc/arch-x86/syscalls/fallocate64.S
@@ -33,7 +33,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebp
diff --git a/libc/arch-x86/syscalls/fchdir.S b/libc/arch-x86/syscalls/fchdir.S
index 56e496c..b0e5031 100644
--- a/libc/arch-x86/syscalls/fchdir.S
+++ b/libc/arch-x86/syscalls/fchdir.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/fchmod.S b/libc/arch-x86/syscalls/fchmod.S
index 4badcea..92fb3fe 100644
--- a/libc/arch-x86/syscalls/fchmod.S
+++ b/libc/arch-x86/syscalls/fchmod.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/fchmodat.S b/libc/arch-x86/syscalls/fchmodat.S
index 552e85c..3b8769c 100644
--- a/libc/arch-x86/syscalls/fchmodat.S
+++ b/libc/arch-x86/syscalls/fchmodat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/fchown.S b/libc/arch-x86/syscalls/fchown.S
index 7e82637..7e1991f 100644
--- a/libc/arch-x86/syscalls/fchown.S
+++ b/libc/arch-x86/syscalls/fchown.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/fchownat.S b/libc/arch-x86/syscalls/fchownat.S
index de039d0..8f22e97 100644
--- a/libc/arch-x86/syscalls/fchownat.S
+++ b/libc/arch-x86/syscalls/fchownat.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/fdatasync.S b/libc/arch-x86/syscalls/fdatasync.S
index fdb5578..12bc328 100644
--- a/libc/arch-x86/syscalls/fdatasync.S
+++ b/libc/arch-x86/syscalls/fdatasync.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/fgetxattr.S b/libc/arch-x86/syscalls/fgetxattr.S
index 3ed63d3..4bc5ac7 100644
--- a/libc/arch-x86/syscalls/fgetxattr.S
+++ b/libc/arch-x86/syscalls/fgetxattr.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/flistxattr.S b/libc/arch-x86/syscalls/flistxattr.S
index 2840114..a3fe3f7 100644
--- a/libc/arch-x86/syscalls/flistxattr.S
+++ b/libc/arch-x86/syscalls/flistxattr.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/flock.S b/libc/arch-x86/syscalls/flock.S
index dc9ef02..115d012 100644
--- a/libc/arch-x86/syscalls/flock.S
+++ b/libc/arch-x86/syscalls/flock.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/fremovexattr.S b/libc/arch-x86/syscalls/fremovexattr.S
index 1e77f82..b498a5a 100644
--- a/libc/arch-x86/syscalls/fremovexattr.S
+++ b/libc/arch-x86/syscalls/fremovexattr.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/fsetxattr.S b/libc/arch-x86/syscalls/fsetxattr.S
index 703a8d7..1126ae4 100644
--- a/libc/arch-x86/syscalls/fsetxattr.S
+++ b/libc/arch-x86/syscalls/fsetxattr.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/fstat64.S b/libc/arch-x86/syscalls/fstat64.S
index 970eeb1..727a30b 100644
--- a/libc/arch-x86/syscalls/fstat64.S
+++ b/libc/arch-x86/syscalls/fstat64.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/fstatat64.S b/libc/arch-x86/syscalls/fstatat64.S
index 476578d..f0b8db1 100644
--- a/libc/arch-x86/syscalls/fstatat64.S
+++ b/libc/arch-x86/syscalls/fstatat64.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/fsync.S b/libc/arch-x86/syscalls/fsync.S
index 9fc84b7..092b6e1 100644
--- a/libc/arch-x86/syscalls/fsync.S
+++ b/libc/arch-x86/syscalls/fsync.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/ftruncate.S b/libc/arch-x86/syscalls/ftruncate.S
index 6765d98..d26aabf 100644
--- a/libc/arch-x86/syscalls/ftruncate.S
+++ b/libc/arch-x86/syscalls/ftruncate.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/ftruncate64.S b/libc/arch-x86/syscalls/ftruncate64.S
index 21e26ce..d07d91d 100644
--- a/libc/arch-x86/syscalls/ftruncate64.S
+++ b/libc/arch-x86/syscalls/ftruncate64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/getegid.S b/libc/arch-x86/syscalls/getegid.S
index 445cd97..30425b6 100644
--- a/libc/arch-x86/syscalls/getegid.S
+++ b/libc/arch-x86/syscalls/getegid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/geteuid.S b/libc/arch-x86/syscalls/geteuid.S
index 8290a93..10cdf9d 100644
--- a/libc/arch-x86/syscalls/geteuid.S
+++ b/libc/arch-x86/syscalls/geteuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/getgid.S b/libc/arch-x86/syscalls/getgid.S
index d90767f..75467e7 100644
--- a/libc/arch-x86/syscalls/getgid.S
+++ b/libc/arch-x86/syscalls/getgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/getgroups.S b/libc/arch-x86/syscalls/getgroups.S
index d36c09c..d2adef2 100644
--- a/libc/arch-x86/syscalls/getgroups.S
+++ b/libc/arch-x86/syscalls/getgroups.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getitimer.S b/libc/arch-x86/syscalls/getitimer.S
index ebf1260..505c6bb 100644
--- a/libc/arch-x86/syscalls/getitimer.S
+++ b/libc/arch-x86/syscalls/getitimer.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getpeername.S b/libc/arch-x86/syscalls/getpeername.S
index abecd4e..83c70c5 100644
--- a/libc/arch-x86/syscalls/getpeername.S
+++ b/libc/arch-x86/syscalls/getpeername.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getpgid.S b/libc/arch-x86/syscalls/getpgid.S
index e74ed3b..b8c9744 100644
--- a/libc/arch-x86/syscalls/getpgid.S
+++ b/libc/arch-x86/syscalls/getpgid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/getppid.S b/libc/arch-x86/syscalls/getppid.S
index 025fa42..3f39256 100644
--- a/libc/arch-x86/syscalls/getppid.S
+++ b/libc/arch-x86/syscalls/getppid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/getresgid.S b/libc/arch-x86/syscalls/getresgid.S
index fe08cdf..deb367a 100644
--- a/libc/arch-x86/syscalls/getresgid.S
+++ b/libc/arch-x86/syscalls/getresgid.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/getresuid.S b/libc/arch-x86/syscalls/getresuid.S
index 8e292fc..719b25e 100644
--- a/libc/arch-x86/syscalls/getresuid.S
+++ b/libc/arch-x86/syscalls/getresuid.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/getrlimit.S b/libc/arch-x86/syscalls/getrlimit.S
index fdb5a03..32cccce 100644
--- a/libc/arch-x86/syscalls/getrlimit.S
+++ b/libc/arch-x86/syscalls/getrlimit.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getrusage.S b/libc/arch-x86/syscalls/getrusage.S
index ae5f796..17b2f0a 100644
--- a/libc/arch-x86/syscalls/getrusage.S
+++ b/libc/arch-x86/syscalls/getrusage.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getsid.S b/libc/arch-x86/syscalls/getsid.S
index e1dc87f..f08f9c9 100644
--- a/libc/arch-x86/syscalls/getsid.S
+++ b/libc/arch-x86/syscalls/getsid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/getsockname.S b/libc/arch-x86/syscalls/getsockname.S
index 254b755..00d92ea 100644
--- a/libc/arch-x86/syscalls/getsockname.S
+++ b/libc/arch-x86/syscalls/getsockname.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getsockopt.S b/libc/arch-x86/syscalls/getsockopt.S
index 2ef630c..ad13dd2 100644
--- a/libc/arch-x86/syscalls/getsockopt.S
+++ b/libc/arch-x86/syscalls/getsockopt.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/gettimeofday.S b/libc/arch-x86/syscalls/gettimeofday.S
index 709a17b..eeba91a 100644
--- a/libc/arch-x86/syscalls/gettimeofday.S
+++ b/libc/arch-x86/syscalls/gettimeofday.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/getuid.S b/libc/arch-x86/syscalls/getuid.S
index c375d30..1007eb9 100644
--- a/libc/arch-x86/syscalls/getuid.S
+++ b/libc/arch-x86/syscalls/getuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/getxattr.S b/libc/arch-x86/syscalls/getxattr.S
index db9c9dd..755b5c3 100644
--- a/libc/arch-x86/syscalls/getxattr.S
+++ b/libc/arch-x86/syscalls/getxattr.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/init_module.S b/libc/arch-x86/syscalls/init_module.S
index 543b31e..607cc07 100644
--- a/libc/arch-x86/syscalls/init_module.S
+++ b/libc/arch-x86/syscalls/init_module.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/inotify_add_watch.S b/libc/arch-x86/syscalls/inotify_add_watch.S
index f58c6d1..5b89a55 100644
--- a/libc/arch-x86/syscalls/inotify_add_watch.S
+++ b/libc/arch-x86/syscalls/inotify_add_watch.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/inotify_init1.S b/libc/arch-x86/syscalls/inotify_init1.S
index 2c7b100..d3e2bba 100644
--- a/libc/arch-x86/syscalls/inotify_init1.S
+++ b/libc/arch-x86/syscalls/inotify_init1.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/inotify_rm_watch.S b/libc/arch-x86/syscalls/inotify_rm_watch.S
index c453478..052a4ec 100644
--- a/libc/arch-x86/syscalls/inotify_rm_watch.S
+++ b/libc/arch-x86/syscalls/inotify_rm_watch.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/kill.S b/libc/arch-x86/syscalls/kill.S
index 0c1e24a..d573a4b 100644
--- a/libc/arch-x86/syscalls/kill.S
+++ b/libc/arch-x86/syscalls/kill.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/klogctl.S b/libc/arch-x86/syscalls/klogctl.S
index 869324a..387b859 100644
--- a/libc/arch-x86/syscalls/klogctl.S
+++ b/libc/arch-x86/syscalls/klogctl.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/lgetxattr.S b/libc/arch-x86/syscalls/lgetxattr.S
index 3ed4f11..c61bcc4 100644
--- a/libc/arch-x86/syscalls/lgetxattr.S
+++ b/libc/arch-x86/syscalls/lgetxattr.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/linkat.S b/libc/arch-x86/syscalls/linkat.S
index e0c7e5f..840061b 100644
--- a/libc/arch-x86/syscalls/linkat.S
+++ b/libc/arch-x86/syscalls/linkat.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/listen.S b/libc/arch-x86/syscalls/listen.S
index c65f970..0c2e3f2 100644
--- a/libc/arch-x86/syscalls/listen.S
+++ b/libc/arch-x86/syscalls/listen.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/listxattr.S b/libc/arch-x86/syscalls/listxattr.S
index 98a5114..fe065f2 100644
--- a/libc/arch-x86/syscalls/listxattr.S
+++ b/libc/arch-x86/syscalls/listxattr.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/llistxattr.S b/libc/arch-x86/syscalls/llistxattr.S
index a5ab636..a7f56a9 100644
--- a/libc/arch-x86/syscalls/llistxattr.S
+++ b/libc/arch-x86/syscalls/llistxattr.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/lremovexattr.S b/libc/arch-x86/syscalls/lremovexattr.S
index 508abba..795bf33 100644
--- a/libc/arch-x86/syscalls/lremovexattr.S
+++ b/libc/arch-x86/syscalls/lremovexattr.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/lseek.S b/libc/arch-x86/syscalls/lseek.S
index 5f77831..7806922 100644
--- a/libc/arch-x86/syscalls/lseek.S
+++ b/libc/arch-x86/syscalls/lseek.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/lsetxattr.S b/libc/arch-x86/syscalls/lsetxattr.S
index d878684..522f41e 100644
--- a/libc/arch-x86/syscalls/lsetxattr.S
+++ b/libc/arch-x86/syscalls/lsetxattr.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/madvise.S b/libc/arch-x86/syscalls/madvise.S
index 3e8c7fd..9e12316 100644
--- a/libc/arch-x86/syscalls/madvise.S
+++ b/libc/arch-x86/syscalls/madvise.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/mincore.S b/libc/arch-x86/syscalls/mincore.S
index 7096f6c..6dd01d3 100644
--- a/libc/arch-x86/syscalls/mincore.S
+++ b/libc/arch-x86/syscalls/mincore.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/mkdirat.S b/libc/arch-x86/syscalls/mkdirat.S
index 862a18c..54035f4 100644
--- a/libc/arch-x86/syscalls/mkdirat.S
+++ b/libc/arch-x86/syscalls/mkdirat.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/mknodat.S b/libc/arch-x86/syscalls/mknodat.S
index e03ba42..10ffd09 100644
--- a/libc/arch-x86/syscalls/mknodat.S
+++ b/libc/arch-x86/syscalls/mknodat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/mlock.S b/libc/arch-x86/syscalls/mlock.S
index f582f77..1370eae 100644
--- a/libc/arch-x86/syscalls/mlock.S
+++ b/libc/arch-x86/syscalls/mlock.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/mlockall.S b/libc/arch-x86/syscalls/mlockall.S
index becca81..97147f4 100644
--- a/libc/arch-x86/syscalls/mlockall.S
+++ b/libc/arch-x86/syscalls/mlockall.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/mount.S b/libc/arch-x86/syscalls/mount.S
index 7be2811..b4540cd 100644
--- a/libc/arch-x86/syscalls/mount.S
+++ b/libc/arch-x86/syscalls/mount.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/mprotect.S b/libc/arch-x86/syscalls/mprotect.S
index 0516c45..eba6e19 100644
--- a/libc/arch-x86/syscalls/mprotect.S
+++ b/libc/arch-x86/syscalls/mprotect.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/mremap.S b/libc/arch-x86/syscalls/mremap.S
index 42e75ce..161edd2 100644
--- a/libc/arch-x86/syscalls/mremap.S
+++ b/libc/arch-x86/syscalls/mremap.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/msync.S b/libc/arch-x86/syscalls/msync.S
index 66722f2..b956d12 100644
--- a/libc/arch-x86/syscalls/msync.S
+++ b/libc/arch-x86/syscalls/msync.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/munlock.S b/libc/arch-x86/syscalls/munlock.S
index 2fc3aa7..e210eaa 100644
--- a/libc/arch-x86/syscalls/munlock.S
+++ b/libc/arch-x86/syscalls/munlock.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/munlockall.S b/libc/arch-x86/syscalls/munlockall.S
index 1bc99ea..301b5b3 100644
--- a/libc/arch-x86/syscalls/munlockall.S
+++ b/libc/arch-x86/syscalls/munlockall.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/munmap.S b/libc/arch-x86/syscalls/munmap.S
index 878aae7..a7ef449 100644
--- a/libc/arch-x86/syscalls/munmap.S
+++ b/libc/arch-x86/syscalls/munmap.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/nanosleep.S b/libc/arch-x86/syscalls/nanosleep.S
index fe8af90..c952932 100644
--- a/libc/arch-x86/syscalls/nanosleep.S
+++ b/libc/arch-x86/syscalls/nanosleep.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/personality.S b/libc/arch-x86/syscalls/personality.S
index 8c8e0ff..2136694 100644
--- a/libc/arch-x86/syscalls/personality.S
+++ b/libc/arch-x86/syscalls/personality.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/pipe2.S b/libc/arch-x86/syscalls/pipe2.S
index 99c4e8b..80b27e0 100644
--- a/libc/arch-x86/syscalls/pipe2.S
+++ b/libc/arch-x86/syscalls/pipe2.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/prctl.S b/libc/arch-x86/syscalls/prctl.S
index 63ec899..418aedd 100644
--- a/libc/arch-x86/syscalls/prctl.S
+++ b/libc/arch-x86/syscalls/prctl.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/pread64.S b/libc/arch-x86/syscalls/pread64.S
index 6b3c8ad..115b58f 100644
--- a/libc/arch-x86/syscalls/pread64.S
+++ b/libc/arch-x86/syscalls/pread64.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/prlimit64.S b/libc/arch-x86/syscalls/prlimit64.S
index 6aa875f..567667b 100644
--- a/libc/arch-x86/syscalls/prlimit64.S
+++ b/libc/arch-x86/syscalls/prlimit64.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/pwrite64.S b/libc/arch-x86/syscalls/pwrite64.S
index 7d53095..cc27b5e 100644
--- a/libc/arch-x86/syscalls/pwrite64.S
+++ b/libc/arch-x86/syscalls/pwrite64.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/read.S b/libc/arch-x86/syscalls/read.S
index 9814c8f..976ba83 100644
--- a/libc/arch-x86/syscalls/read.S
+++ b/libc/arch-x86/syscalls/read.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/readahead.S b/libc/arch-x86/syscalls/readahead.S
index 49a17d0..0849de6 100644
--- a/libc/arch-x86/syscalls/readahead.S
+++ b/libc/arch-x86/syscalls/readahead.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/readlinkat.S b/libc/arch-x86/syscalls/readlinkat.S
index 1a161c0..0d46748 100644
--- a/libc/arch-x86/syscalls/readlinkat.S
+++ b/libc/arch-x86/syscalls/readlinkat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/readv.S b/libc/arch-x86/syscalls/readv.S
index 8b5ff41..18d6e22 100644
--- a/libc/arch-x86/syscalls/readv.S
+++ b/libc/arch-x86/syscalls/readv.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/recvfrom.S b/libc/arch-x86/syscalls/recvfrom.S
index 53d08f6..a566a4a 100644
--- a/libc/arch-x86/syscalls/recvfrom.S
+++ b/libc/arch-x86/syscalls/recvfrom.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/recvmmsg.S b/libc/arch-x86/syscalls/recvmmsg.S
index 3ef8740..a357acf 100644
--- a/libc/arch-x86/syscalls/recvmmsg.S
+++ b/libc/arch-x86/syscalls/recvmmsg.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/recvmsg.S b/libc/arch-x86/syscalls/recvmsg.S
index 150672d..fdb5411 100644
--- a/libc/arch-x86/syscalls/recvmsg.S
+++ b/libc/arch-x86/syscalls/recvmsg.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/removexattr.S b/libc/arch-x86/syscalls/removexattr.S
index e7c55eb..4dfca79 100644
--- a/libc/arch-x86/syscalls/removexattr.S
+++ b/libc/arch-x86/syscalls/removexattr.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/renameat.S b/libc/arch-x86/syscalls/renameat.S
index 5dfe65f..69b447b 100644
--- a/libc/arch-x86/syscalls/renameat.S
+++ b/libc/arch-x86/syscalls/renameat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/sched_get_priority_max.S b/libc/arch-x86/syscalls/sched_get_priority_max.S
index d8debe2..a5e938d 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_max.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_max.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/sched_get_priority_min.S b/libc/arch-x86/syscalls/sched_get_priority_min.S
index e9689fa..ba87182 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_min.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_min.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/sched_getparam.S b/libc/arch-x86/syscalls/sched_getparam.S
index 6b5e7c8..c978058 100644
--- a/libc/arch-x86/syscalls/sched_getparam.S
+++ b/libc/arch-x86/syscalls/sched_getparam.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sched_getscheduler.S b/libc/arch-x86/syscalls/sched_getscheduler.S
index a2c5746..8114792 100644
--- a/libc/arch-x86/syscalls/sched_getscheduler.S
+++ b/libc/arch-x86/syscalls/sched_getscheduler.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/sched_rr_get_interval.S b/libc/arch-x86/syscalls/sched_rr_get_interval.S
index f8012f3..8f3c698 100644
--- a/libc/arch-x86/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-x86/syscalls/sched_rr_get_interval.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sched_setaffinity.S b/libc/arch-x86/syscalls/sched_setaffinity.S
index 76013f9..725e5db 100644
--- a/libc/arch-x86/syscalls/sched_setaffinity.S
+++ b/libc/arch-x86/syscalls/sched_setaffinity.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/sched_setparam.S b/libc/arch-x86/syscalls/sched_setparam.S
index aca4bd9..29db8b9 100644
--- a/libc/arch-x86/syscalls/sched_setparam.S
+++ b/libc/arch-x86/syscalls/sched_setparam.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sched_setscheduler.S b/libc/arch-x86/syscalls/sched_setscheduler.S
index fad72c6..96f7661 100644
--- a/libc/arch-x86/syscalls/sched_setscheduler.S
+++ b/libc/arch-x86/syscalls/sched_setscheduler.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/sched_yield.S b/libc/arch-x86/syscalls/sched_yield.S
index 8b4a9be..b08e9a5 100644
--- a/libc/arch-x86/syscalls/sched_yield.S
+++ b/libc/arch-x86/syscalls/sched_yield.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/sendfile.S b/libc/arch-x86/syscalls/sendfile.S
index 7bd86d0..b20b868 100644
--- a/libc/arch-x86/syscalls/sendfile.S
+++ b/libc/arch-x86/syscalls/sendfile.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/sendfile64.S b/libc/arch-x86/syscalls/sendfile64.S
index bd76043..a818e59 100644
--- a/libc/arch-x86/syscalls/sendfile64.S
+++ b/libc/arch-x86/syscalls/sendfile64.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/sendmmsg.S b/libc/arch-x86/syscalls/sendmmsg.S
index 4bc3c40..51ead98 100644
--- a/libc/arch-x86/syscalls/sendmmsg.S
+++ b/libc/arch-x86/syscalls/sendmmsg.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sendmsg.S b/libc/arch-x86/syscalls/sendmsg.S
index eb8fc63..f9653b8 100644
--- a/libc/arch-x86/syscalls/sendmsg.S
+++ b/libc/arch-x86/syscalls/sendmsg.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sendto.S b/libc/arch-x86/syscalls/sendto.S
index 8cb72c8..84af308 100644
--- a/libc/arch-x86/syscalls/sendto.S
+++ b/libc/arch-x86/syscalls/sendto.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setfsgid.S b/libc/arch-x86/syscalls/setfsgid.S
index fa7a5c5..a6dd79d 100644
--- a/libc/arch-x86/syscalls/setfsgid.S
+++ b/libc/arch-x86/syscalls/setfsgid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/setfsuid.S b/libc/arch-x86/syscalls/setfsuid.S
index 5856a16..2c148fb 100644
--- a/libc/arch-x86/syscalls/setfsuid.S
+++ b/libc/arch-x86/syscalls/setfsuid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/setgid.S b/libc/arch-x86/syscalls/setgid.S
index baa1b1a..735dd8f 100644
--- a/libc/arch-x86/syscalls/setgid.S
+++ b/libc/arch-x86/syscalls/setgid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/setgroups.S b/libc/arch-x86/syscalls/setgroups.S
index 364aaad..382286d 100644
--- a/libc/arch-x86/syscalls/setgroups.S
+++ b/libc/arch-x86/syscalls/setgroups.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setitimer.S b/libc/arch-x86/syscalls/setitimer.S
index 409c4c6..4c9dff6 100644
--- a/libc/arch-x86/syscalls/setitimer.S
+++ b/libc/arch-x86/syscalls/setitimer.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/setns.S b/libc/arch-x86/syscalls/setns.S
index ddbe758..03e4206 100644
--- a/libc/arch-x86/syscalls/setns.S
+++ b/libc/arch-x86/syscalls/setns.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setpgid.S b/libc/arch-x86/syscalls/setpgid.S
index ac1b12d..b0a3268 100644
--- a/libc/arch-x86/syscalls/setpgid.S
+++ b/libc/arch-x86/syscalls/setpgid.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setpriority.S b/libc/arch-x86/syscalls/setpriority.S
index 93c1e07..f54d478 100644
--- a/libc/arch-x86/syscalls/setpriority.S
+++ b/libc/arch-x86/syscalls/setpriority.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/setregid.S b/libc/arch-x86/syscalls/setregid.S
index 0ecfa9a..5e0fdf2 100644
--- a/libc/arch-x86/syscalls/setregid.S
+++ b/libc/arch-x86/syscalls/setregid.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setresgid.S b/libc/arch-x86/syscalls/setresgid.S
index a6914c4..286776f 100644
--- a/libc/arch-x86/syscalls/setresgid.S
+++ b/libc/arch-x86/syscalls/setresgid.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/setresuid.S b/libc/arch-x86/syscalls/setresuid.S
index c33c1ca..8cd75dc 100644
--- a/libc/arch-x86/syscalls/setresuid.S
+++ b/libc/arch-x86/syscalls/setresuid.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/setreuid.S b/libc/arch-x86/syscalls/setreuid.S
index 4244988..fa4e792 100644
--- a/libc/arch-x86/syscalls/setreuid.S
+++ b/libc/arch-x86/syscalls/setreuid.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setrlimit.S b/libc/arch-x86/syscalls/setrlimit.S
index 3e86504..7ba17d0 100644
--- a/libc/arch-x86/syscalls/setrlimit.S
+++ b/libc/arch-x86/syscalls/setrlimit.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setsid.S b/libc/arch-x86/syscalls/setsid.S
index 398c110..c76001d 100644
--- a/libc/arch-x86/syscalls/setsid.S
+++ b/libc/arch-x86/syscalls/setsid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     ret
diff --git a/libc/arch-x86/syscalls/setsockopt.S b/libc/arch-x86/syscalls/setsockopt.S
index 6ef168f..ad65c40 100644
--- a/libc/arch-x86/syscalls/setsockopt.S
+++ b/libc/arch-x86/syscalls/setsockopt.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/settimeofday.S b/libc/arch-x86/syscalls/settimeofday.S
index 37e11c5..518b3ab 100644
--- a/libc/arch-x86/syscalls/settimeofday.S
+++ b/libc/arch-x86/syscalls/settimeofday.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/setuid.S b/libc/arch-x86/syscalls/setuid.S
index fcea66d..45747ff 100644
--- a/libc/arch-x86/syscalls/setuid.S
+++ b/libc/arch-x86/syscalls/setuid.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/setxattr.S b/libc/arch-x86/syscalls/setxattr.S
index d6473cd..00d3a14 100644
--- a/libc/arch-x86/syscalls/setxattr.S
+++ b/libc/arch-x86/syscalls/setxattr.S
@@ -29,7 +29,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edi
diff --git a/libc/arch-x86/syscalls/shutdown.S b/libc/arch-x86/syscalls/shutdown.S
index 32fa17a..7d81792 100644
--- a/libc/arch-x86/syscalls/shutdown.S
+++ b/libc/arch-x86/syscalls/shutdown.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/sigaltstack.S b/libc/arch-x86/syscalls/sigaltstack.S
index 6882a78..e9ccf35 100644
--- a/libc/arch-x86/syscalls/sigaltstack.S
+++ b/libc/arch-x86/syscalls/sigaltstack.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/socketpair.S b/libc/arch-x86/syscalls/socketpair.S
index 945faa0..60a95d8 100644
--- a/libc/arch-x86/syscalls/socketpair.S
+++ b/libc/arch-x86/syscalls/socketpair.S
@@ -18,7 +18,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/splice.S b/libc/arch-x86/syscalls/splice.S
index 46e2312..f57e3f0 100644
--- a/libc/arch-x86/syscalls/splice.S
+++ b/libc/arch-x86/syscalls/splice.S
@@ -33,7 +33,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebp
diff --git a/libc/arch-x86/syscalls/swapoff.S b/libc/arch-x86/syscalls/swapoff.S
index 0e21033..1a5b67c 100644
--- a/libc/arch-x86/syscalls/swapoff.S
+++ b/libc/arch-x86/syscalls/swapoff.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/swapon.S b/libc/arch-x86/syscalls/swapon.S
index a4d5e03..987e8da 100644
--- a/libc/arch-x86/syscalls/swapon.S
+++ b/libc/arch-x86/syscalls/swapon.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/symlinkat.S b/libc/arch-x86/syscalls/symlinkat.S
index 618f5d8..1d93f08 100644
--- a/libc/arch-x86/syscalls/symlinkat.S
+++ b/libc/arch-x86/syscalls/symlinkat.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/sync.S b/libc/arch-x86/syscalls/sync.S
index a1f1782..532856d 100644
--- a/libc/arch-x86/syscalls/sync.S
+++ b/libc/arch-x86/syscalls/sync.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/sysinfo.S b/libc/arch-x86/syscalls/sysinfo.S
index c3eabb0..efe8d6e 100644
--- a/libc/arch-x86/syscalls/sysinfo.S
+++ b/libc/arch-x86/syscalls/sysinfo.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/tee.S b/libc/arch-x86/syscalls/tee.S
index 9422660..3ce5c84 100644
--- a/libc/arch-x86/syscalls/tee.S
+++ b/libc/arch-x86/syscalls/tee.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/tgkill.S b/libc/arch-x86/syscalls/tgkill.S
index 385827b..9584992 100644
--- a/libc/arch-x86/syscalls/tgkill.S
+++ b/libc/arch-x86/syscalls/tgkill.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/timerfd_create.S b/libc/arch-x86/syscalls/timerfd_create.S
index 343195e..aba3403 100644
--- a/libc/arch-x86/syscalls/timerfd_create.S
+++ b/libc/arch-x86/syscalls/timerfd_create.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/timerfd_gettime.S b/libc/arch-x86/syscalls/timerfd_gettime.S
index 9b3a314..18ed8d5 100644
--- a/libc/arch-x86/syscalls/timerfd_gettime.S
+++ b/libc/arch-x86/syscalls/timerfd_gettime.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/timerfd_settime.S b/libc/arch-x86/syscalls/timerfd_settime.S
index 819b723..e246c17 100644
--- a/libc/arch-x86/syscalls/timerfd_settime.S
+++ b/libc/arch-x86/syscalls/timerfd_settime.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/times.S b/libc/arch-x86/syscalls/times.S
index f5739d3..c25ad9b 100644
--- a/libc/arch-x86/syscalls/times.S
+++ b/libc/arch-x86/syscalls/times.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/truncate.S b/libc/arch-x86/syscalls/truncate.S
index 427f95f..9f77cf9 100644
--- a/libc/arch-x86/syscalls/truncate.S
+++ b/libc/arch-x86/syscalls/truncate.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/truncate64.S b/libc/arch-x86/syscalls/truncate64.S
index 2c49751..8f67b80 100644
--- a/libc/arch-x86/syscalls/truncate64.S
+++ b/libc/arch-x86/syscalls/truncate64.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/umask.S b/libc/arch-x86/syscalls/umask.S
index 3affc8d..8935d22 100644
--- a/libc/arch-x86/syscalls/umask.S
+++ b/libc/arch-x86/syscalls/umask.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/umount2.S b/libc/arch-x86/syscalls/umount2.S
index d2b3549..d5cc95c 100644
--- a/libc/arch-x86/syscalls/umount2.S
+++ b/libc/arch-x86/syscalls/umount2.S
@@ -17,7 +17,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ecx
diff --git a/libc/arch-x86/syscalls/uname.S b/libc/arch-x86/syscalls/uname.S
index e996805..8ab1165 100644
--- a/libc/arch-x86/syscalls/uname.S
+++ b/libc/arch-x86/syscalls/uname.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/unlinkat.S b/libc/arch-x86/syscalls/unlinkat.S
index 6417d2b..eb5a5cd 100644
--- a/libc/arch-x86/syscalls/unlinkat.S
+++ b/libc/arch-x86/syscalls/unlinkat.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/unshare.S b/libc/arch-x86/syscalls/unshare.S
index a289d4d..ed25f88 100644
--- a/libc/arch-x86/syscalls/unshare.S
+++ b/libc/arch-x86/syscalls/unshare.S
@@ -13,7 +13,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %ebx
diff --git a/libc/arch-x86/syscalls/utimensat.S b/libc/arch-x86/syscalls/utimensat.S
index d8c9080..89811f7 100644
--- a/libc/arch-x86/syscalls/utimensat.S
+++ b/libc/arch-x86/syscalls/utimensat.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/vmsplice.S b/libc/arch-x86/syscalls/vmsplice.S
index 2afba60..3ca81e7 100644
--- a/libc/arch-x86/syscalls/vmsplice.S
+++ b/libc/arch-x86/syscalls/vmsplice.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/wait4.S b/libc/arch-x86/syscalls/wait4.S
index fda75c0..4013818 100644
--- a/libc/arch-x86/syscalls/wait4.S
+++ b/libc/arch-x86/syscalls/wait4.S
@@ -25,7 +25,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %esi
diff --git a/libc/arch-x86/syscalls/write.S b/libc/arch-x86/syscalls/write.S
index 115974e..274ad5e 100644
--- a/libc/arch-x86/syscalls/write.S
+++ b/libc/arch-x86/syscalls/write.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/syscalls/writev.S b/libc/arch-x86/syscalls/writev.S
index 77e5cd1..40a2c79 100644
--- a/libc/arch-x86/syscalls/writev.S
+++ b/libc/arch-x86/syscalls/writev.S
@@ -21,7 +21,7 @@
     jb      1f
     negl    %eax
     pushl   %eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %esp
 1:
     popl    %edx
diff --git a/libc/arch-x86/x86.mk b/libc/arch-x86/x86.mk
index 8aa2645..019dc8e 100644
--- a/libc/arch-x86/x86.mk
+++ b/libc/arch-x86/x86.mk
@@ -31,6 +31,7 @@
     arch-x86/bionic/__set_tls.c \
     arch-x86/bionic/sigsetjmp.S \
     arch-x86/bionic/syscall.S \
+    arch-x86/bionic/vfork.S \
 
 ## ARCH variant specific source files
 arch_variant_mk := $(LOCAL_PATH)/arch-x86/$(TARGET_ARCH_VARIANT)/$(TARGET_ARCH_VARIANT).mk
diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S
index c81b573..f356877 100644
--- a/libc/arch-x86_64/bionic/setjmp.S
+++ b/libc/arch-x86_64/bionic/setjmp.S
@@ -52,11 +52,7 @@
 ENTRY(setjmp)
 	pushq	%rdi
 	xorq	%rdi,%rdi
-#ifdef __PIC__
 	call	PIC_PLT(sigblock)
-#else
-	call	sigblock
-#endif
 	popq	%rdi
 	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 
@@ -80,11 +76,7 @@
 
 	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
 	pushq	%r8
-#ifdef __PIC__
 	call	PIC_PLT(sigsetmask)
-#else
-	call	sigsetmask
-#endif
 	popq	%r8
 	movq	(_JB_RBX * 8)(%r12),%rbx
 	movq	(_JB_RBP * 8)(%r12),%rbp
diff --git a/libc/arch-x86_64/bionic/sigsetjmp.S b/libc/arch-x86_64/bionic/sigsetjmp.S
index 718743f..571fea3 100644
--- a/libc/arch-x86_64/bionic/sigsetjmp.S
+++ b/libc/arch-x86_64/bionic/sigsetjmp.S
@@ -57,11 +57,7 @@
 
 	pushq	%rdi
 	xorq	%rdi,%rdi
-#ifdef __PIC__
 	call	PIC_PLT(sigblock)
-#else
-	call	sigblock
-#endif
 	popq	%rdi
 	movq	%rax,(_JB_SIGMASK * 8)(%rdi)
 
@@ -86,11 +82,7 @@
 	jz      2f
 
 	movq	(_JB_SIGMASK * 8)(%rdi),%rdi
-#ifdef __PIC__
 	call	PIC_PLT(sigsetmask)
-#else
-	call	sigsetmask
-#endif
 2:	popq	%rax
 	movq	(_JB_RBX * 8)(%r12),%rbx
 	movq	(_JB_RBP * 8)(%r12),%rbp
diff --git a/libc/bionic/vfork.cpp b/libc/arch-x86_64/bionic/vfork.S
similarity index 75%
copy from libc/bionic/vfork.cpp
copy to libc/arch-x86_64/bionic/vfork.S
index b706a7f..7c14cc0 100644
--- a/libc/bionic/vfork.cpp
+++ b/libc/arch-x86_64/bionic/vfork.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2013 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,20 @@
  * SUCH DAMAGE.
  */
 
-#include <unistd.h>
+#include <private/bionic_asm.h>
 
-// vfork(2) was removed from POSIX 2008, but it's common enough that we can't
-// actually remove it entirely.
-extern "C" pid_t vfork(void) {
-  return fork();
-}
+// This custom code preserves the return address across the system call.
+
+ENTRY(vfork)
+  popq    %rdi  // Grab the return address.
+  movl    $__NR_vfork, %eax
+  syscall
+  pushq   %rdi  // Restore the return address.
+  cmpq    $-MAX_ERRNO, %rax
+  jb      1f
+  negl    %eax
+  movl    %eax, %edi
+  call    __set_errno
+1:
+  ret
+END(vfork)
diff --git a/libc/arch-x86_64/include/machine/asm.h b/libc/arch-x86_64/include/machine/asm.h
index 0af6dae..06da39a 100644
--- a/libc/arch-x86_64/include/machine/asm.h
+++ b/libc/arch-x86_64/include/machine/asm.h
@@ -37,13 +37,8 @@
 #ifndef _AMD64_ASM_H_
 #define _AMD64_ASM_H_
 
-#ifdef __PIC__
 #define PIC_PLT(x)	x@PLT
 #define PIC_GOT(x)	x@GOTPCREL(%rip)
-#else
-#define PIC_PLT(x)	x
-#define PIC_GOT(x)	x
-#endif
 
 /* let kernels and others override entrypoint alignment */
 #ifndef _ALIGN_TEXT
diff --git a/libc/arch-x86_64/syscalls/__accept4.S b/libc/arch-x86_64/syscalls/__accept4.S
index 375a78b..c566b83 100644
--- a/libc/arch-x86_64/syscalls/__accept4.S
+++ b/libc/arch-x86_64/syscalls/__accept4.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__accept4)
diff --git a/libc/arch-x86_64/syscalls/__arch_prctl.S b/libc/arch-x86_64/syscalls/__arch_prctl.S
index 6c72a6c..5990ad1 100644
--- a/libc/arch-x86_64/syscalls/__arch_prctl.S
+++ b/libc/arch-x86_64/syscalls/__arch_prctl.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__arch_prctl)
diff --git a/libc/arch-x86_64/syscalls/__brk.S b/libc/arch-x86_64/syscalls/__brk.S
index 18ebc10..61c41d4 100644
--- a/libc/arch-x86_64/syscalls/__brk.S
+++ b/libc/arch-x86_64/syscalls/__brk.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__brk)
diff --git a/libc/arch-x86_64/syscalls/__clock_gettime.S b/libc/arch-x86_64/syscalls/__clock_gettime.S
index 7e553b8..1088bac 100644
--- a/libc/arch-x86_64/syscalls/__clock_gettime.S
+++ b/libc/arch-x86_64/syscalls/__clock_gettime.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__clock_gettime)
diff --git a/libc/arch-x86_64/syscalls/__connect.S b/libc/arch-x86_64/syscalls/__connect.S
index a7d2e93..08600a2 100644
--- a/libc/arch-x86_64/syscalls/__connect.S
+++ b/libc/arch-x86_64/syscalls/__connect.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__connect)
diff --git a/libc/arch-x86_64/syscalls/__epoll_pwait.S b/libc/arch-x86_64/syscalls/__epoll_pwait.S
index 4271b53..b2de8a3 100644
--- a/libc/arch-x86_64/syscalls/__epoll_pwait.S
+++ b/libc/arch-x86_64/syscalls/__epoll_pwait.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__epoll_pwait)
diff --git a/libc/arch-x86_64/syscalls/__exit.S b/libc/arch-x86_64/syscalls/__exit.S
index bcbaffc..38957db 100644
--- a/libc/arch-x86_64/syscalls/__exit.S
+++ b/libc/arch-x86_64/syscalls/__exit.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__exit)
diff --git a/libc/arch-x86_64/syscalls/__getcpu.S b/libc/arch-x86_64/syscalls/__getcpu.S
index c25f294..3c4a868 100644
--- a/libc/arch-x86_64/syscalls/__getcpu.S
+++ b/libc/arch-x86_64/syscalls/__getcpu.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__getcpu)
diff --git a/libc/arch-x86_64/syscalls/__getcwd.S b/libc/arch-x86_64/syscalls/__getcwd.S
index 1743838..046e4de 100644
--- a/libc/arch-x86_64/syscalls/__getcwd.S
+++ b/libc/arch-x86_64/syscalls/__getcwd.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__getcwd)
diff --git a/libc/arch-x86_64/syscalls/__getdents64.S b/libc/arch-x86_64/syscalls/__getdents64.S
index 64f82fd..f94863f 100644
--- a/libc/arch-x86_64/syscalls/__getdents64.S
+++ b/libc/arch-x86_64/syscalls/__getdents64.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__getdents64)
diff --git a/libc/arch-x86_64/syscalls/__getpid.S b/libc/arch-x86_64/syscalls/__getpid.S
index bd1bf1e..69e3c5c 100644
--- a/libc/arch-x86_64/syscalls/__getpid.S
+++ b/libc/arch-x86_64/syscalls/__getpid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__getpid)
diff --git a/libc/arch-x86_64/syscalls/__getpriority.S b/libc/arch-x86_64/syscalls/__getpriority.S
index 349f574..8a9b109 100644
--- a/libc/arch-x86_64/syscalls/__getpriority.S
+++ b/libc/arch-x86_64/syscalls/__getpriority.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__getpriority)
diff --git a/libc/arch-x86_64/syscalls/__gettimeofday.S b/libc/arch-x86_64/syscalls/__gettimeofday.S
index a38eb64..3a6124a 100644
--- a/libc/arch-x86_64/syscalls/__gettimeofday.S
+++ b/libc/arch-x86_64/syscalls/__gettimeofday.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__gettimeofday)
diff --git a/libc/arch-x86_64/syscalls/__ioctl.S b/libc/arch-x86_64/syscalls/__ioctl.S
index 2775911..240a121 100644
--- a/libc/arch-x86_64/syscalls/__ioctl.S
+++ b/libc/arch-x86_64/syscalls/__ioctl.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__ioctl)
diff --git a/libc/arch-x86_64/syscalls/__openat.S b/libc/arch-x86_64/syscalls/__openat.S
index dce4c7c..d0762d7 100644
--- a/libc/arch-x86_64/syscalls/__openat.S
+++ b/libc/arch-x86_64/syscalls/__openat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__openat)
diff --git a/libc/arch-x86_64/syscalls/__ppoll.S b/libc/arch-x86_64/syscalls/__ppoll.S
index 31ba7e9..439a000 100644
--- a/libc/arch-x86_64/syscalls/__ppoll.S
+++ b/libc/arch-x86_64/syscalls/__ppoll.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__ppoll)
diff --git a/libc/arch-x86_64/syscalls/__pselect6.S b/libc/arch-x86_64/syscalls/__pselect6.S
index a212c4e..c178003 100644
--- a/libc/arch-x86_64/syscalls/__pselect6.S
+++ b/libc/arch-x86_64/syscalls/__pselect6.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__pselect6)
diff --git a/libc/arch-x86_64/syscalls/__ptrace.S b/libc/arch-x86_64/syscalls/__ptrace.S
index 0a64fee..ea88847 100644
--- a/libc/arch-x86_64/syscalls/__ptrace.S
+++ b/libc/arch-x86_64/syscalls/__ptrace.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__ptrace)
diff --git a/libc/arch-x86_64/syscalls/__reboot.S b/libc/arch-x86_64/syscalls/__reboot.S
index 398d078..ef4ecfb 100644
--- a/libc/arch-x86_64/syscalls/__reboot.S
+++ b/libc/arch-x86_64/syscalls/__reboot.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__reboot)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigaction.S b/libc/arch-x86_64/syscalls/__rt_sigaction.S
index f146b02..55aaa18 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigaction.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigaction.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__rt_sigaction)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigpending.S b/libc/arch-x86_64/syscalls/__rt_sigpending.S
index 9d1698b..48b29fc 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigpending.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigpending.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__rt_sigpending)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigprocmask.S b/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
index 1ac9b81..43cd53e 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__rt_sigprocmask)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigsuspend.S b/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
index 1059f0b..0a69aaf 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__rt_sigsuspend)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S b/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
index de2e4cb..88a5258 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__rt_sigtimedwait)
diff --git a/libc/arch-x86_64/syscalls/__sched_getaffinity.S b/libc/arch-x86_64/syscalls/__sched_getaffinity.S
index 410954c..194f527 100644
--- a/libc/arch-x86_64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-x86_64/syscalls/__sched_getaffinity.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__sched_getaffinity)
diff --git a/libc/arch-x86_64/syscalls/__set_tid_address.S b/libc/arch-x86_64/syscalls/__set_tid_address.S
index c59c8b8..193dfb7 100644
--- a/libc/arch-x86_64/syscalls/__set_tid_address.S
+++ b/libc/arch-x86_64/syscalls/__set_tid_address.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__set_tid_address)
diff --git a/libc/arch-x86_64/syscalls/__signalfd4.S b/libc/arch-x86_64/syscalls/__signalfd4.S
index 6ddcf5a..6becc9f 100644
--- a/libc/arch-x86_64/syscalls/__signalfd4.S
+++ b/libc/arch-x86_64/syscalls/__signalfd4.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__signalfd4)
diff --git a/libc/arch-x86_64/syscalls/__socket.S b/libc/arch-x86_64/syscalls/__socket.S
index 209e329..e1a2df9 100644
--- a/libc/arch-x86_64/syscalls/__socket.S
+++ b/libc/arch-x86_64/syscalls/__socket.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__socket)
diff --git a/libc/arch-x86_64/syscalls/__timer_create.S b/libc/arch-x86_64/syscalls/__timer_create.S
index 3450d2b..8e4a4be 100644
--- a/libc/arch-x86_64/syscalls/__timer_create.S
+++ b/libc/arch-x86_64/syscalls/__timer_create.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__timer_create)
diff --git a/libc/arch-x86_64/syscalls/__timer_delete.S b/libc/arch-x86_64/syscalls/__timer_delete.S
index fd60a16..5e93a02 100644
--- a/libc/arch-x86_64/syscalls/__timer_delete.S
+++ b/libc/arch-x86_64/syscalls/__timer_delete.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__timer_delete)
diff --git a/libc/arch-x86_64/syscalls/__timer_getoverrun.S b/libc/arch-x86_64/syscalls/__timer_getoverrun.S
index f5309a3..d17edac 100644
--- a/libc/arch-x86_64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-x86_64/syscalls/__timer_getoverrun.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__timer_getoverrun)
diff --git a/libc/arch-x86_64/syscalls/__timer_gettime.S b/libc/arch-x86_64/syscalls/__timer_gettime.S
index 7e2bc92..6c50bf0 100644
--- a/libc/arch-x86_64/syscalls/__timer_gettime.S
+++ b/libc/arch-x86_64/syscalls/__timer_gettime.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__timer_gettime)
diff --git a/libc/arch-x86_64/syscalls/__timer_settime.S b/libc/arch-x86_64/syscalls/__timer_settime.S
index f5401a0..e57cc94 100644
--- a/libc/arch-x86_64/syscalls/__timer_settime.S
+++ b/libc/arch-x86_64/syscalls/__timer_settime.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__timer_settime)
diff --git a/libc/arch-x86_64/syscalls/__waitid.S b/libc/arch-x86_64/syscalls/__waitid.S
index 229f20c..e34ab53 100644
--- a/libc/arch-x86_64/syscalls/__waitid.S
+++ b/libc/arch-x86_64/syscalls/__waitid.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(__waitid)
diff --git a/libc/arch-x86_64/syscalls/_exit.S b/libc/arch-x86_64/syscalls/_exit.S
index 9c80f00..2ad61c0 100644
--- a/libc/arch-x86_64/syscalls/_exit.S
+++ b/libc/arch-x86_64/syscalls/_exit.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(_exit)
diff --git a/libc/arch-x86_64/syscalls/acct.S b/libc/arch-x86_64/syscalls/acct.S
index 91ecf5b..221a1bf 100644
--- a/libc/arch-x86_64/syscalls/acct.S
+++ b/libc/arch-x86_64/syscalls/acct.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(acct)
diff --git a/libc/arch-x86_64/syscalls/bind.S b/libc/arch-x86_64/syscalls/bind.S
index 5d426cb..223ec8c 100644
--- a/libc/arch-x86_64/syscalls/bind.S
+++ b/libc/arch-x86_64/syscalls/bind.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(bind)
diff --git a/libc/arch-x86_64/syscalls/capget.S b/libc/arch-x86_64/syscalls/capget.S
index d3d151e..1c8eb8c 100644
--- a/libc/arch-x86_64/syscalls/capget.S
+++ b/libc/arch-x86_64/syscalls/capget.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(capget)
diff --git a/libc/arch-x86_64/syscalls/capset.S b/libc/arch-x86_64/syscalls/capset.S
index 421f156..b7356de 100644
--- a/libc/arch-x86_64/syscalls/capset.S
+++ b/libc/arch-x86_64/syscalls/capset.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(capset)
diff --git a/libc/arch-x86_64/syscalls/chdir.S b/libc/arch-x86_64/syscalls/chdir.S
index 7a6f651..6735af6 100644
--- a/libc/arch-x86_64/syscalls/chdir.S
+++ b/libc/arch-x86_64/syscalls/chdir.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(chdir)
diff --git a/libc/arch-x86_64/syscalls/chroot.S b/libc/arch-x86_64/syscalls/chroot.S
index 0f53fd9..95bec09 100644
--- a/libc/arch-x86_64/syscalls/chroot.S
+++ b/libc/arch-x86_64/syscalls/chroot.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(chroot)
diff --git a/libc/arch-x86_64/syscalls/clock_getres.S b/libc/arch-x86_64/syscalls/clock_getres.S
index bad0d78..c89c9ba 100644
--- a/libc/arch-x86_64/syscalls/clock_getres.S
+++ b/libc/arch-x86_64/syscalls/clock_getres.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(clock_getres)
diff --git a/libc/arch-x86_64/syscalls/clock_nanosleep.S b/libc/arch-x86_64/syscalls/clock_nanosleep.S
index 2ef0d05..4cd3dfe 100644
--- a/libc/arch-x86_64/syscalls/clock_nanosleep.S
+++ b/libc/arch-x86_64/syscalls/clock_nanosleep.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(clock_nanosleep)
diff --git a/libc/arch-x86_64/syscalls/clock_settime.S b/libc/arch-x86_64/syscalls/clock_settime.S
index 6a3b75b..49084ec 100644
--- a/libc/arch-x86_64/syscalls/clock_settime.S
+++ b/libc/arch-x86_64/syscalls/clock_settime.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(clock_settime)
diff --git a/libc/arch-x86_64/syscalls/close.S b/libc/arch-x86_64/syscalls/close.S
index 41c8403..c7e32f3 100644
--- a/libc/arch-x86_64/syscalls/close.S
+++ b/libc/arch-x86_64/syscalls/close.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(close)
diff --git a/libc/arch-x86_64/syscalls/delete_module.S b/libc/arch-x86_64/syscalls/delete_module.S
index d3f3862..ea6684d 100644
--- a/libc/arch-x86_64/syscalls/delete_module.S
+++ b/libc/arch-x86_64/syscalls/delete_module.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(delete_module)
diff --git a/libc/arch-x86_64/syscalls/dup.S b/libc/arch-x86_64/syscalls/dup.S
index bf2ca51..e4e9406 100644
--- a/libc/arch-x86_64/syscalls/dup.S
+++ b/libc/arch-x86_64/syscalls/dup.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(dup)
diff --git a/libc/arch-x86_64/syscalls/dup3.S b/libc/arch-x86_64/syscalls/dup3.S
index f5c929c..63c20b9 100644
--- a/libc/arch-x86_64/syscalls/dup3.S
+++ b/libc/arch-x86_64/syscalls/dup3.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(dup3)
diff --git a/libc/arch-x86_64/syscalls/epoll_create1.S b/libc/arch-x86_64/syscalls/epoll_create1.S
index 196a3c7..4eaf0ff 100644
--- a/libc/arch-x86_64/syscalls/epoll_create1.S
+++ b/libc/arch-x86_64/syscalls/epoll_create1.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(epoll_create1)
diff --git a/libc/arch-x86_64/syscalls/epoll_ctl.S b/libc/arch-x86_64/syscalls/epoll_ctl.S
index 2a3517c..7903223 100644
--- a/libc/arch-x86_64/syscalls/epoll_ctl.S
+++ b/libc/arch-x86_64/syscalls/epoll_ctl.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(epoll_ctl)
diff --git a/libc/arch-x86_64/syscalls/eventfd.S b/libc/arch-x86_64/syscalls/eventfd.S
index 3ed4baf..10d8b85 100644
--- a/libc/arch-x86_64/syscalls/eventfd.S
+++ b/libc/arch-x86_64/syscalls/eventfd.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(eventfd)
diff --git a/libc/arch-x86_64/syscalls/execve.S b/libc/arch-x86_64/syscalls/execve.S
index 1fe29c7..218329c 100644
--- a/libc/arch-x86_64/syscalls/execve.S
+++ b/libc/arch-x86_64/syscalls/execve.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(execve)
diff --git a/libc/arch-x86_64/syscalls/faccessat.S b/libc/arch-x86_64/syscalls/faccessat.S
index 3ea905c..dd908e3 100644
--- a/libc/arch-x86_64/syscalls/faccessat.S
+++ b/libc/arch-x86_64/syscalls/faccessat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(faccessat)
diff --git a/libc/arch-x86_64/syscalls/fallocate.S b/libc/arch-x86_64/syscalls/fallocate.S
index abaa303..4997f02 100644
--- a/libc/arch-x86_64/syscalls/fallocate.S
+++ b/libc/arch-x86_64/syscalls/fallocate.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fallocate)
diff --git a/libc/arch-x86_64/syscalls/fchdir.S b/libc/arch-x86_64/syscalls/fchdir.S
index b01bb57..6bb4929 100644
--- a/libc/arch-x86_64/syscalls/fchdir.S
+++ b/libc/arch-x86_64/syscalls/fchdir.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fchdir)
diff --git a/libc/arch-x86_64/syscalls/fchmod.S b/libc/arch-x86_64/syscalls/fchmod.S
index 868638f..899d796 100644
--- a/libc/arch-x86_64/syscalls/fchmod.S
+++ b/libc/arch-x86_64/syscalls/fchmod.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fchmod)
diff --git a/libc/arch-x86_64/syscalls/fchmodat.S b/libc/arch-x86_64/syscalls/fchmodat.S
index e045a13..588fa1d 100644
--- a/libc/arch-x86_64/syscalls/fchmodat.S
+++ b/libc/arch-x86_64/syscalls/fchmodat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fchmodat)
diff --git a/libc/arch-x86_64/syscalls/fchown.S b/libc/arch-x86_64/syscalls/fchown.S
index 9ba775b..80c0283 100644
--- a/libc/arch-x86_64/syscalls/fchown.S
+++ b/libc/arch-x86_64/syscalls/fchown.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fchown)
diff --git a/libc/arch-x86_64/syscalls/fchownat.S b/libc/arch-x86_64/syscalls/fchownat.S
index 7789d2d..74853b7 100644
--- a/libc/arch-x86_64/syscalls/fchownat.S
+++ b/libc/arch-x86_64/syscalls/fchownat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fchownat)
diff --git a/libc/arch-x86_64/syscalls/fcntl.S b/libc/arch-x86_64/syscalls/fcntl.S
index a20d938..909e568 100644
--- a/libc/arch-x86_64/syscalls/fcntl.S
+++ b/libc/arch-x86_64/syscalls/fcntl.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fcntl)
diff --git a/libc/arch-x86_64/syscalls/fdatasync.S b/libc/arch-x86_64/syscalls/fdatasync.S
index 5ea8ebd..43e368f 100644
--- a/libc/arch-x86_64/syscalls/fdatasync.S
+++ b/libc/arch-x86_64/syscalls/fdatasync.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fdatasync)
diff --git a/libc/arch-x86_64/syscalls/fgetxattr.S b/libc/arch-x86_64/syscalls/fgetxattr.S
index 096c30f..56e5580 100644
--- a/libc/arch-x86_64/syscalls/fgetxattr.S
+++ b/libc/arch-x86_64/syscalls/fgetxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fgetxattr)
diff --git a/libc/arch-x86_64/syscalls/flistxattr.S b/libc/arch-x86_64/syscalls/flistxattr.S
index e0e5b8b..da77c72 100644
--- a/libc/arch-x86_64/syscalls/flistxattr.S
+++ b/libc/arch-x86_64/syscalls/flistxattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(flistxattr)
diff --git a/libc/arch-x86_64/syscalls/flock.S b/libc/arch-x86_64/syscalls/flock.S
index 981d86e..30daa48 100644
--- a/libc/arch-x86_64/syscalls/flock.S
+++ b/libc/arch-x86_64/syscalls/flock.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(flock)
diff --git a/libc/arch-x86_64/syscalls/fremovexattr.S b/libc/arch-x86_64/syscalls/fremovexattr.S
index 655bdef..f4536e2 100644
--- a/libc/arch-x86_64/syscalls/fremovexattr.S
+++ b/libc/arch-x86_64/syscalls/fremovexattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fremovexattr)
diff --git a/libc/arch-x86_64/syscalls/fsetxattr.S b/libc/arch-x86_64/syscalls/fsetxattr.S
index fa2bddc..dcc4119 100644
--- a/libc/arch-x86_64/syscalls/fsetxattr.S
+++ b/libc/arch-x86_64/syscalls/fsetxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fsetxattr)
diff --git a/libc/arch-x86_64/syscalls/fstat64.S b/libc/arch-x86_64/syscalls/fstat64.S
index 9e7aa2d..40db722 100644
--- a/libc/arch-x86_64/syscalls/fstat64.S
+++ b/libc/arch-x86_64/syscalls/fstat64.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fstat64)
diff --git a/libc/arch-x86_64/syscalls/fstatat64.S b/libc/arch-x86_64/syscalls/fstatat64.S
index 5418cd0..fe6fcd2 100644
--- a/libc/arch-x86_64/syscalls/fstatat64.S
+++ b/libc/arch-x86_64/syscalls/fstatat64.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fstatat64)
diff --git a/libc/arch-x86_64/syscalls/fstatfs64.S b/libc/arch-x86_64/syscalls/fstatfs64.S
index ee2daa2..39a6daf 100644
--- a/libc/arch-x86_64/syscalls/fstatfs64.S
+++ b/libc/arch-x86_64/syscalls/fstatfs64.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fstatfs64)
diff --git a/libc/arch-x86_64/syscalls/fsync.S b/libc/arch-x86_64/syscalls/fsync.S
index 12eabd3..f53ce5c 100644
--- a/libc/arch-x86_64/syscalls/fsync.S
+++ b/libc/arch-x86_64/syscalls/fsync.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(fsync)
diff --git a/libc/arch-x86_64/syscalls/ftruncate.S b/libc/arch-x86_64/syscalls/ftruncate.S
index 11161a7..5da7bc5 100644
--- a/libc/arch-x86_64/syscalls/ftruncate.S
+++ b/libc/arch-x86_64/syscalls/ftruncate.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(ftruncate)
diff --git a/libc/arch-x86_64/syscalls/getegid.S b/libc/arch-x86_64/syscalls/getegid.S
index 6f9c2a8..9939d20 100644
--- a/libc/arch-x86_64/syscalls/getegid.S
+++ b/libc/arch-x86_64/syscalls/getegid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getegid)
diff --git a/libc/arch-x86_64/syscalls/geteuid.S b/libc/arch-x86_64/syscalls/geteuid.S
index 88000ef..399bc10 100644
--- a/libc/arch-x86_64/syscalls/geteuid.S
+++ b/libc/arch-x86_64/syscalls/geteuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(geteuid)
diff --git a/libc/arch-x86_64/syscalls/getgid.S b/libc/arch-x86_64/syscalls/getgid.S
index 8f8eaa6..2a0a895 100644
--- a/libc/arch-x86_64/syscalls/getgid.S
+++ b/libc/arch-x86_64/syscalls/getgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getgid)
diff --git a/libc/arch-x86_64/syscalls/getgroups.S b/libc/arch-x86_64/syscalls/getgroups.S
index 5358a3e..6110b5a 100644
--- a/libc/arch-x86_64/syscalls/getgroups.S
+++ b/libc/arch-x86_64/syscalls/getgroups.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getgroups)
diff --git a/libc/arch-x86_64/syscalls/getitimer.S b/libc/arch-x86_64/syscalls/getitimer.S
index b6a6e8e..76ac856 100644
--- a/libc/arch-x86_64/syscalls/getitimer.S
+++ b/libc/arch-x86_64/syscalls/getitimer.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getitimer)
diff --git a/libc/arch-x86_64/syscalls/getpeername.S b/libc/arch-x86_64/syscalls/getpeername.S
index 98e06fb..22ad98e 100644
--- a/libc/arch-x86_64/syscalls/getpeername.S
+++ b/libc/arch-x86_64/syscalls/getpeername.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getpeername)
diff --git a/libc/arch-x86_64/syscalls/getpgid.S b/libc/arch-x86_64/syscalls/getpgid.S
index 158f14d..51d2e72 100644
--- a/libc/arch-x86_64/syscalls/getpgid.S
+++ b/libc/arch-x86_64/syscalls/getpgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getpgid)
diff --git a/libc/arch-x86_64/syscalls/getppid.S b/libc/arch-x86_64/syscalls/getppid.S
index e4853e0..44e8cd9 100644
--- a/libc/arch-x86_64/syscalls/getppid.S
+++ b/libc/arch-x86_64/syscalls/getppid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getppid)
diff --git a/libc/arch-x86_64/syscalls/getresgid.S b/libc/arch-x86_64/syscalls/getresgid.S
index d65fb13..dab4f43 100644
--- a/libc/arch-x86_64/syscalls/getresgid.S
+++ b/libc/arch-x86_64/syscalls/getresgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getresgid)
diff --git a/libc/arch-x86_64/syscalls/getresuid.S b/libc/arch-x86_64/syscalls/getresuid.S
index 80d85c6..5c433a9 100644
--- a/libc/arch-x86_64/syscalls/getresuid.S
+++ b/libc/arch-x86_64/syscalls/getresuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getresuid)
diff --git a/libc/arch-x86_64/syscalls/getrlimit.S b/libc/arch-x86_64/syscalls/getrlimit.S
index ea0ca7d..5c0dd08 100644
--- a/libc/arch-x86_64/syscalls/getrlimit.S
+++ b/libc/arch-x86_64/syscalls/getrlimit.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getrlimit)
diff --git a/libc/arch-x86_64/syscalls/getrusage.S b/libc/arch-x86_64/syscalls/getrusage.S
index 7a60738..01750f2 100644
--- a/libc/arch-x86_64/syscalls/getrusage.S
+++ b/libc/arch-x86_64/syscalls/getrusage.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getrusage)
diff --git a/libc/arch-x86_64/syscalls/getsid.S b/libc/arch-x86_64/syscalls/getsid.S
index 75e3fad..63e7ce0 100644
--- a/libc/arch-x86_64/syscalls/getsid.S
+++ b/libc/arch-x86_64/syscalls/getsid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getsid)
diff --git a/libc/arch-x86_64/syscalls/getsockname.S b/libc/arch-x86_64/syscalls/getsockname.S
index 3c7c2f8..62b4eb8 100644
--- a/libc/arch-x86_64/syscalls/getsockname.S
+++ b/libc/arch-x86_64/syscalls/getsockname.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getsockname)
diff --git a/libc/arch-x86_64/syscalls/getsockopt.S b/libc/arch-x86_64/syscalls/getsockopt.S
index 725757c..dc62ce9 100644
--- a/libc/arch-x86_64/syscalls/getsockopt.S
+++ b/libc/arch-x86_64/syscalls/getsockopt.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getsockopt)
diff --git a/libc/arch-x86_64/syscalls/getuid.S b/libc/arch-x86_64/syscalls/getuid.S
index d7306e1..0229ae5 100644
--- a/libc/arch-x86_64/syscalls/getuid.S
+++ b/libc/arch-x86_64/syscalls/getuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getuid)
diff --git a/libc/arch-x86_64/syscalls/getxattr.S b/libc/arch-x86_64/syscalls/getxattr.S
index 7c66b0e..28354a5 100644
--- a/libc/arch-x86_64/syscalls/getxattr.S
+++ b/libc/arch-x86_64/syscalls/getxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(getxattr)
diff --git a/libc/arch-x86_64/syscalls/init_module.S b/libc/arch-x86_64/syscalls/init_module.S
index 187f5a2..4532fdd 100644
--- a/libc/arch-x86_64/syscalls/init_module.S
+++ b/libc/arch-x86_64/syscalls/init_module.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(init_module)
diff --git a/libc/arch-x86_64/syscalls/inotify_add_watch.S b/libc/arch-x86_64/syscalls/inotify_add_watch.S
index 47e15ab..f2fb41f 100644
--- a/libc/arch-x86_64/syscalls/inotify_add_watch.S
+++ b/libc/arch-x86_64/syscalls/inotify_add_watch.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(inotify_add_watch)
diff --git a/libc/arch-x86_64/syscalls/inotify_init1.S b/libc/arch-x86_64/syscalls/inotify_init1.S
index 160b0d5..e1332c7 100644
--- a/libc/arch-x86_64/syscalls/inotify_init1.S
+++ b/libc/arch-x86_64/syscalls/inotify_init1.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(inotify_init1)
diff --git a/libc/arch-x86_64/syscalls/inotify_rm_watch.S b/libc/arch-x86_64/syscalls/inotify_rm_watch.S
index 4c5874e..e1dddd2 100644
--- a/libc/arch-x86_64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-x86_64/syscalls/inotify_rm_watch.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(inotify_rm_watch)
diff --git a/libc/arch-x86_64/syscalls/kill.S b/libc/arch-x86_64/syscalls/kill.S
index f234585..e7b710a 100644
--- a/libc/arch-x86_64/syscalls/kill.S
+++ b/libc/arch-x86_64/syscalls/kill.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(kill)
diff --git a/libc/arch-x86_64/syscalls/klogctl.S b/libc/arch-x86_64/syscalls/klogctl.S
index 057b066..fdc8649 100644
--- a/libc/arch-x86_64/syscalls/klogctl.S
+++ b/libc/arch-x86_64/syscalls/klogctl.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(klogctl)
diff --git a/libc/arch-x86_64/syscalls/lgetxattr.S b/libc/arch-x86_64/syscalls/lgetxattr.S
index 525ee3b..c8e1bb6 100644
--- a/libc/arch-x86_64/syscalls/lgetxattr.S
+++ b/libc/arch-x86_64/syscalls/lgetxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(lgetxattr)
diff --git a/libc/arch-x86_64/syscalls/linkat.S b/libc/arch-x86_64/syscalls/linkat.S
index 815af86..2d83871 100644
--- a/libc/arch-x86_64/syscalls/linkat.S
+++ b/libc/arch-x86_64/syscalls/linkat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(linkat)
diff --git a/libc/arch-x86_64/syscalls/listen.S b/libc/arch-x86_64/syscalls/listen.S
index d3d7103..2804286 100644
--- a/libc/arch-x86_64/syscalls/listen.S
+++ b/libc/arch-x86_64/syscalls/listen.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(listen)
diff --git a/libc/arch-x86_64/syscalls/listxattr.S b/libc/arch-x86_64/syscalls/listxattr.S
index 89fd63c..82452f7 100644
--- a/libc/arch-x86_64/syscalls/listxattr.S
+++ b/libc/arch-x86_64/syscalls/listxattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(listxattr)
diff --git a/libc/arch-x86_64/syscalls/llistxattr.S b/libc/arch-x86_64/syscalls/llistxattr.S
index cfff2e7..2795480 100644
--- a/libc/arch-x86_64/syscalls/llistxattr.S
+++ b/libc/arch-x86_64/syscalls/llistxattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(llistxattr)
diff --git a/libc/arch-x86_64/syscalls/lremovexattr.S b/libc/arch-x86_64/syscalls/lremovexattr.S
index 0b6994a..c406aa8 100644
--- a/libc/arch-x86_64/syscalls/lremovexattr.S
+++ b/libc/arch-x86_64/syscalls/lremovexattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(lremovexattr)
diff --git a/libc/arch-x86_64/syscalls/lseek.S b/libc/arch-x86_64/syscalls/lseek.S
index b2e8c16..f4035c4 100644
--- a/libc/arch-x86_64/syscalls/lseek.S
+++ b/libc/arch-x86_64/syscalls/lseek.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(lseek)
diff --git a/libc/arch-x86_64/syscalls/lsetxattr.S b/libc/arch-x86_64/syscalls/lsetxattr.S
index fdaf98a..9e18856 100644
--- a/libc/arch-x86_64/syscalls/lsetxattr.S
+++ b/libc/arch-x86_64/syscalls/lsetxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(lsetxattr)
diff --git a/libc/arch-x86_64/syscalls/madvise.S b/libc/arch-x86_64/syscalls/madvise.S
index 3f567fd..8298490 100644
--- a/libc/arch-x86_64/syscalls/madvise.S
+++ b/libc/arch-x86_64/syscalls/madvise.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(madvise)
diff --git a/libc/arch-x86_64/syscalls/mincore.S b/libc/arch-x86_64/syscalls/mincore.S
index e6b2521..194dbee 100644
--- a/libc/arch-x86_64/syscalls/mincore.S
+++ b/libc/arch-x86_64/syscalls/mincore.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mincore)
diff --git a/libc/arch-x86_64/syscalls/mkdirat.S b/libc/arch-x86_64/syscalls/mkdirat.S
index abba2d5..163dd64 100644
--- a/libc/arch-x86_64/syscalls/mkdirat.S
+++ b/libc/arch-x86_64/syscalls/mkdirat.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mkdirat)
diff --git a/libc/arch-x86_64/syscalls/mknodat.S b/libc/arch-x86_64/syscalls/mknodat.S
index d3d78c9..59b0df7 100644
--- a/libc/arch-x86_64/syscalls/mknodat.S
+++ b/libc/arch-x86_64/syscalls/mknodat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mknodat)
diff --git a/libc/arch-x86_64/syscalls/mlock.S b/libc/arch-x86_64/syscalls/mlock.S
index 0c69eb7..0eb8af7 100644
--- a/libc/arch-x86_64/syscalls/mlock.S
+++ b/libc/arch-x86_64/syscalls/mlock.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mlock)
diff --git a/libc/arch-x86_64/syscalls/mlockall.S b/libc/arch-x86_64/syscalls/mlockall.S
index 89ba9b6..c667dca 100644
--- a/libc/arch-x86_64/syscalls/mlockall.S
+++ b/libc/arch-x86_64/syscalls/mlockall.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mlockall)
diff --git a/libc/arch-x86_64/syscalls/mmap.S b/libc/arch-x86_64/syscalls/mmap.S
index 7b9f6e0..83f19b5 100644
--- a/libc/arch-x86_64/syscalls/mmap.S
+++ b/libc/arch-x86_64/syscalls/mmap.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mmap)
diff --git a/libc/arch-x86_64/syscalls/mount.S b/libc/arch-x86_64/syscalls/mount.S
index 04534c9..b047444 100644
--- a/libc/arch-x86_64/syscalls/mount.S
+++ b/libc/arch-x86_64/syscalls/mount.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mount)
diff --git a/libc/arch-x86_64/syscalls/mprotect.S b/libc/arch-x86_64/syscalls/mprotect.S
index d849bb1..fc28083 100644
--- a/libc/arch-x86_64/syscalls/mprotect.S
+++ b/libc/arch-x86_64/syscalls/mprotect.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mprotect)
diff --git a/libc/arch-x86_64/syscalls/mremap.S b/libc/arch-x86_64/syscalls/mremap.S
index 8af367e..b95f1a8 100644
--- a/libc/arch-x86_64/syscalls/mremap.S
+++ b/libc/arch-x86_64/syscalls/mremap.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(mremap)
diff --git a/libc/arch-x86_64/syscalls/msync.S b/libc/arch-x86_64/syscalls/msync.S
index c0ff0f9..5d71e74 100644
--- a/libc/arch-x86_64/syscalls/msync.S
+++ b/libc/arch-x86_64/syscalls/msync.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(msync)
diff --git a/libc/arch-x86_64/syscalls/munlock.S b/libc/arch-x86_64/syscalls/munlock.S
index d669f54..0f9a8f9 100644
--- a/libc/arch-x86_64/syscalls/munlock.S
+++ b/libc/arch-x86_64/syscalls/munlock.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(munlock)
diff --git a/libc/arch-x86_64/syscalls/munlockall.S b/libc/arch-x86_64/syscalls/munlockall.S
index b7a9abc..5b52ad4 100644
--- a/libc/arch-x86_64/syscalls/munlockall.S
+++ b/libc/arch-x86_64/syscalls/munlockall.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(munlockall)
diff --git a/libc/arch-x86_64/syscalls/munmap.S b/libc/arch-x86_64/syscalls/munmap.S
index 4360bd0..e83f2f6 100644
--- a/libc/arch-x86_64/syscalls/munmap.S
+++ b/libc/arch-x86_64/syscalls/munmap.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(munmap)
diff --git a/libc/arch-x86_64/syscalls/nanosleep.S b/libc/arch-x86_64/syscalls/nanosleep.S
index 2eced5b..62407fe 100644
--- a/libc/arch-x86_64/syscalls/nanosleep.S
+++ b/libc/arch-x86_64/syscalls/nanosleep.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(nanosleep)
diff --git a/libc/arch-x86_64/syscalls/personality.S b/libc/arch-x86_64/syscalls/personality.S
index 17ad7ee..0e87540 100644
--- a/libc/arch-x86_64/syscalls/personality.S
+++ b/libc/arch-x86_64/syscalls/personality.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(personality)
diff --git a/libc/arch-x86_64/syscalls/pipe2.S b/libc/arch-x86_64/syscalls/pipe2.S
index 83eb0a6..c8c3e4c 100644
--- a/libc/arch-x86_64/syscalls/pipe2.S
+++ b/libc/arch-x86_64/syscalls/pipe2.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(pipe2)
diff --git a/libc/arch-x86_64/syscalls/prctl.S b/libc/arch-x86_64/syscalls/prctl.S
index c79220d..359e31d 100644
--- a/libc/arch-x86_64/syscalls/prctl.S
+++ b/libc/arch-x86_64/syscalls/prctl.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(prctl)
diff --git a/libc/arch-x86_64/syscalls/pread64.S b/libc/arch-x86_64/syscalls/pread64.S
index 1c4dc68..6e6b240 100644
--- a/libc/arch-x86_64/syscalls/pread64.S
+++ b/libc/arch-x86_64/syscalls/pread64.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(pread64)
diff --git a/libc/arch-x86_64/syscalls/prlimit64.S b/libc/arch-x86_64/syscalls/prlimit64.S
index 823feba..ef99f5c 100644
--- a/libc/arch-x86_64/syscalls/prlimit64.S
+++ b/libc/arch-x86_64/syscalls/prlimit64.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(prlimit64)
diff --git a/libc/arch-x86_64/syscalls/pwrite64.S b/libc/arch-x86_64/syscalls/pwrite64.S
index 13bcb58..944c66a 100644
--- a/libc/arch-x86_64/syscalls/pwrite64.S
+++ b/libc/arch-x86_64/syscalls/pwrite64.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(pwrite64)
diff --git a/libc/arch-x86_64/syscalls/read.S b/libc/arch-x86_64/syscalls/read.S
index 400c87a..960ea25 100644
--- a/libc/arch-x86_64/syscalls/read.S
+++ b/libc/arch-x86_64/syscalls/read.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(read)
diff --git a/libc/arch-x86_64/syscalls/readahead.S b/libc/arch-x86_64/syscalls/readahead.S
index 2a2978b..4f9ef4e 100644
--- a/libc/arch-x86_64/syscalls/readahead.S
+++ b/libc/arch-x86_64/syscalls/readahead.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(readahead)
diff --git a/libc/arch-x86_64/syscalls/readlinkat.S b/libc/arch-x86_64/syscalls/readlinkat.S
index 51d1f0c..cefa09f 100644
--- a/libc/arch-x86_64/syscalls/readlinkat.S
+++ b/libc/arch-x86_64/syscalls/readlinkat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(readlinkat)
diff --git a/libc/arch-x86_64/syscalls/readv.S b/libc/arch-x86_64/syscalls/readv.S
index 4199751..f2eed7f 100644
--- a/libc/arch-x86_64/syscalls/readv.S
+++ b/libc/arch-x86_64/syscalls/readv.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(readv)
diff --git a/libc/arch-x86_64/syscalls/recvfrom.S b/libc/arch-x86_64/syscalls/recvfrom.S
index 61ca1b2..99e7e87 100644
--- a/libc/arch-x86_64/syscalls/recvfrom.S
+++ b/libc/arch-x86_64/syscalls/recvfrom.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(recvfrom)
diff --git a/libc/arch-x86_64/syscalls/recvmmsg.S b/libc/arch-x86_64/syscalls/recvmmsg.S
index ce14ba5..89f9f86 100644
--- a/libc/arch-x86_64/syscalls/recvmmsg.S
+++ b/libc/arch-x86_64/syscalls/recvmmsg.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(recvmmsg)
diff --git a/libc/arch-x86_64/syscalls/recvmsg.S b/libc/arch-x86_64/syscalls/recvmsg.S
index 8655d07..5f44aeb 100644
--- a/libc/arch-x86_64/syscalls/recvmsg.S
+++ b/libc/arch-x86_64/syscalls/recvmsg.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(recvmsg)
diff --git a/libc/arch-x86_64/syscalls/removexattr.S b/libc/arch-x86_64/syscalls/removexattr.S
index 9736463..92cce02 100644
--- a/libc/arch-x86_64/syscalls/removexattr.S
+++ b/libc/arch-x86_64/syscalls/removexattr.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(removexattr)
diff --git a/libc/arch-x86_64/syscalls/renameat.S b/libc/arch-x86_64/syscalls/renameat.S
index 0be2ef9..0951121 100644
--- a/libc/arch-x86_64/syscalls/renameat.S
+++ b/libc/arch-x86_64/syscalls/renameat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(renameat)
diff --git a/libc/arch-x86_64/syscalls/sched_get_priority_max.S b/libc/arch-x86_64/syscalls/sched_get_priority_max.S
index 0f92739..827327d 100644
--- a/libc/arch-x86_64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-x86_64/syscalls/sched_get_priority_max.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_get_priority_max)
diff --git a/libc/arch-x86_64/syscalls/sched_get_priority_min.S b/libc/arch-x86_64/syscalls/sched_get_priority_min.S
index 8450e9d..5c3c51b 100644
--- a/libc/arch-x86_64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-x86_64/syscalls/sched_get_priority_min.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_get_priority_min)
diff --git a/libc/arch-x86_64/syscalls/sched_getparam.S b/libc/arch-x86_64/syscalls/sched_getparam.S
index a784640..1bd47e3 100644
--- a/libc/arch-x86_64/syscalls/sched_getparam.S
+++ b/libc/arch-x86_64/syscalls/sched_getparam.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_getparam)
diff --git a/libc/arch-x86_64/syscalls/sched_getscheduler.S b/libc/arch-x86_64/syscalls/sched_getscheduler.S
index 090b322..12d5720 100644
--- a/libc/arch-x86_64/syscalls/sched_getscheduler.S
+++ b/libc/arch-x86_64/syscalls/sched_getscheduler.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_getscheduler)
diff --git a/libc/arch-x86_64/syscalls/sched_rr_get_interval.S b/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
index 0977f2e..3e9959d 100644
--- a/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_rr_get_interval)
diff --git a/libc/arch-x86_64/syscalls/sched_setaffinity.S b/libc/arch-x86_64/syscalls/sched_setaffinity.S
index af8e7a2..ea6b2b8 100644
--- a/libc/arch-x86_64/syscalls/sched_setaffinity.S
+++ b/libc/arch-x86_64/syscalls/sched_setaffinity.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_setaffinity)
diff --git a/libc/arch-x86_64/syscalls/sched_setparam.S b/libc/arch-x86_64/syscalls/sched_setparam.S
index 2964607..189be26 100644
--- a/libc/arch-x86_64/syscalls/sched_setparam.S
+++ b/libc/arch-x86_64/syscalls/sched_setparam.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_setparam)
diff --git a/libc/arch-x86_64/syscalls/sched_setscheduler.S b/libc/arch-x86_64/syscalls/sched_setscheduler.S
index 333d1b8..2fe87a2 100644
--- a/libc/arch-x86_64/syscalls/sched_setscheduler.S
+++ b/libc/arch-x86_64/syscalls/sched_setscheduler.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_setscheduler)
diff --git a/libc/arch-x86_64/syscalls/sched_yield.S b/libc/arch-x86_64/syscalls/sched_yield.S
index a972154..8a7da98 100644
--- a/libc/arch-x86_64/syscalls/sched_yield.S
+++ b/libc/arch-x86_64/syscalls/sched_yield.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sched_yield)
diff --git a/libc/arch-x86_64/syscalls/sendfile.S b/libc/arch-x86_64/syscalls/sendfile.S
index c1b6497..ccb7e0b 100644
--- a/libc/arch-x86_64/syscalls/sendfile.S
+++ b/libc/arch-x86_64/syscalls/sendfile.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sendfile)
diff --git a/libc/arch-x86_64/syscalls/sendmmsg.S b/libc/arch-x86_64/syscalls/sendmmsg.S
index 940c0b6..00efcf7 100644
--- a/libc/arch-x86_64/syscalls/sendmmsg.S
+++ b/libc/arch-x86_64/syscalls/sendmmsg.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sendmmsg)
diff --git a/libc/arch-x86_64/syscalls/sendmsg.S b/libc/arch-x86_64/syscalls/sendmsg.S
index 6d94bb6..ca8aeaf 100644
--- a/libc/arch-x86_64/syscalls/sendmsg.S
+++ b/libc/arch-x86_64/syscalls/sendmsg.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sendmsg)
diff --git a/libc/arch-x86_64/syscalls/sendto.S b/libc/arch-x86_64/syscalls/sendto.S
index bfe4636..8f02b31 100644
--- a/libc/arch-x86_64/syscalls/sendto.S
+++ b/libc/arch-x86_64/syscalls/sendto.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sendto)
diff --git a/libc/arch-x86_64/syscalls/setfsgid.S b/libc/arch-x86_64/syscalls/setfsgid.S
index e9f50b8..ae0f61c 100644
--- a/libc/arch-x86_64/syscalls/setfsgid.S
+++ b/libc/arch-x86_64/syscalls/setfsgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setfsgid)
diff --git a/libc/arch-x86_64/syscalls/setfsuid.S b/libc/arch-x86_64/syscalls/setfsuid.S
index cfdb86c..3345628 100644
--- a/libc/arch-x86_64/syscalls/setfsuid.S
+++ b/libc/arch-x86_64/syscalls/setfsuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setfsuid)
diff --git a/libc/arch-x86_64/syscalls/setgid.S b/libc/arch-x86_64/syscalls/setgid.S
index ef4fb31..28eba22 100644
--- a/libc/arch-x86_64/syscalls/setgid.S
+++ b/libc/arch-x86_64/syscalls/setgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setgid)
diff --git a/libc/arch-x86_64/syscalls/setgroups.S b/libc/arch-x86_64/syscalls/setgroups.S
index 65e6180..ef12d2a 100644
--- a/libc/arch-x86_64/syscalls/setgroups.S
+++ b/libc/arch-x86_64/syscalls/setgroups.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setgroups)
diff --git a/libc/arch-x86_64/syscalls/setitimer.S b/libc/arch-x86_64/syscalls/setitimer.S
index bee4996..34777b3 100644
--- a/libc/arch-x86_64/syscalls/setitimer.S
+++ b/libc/arch-x86_64/syscalls/setitimer.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setitimer)
diff --git a/libc/arch-x86_64/syscalls/setns.S b/libc/arch-x86_64/syscalls/setns.S
index 521769b..2ef5f18 100644
--- a/libc/arch-x86_64/syscalls/setns.S
+++ b/libc/arch-x86_64/syscalls/setns.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setns)
diff --git a/libc/arch-x86_64/syscalls/setpgid.S b/libc/arch-x86_64/syscalls/setpgid.S
index 348612b..9146d56 100644
--- a/libc/arch-x86_64/syscalls/setpgid.S
+++ b/libc/arch-x86_64/syscalls/setpgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setpgid)
diff --git a/libc/arch-x86_64/syscalls/setpriority.S b/libc/arch-x86_64/syscalls/setpriority.S
index 0940368..74623d2 100644
--- a/libc/arch-x86_64/syscalls/setpriority.S
+++ b/libc/arch-x86_64/syscalls/setpriority.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setpriority)
diff --git a/libc/arch-x86_64/syscalls/setregid.S b/libc/arch-x86_64/syscalls/setregid.S
index 0338ecf..3bb9c83 100644
--- a/libc/arch-x86_64/syscalls/setregid.S
+++ b/libc/arch-x86_64/syscalls/setregid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setregid)
diff --git a/libc/arch-x86_64/syscalls/setresgid.S b/libc/arch-x86_64/syscalls/setresgid.S
index 10e1244..479ae38 100644
--- a/libc/arch-x86_64/syscalls/setresgid.S
+++ b/libc/arch-x86_64/syscalls/setresgid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setresgid)
diff --git a/libc/arch-x86_64/syscalls/setresuid.S b/libc/arch-x86_64/syscalls/setresuid.S
index 229b11b..3997656 100644
--- a/libc/arch-x86_64/syscalls/setresuid.S
+++ b/libc/arch-x86_64/syscalls/setresuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setresuid)
diff --git a/libc/arch-x86_64/syscalls/setreuid.S b/libc/arch-x86_64/syscalls/setreuid.S
index e96e2d3..6cfdbd5 100644
--- a/libc/arch-x86_64/syscalls/setreuid.S
+++ b/libc/arch-x86_64/syscalls/setreuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setreuid)
diff --git a/libc/arch-x86_64/syscalls/setrlimit.S b/libc/arch-x86_64/syscalls/setrlimit.S
index 662587d..0aa6cf3 100644
--- a/libc/arch-x86_64/syscalls/setrlimit.S
+++ b/libc/arch-x86_64/syscalls/setrlimit.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setrlimit)
diff --git a/libc/arch-x86_64/syscalls/setsid.S b/libc/arch-x86_64/syscalls/setsid.S
index 293ecf5..e221f40 100644
--- a/libc/arch-x86_64/syscalls/setsid.S
+++ b/libc/arch-x86_64/syscalls/setsid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setsid)
diff --git a/libc/arch-x86_64/syscalls/setsockopt.S b/libc/arch-x86_64/syscalls/setsockopt.S
index aee6613..a9853b9 100644
--- a/libc/arch-x86_64/syscalls/setsockopt.S
+++ b/libc/arch-x86_64/syscalls/setsockopt.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setsockopt)
diff --git a/libc/arch-x86_64/syscalls/settimeofday.S b/libc/arch-x86_64/syscalls/settimeofday.S
index 0d00c89..dfcf80f 100644
--- a/libc/arch-x86_64/syscalls/settimeofday.S
+++ b/libc/arch-x86_64/syscalls/settimeofday.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(settimeofday)
diff --git a/libc/arch-x86_64/syscalls/setuid.S b/libc/arch-x86_64/syscalls/setuid.S
index 19e2a10..f7b008e 100644
--- a/libc/arch-x86_64/syscalls/setuid.S
+++ b/libc/arch-x86_64/syscalls/setuid.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setuid)
diff --git a/libc/arch-x86_64/syscalls/setxattr.S b/libc/arch-x86_64/syscalls/setxattr.S
index 3e4d50b..9c0adc1 100644
--- a/libc/arch-x86_64/syscalls/setxattr.S
+++ b/libc/arch-x86_64/syscalls/setxattr.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(setxattr)
diff --git a/libc/arch-x86_64/syscalls/shutdown.S b/libc/arch-x86_64/syscalls/shutdown.S
index 346be33..7bf2851 100644
--- a/libc/arch-x86_64/syscalls/shutdown.S
+++ b/libc/arch-x86_64/syscalls/shutdown.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(shutdown)
diff --git a/libc/arch-x86_64/syscalls/sigaltstack.S b/libc/arch-x86_64/syscalls/sigaltstack.S
index 271fafc..1bf9409 100644
--- a/libc/arch-x86_64/syscalls/sigaltstack.S
+++ b/libc/arch-x86_64/syscalls/sigaltstack.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sigaltstack)
diff --git a/libc/arch-x86_64/syscalls/socketpair.S b/libc/arch-x86_64/syscalls/socketpair.S
index 5466dc9..260ef14 100644
--- a/libc/arch-x86_64/syscalls/socketpair.S
+++ b/libc/arch-x86_64/syscalls/socketpair.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(socketpair)
diff --git a/libc/arch-x86_64/syscalls/splice.S b/libc/arch-x86_64/syscalls/splice.S
index 3c245a5..027c633 100644
--- a/libc/arch-x86_64/syscalls/splice.S
+++ b/libc/arch-x86_64/syscalls/splice.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(splice)
diff --git a/libc/arch-x86_64/syscalls/statfs64.S b/libc/arch-x86_64/syscalls/statfs64.S
index 6a2637c..aca8db5 100644
--- a/libc/arch-x86_64/syscalls/statfs64.S
+++ b/libc/arch-x86_64/syscalls/statfs64.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(statfs64)
diff --git a/libc/arch-x86_64/syscalls/swapoff.S b/libc/arch-x86_64/syscalls/swapoff.S
index 7e55758..7ffb38d 100644
--- a/libc/arch-x86_64/syscalls/swapoff.S
+++ b/libc/arch-x86_64/syscalls/swapoff.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(swapoff)
diff --git a/libc/arch-x86_64/syscalls/swapon.S b/libc/arch-x86_64/syscalls/swapon.S
index d2f5f66..ba83f24 100644
--- a/libc/arch-x86_64/syscalls/swapon.S
+++ b/libc/arch-x86_64/syscalls/swapon.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(swapon)
diff --git a/libc/arch-x86_64/syscalls/symlinkat.S b/libc/arch-x86_64/syscalls/symlinkat.S
index 5bbf1cb..f9e2fce 100644
--- a/libc/arch-x86_64/syscalls/symlinkat.S
+++ b/libc/arch-x86_64/syscalls/symlinkat.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(symlinkat)
diff --git a/libc/arch-x86_64/syscalls/sync.S b/libc/arch-x86_64/syscalls/sync.S
index 9911715..8058ff3 100644
--- a/libc/arch-x86_64/syscalls/sync.S
+++ b/libc/arch-x86_64/syscalls/sync.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sync)
diff --git a/libc/arch-x86_64/syscalls/sysinfo.S b/libc/arch-x86_64/syscalls/sysinfo.S
index 104bb2c..34a5921 100644
--- a/libc/arch-x86_64/syscalls/sysinfo.S
+++ b/libc/arch-x86_64/syscalls/sysinfo.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(sysinfo)
diff --git a/libc/arch-x86_64/syscalls/tee.S b/libc/arch-x86_64/syscalls/tee.S
index ad5698c..afb843a 100644
--- a/libc/arch-x86_64/syscalls/tee.S
+++ b/libc/arch-x86_64/syscalls/tee.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(tee)
diff --git a/libc/arch-x86_64/syscalls/tgkill.S b/libc/arch-x86_64/syscalls/tgkill.S
index e3b9972..eebdc91 100644
--- a/libc/arch-x86_64/syscalls/tgkill.S
+++ b/libc/arch-x86_64/syscalls/tgkill.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(tgkill)
diff --git a/libc/arch-x86_64/syscalls/timerfd_create.S b/libc/arch-x86_64/syscalls/timerfd_create.S
index 3f1b23a..de0c2e1 100644
--- a/libc/arch-x86_64/syscalls/timerfd_create.S
+++ b/libc/arch-x86_64/syscalls/timerfd_create.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(timerfd_create)
diff --git a/libc/arch-x86_64/syscalls/timerfd_gettime.S b/libc/arch-x86_64/syscalls/timerfd_gettime.S
index b1017ad..0c10cc4 100644
--- a/libc/arch-x86_64/syscalls/timerfd_gettime.S
+++ b/libc/arch-x86_64/syscalls/timerfd_gettime.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(timerfd_gettime)
diff --git a/libc/arch-x86_64/syscalls/timerfd_settime.S b/libc/arch-x86_64/syscalls/timerfd_settime.S
index 8610a1d..41afadc 100644
--- a/libc/arch-x86_64/syscalls/timerfd_settime.S
+++ b/libc/arch-x86_64/syscalls/timerfd_settime.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(timerfd_settime)
diff --git a/libc/arch-x86_64/syscalls/times.S b/libc/arch-x86_64/syscalls/times.S
index 07590b9..ca961c7 100644
--- a/libc/arch-x86_64/syscalls/times.S
+++ b/libc/arch-x86_64/syscalls/times.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(times)
diff --git a/libc/arch-x86_64/syscalls/truncate.S b/libc/arch-x86_64/syscalls/truncate.S
index db2121f..d680e2d 100644
--- a/libc/arch-x86_64/syscalls/truncate.S
+++ b/libc/arch-x86_64/syscalls/truncate.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(truncate)
diff --git a/libc/arch-x86_64/syscalls/umask.S b/libc/arch-x86_64/syscalls/umask.S
index badea76..590c6fe 100644
--- a/libc/arch-x86_64/syscalls/umask.S
+++ b/libc/arch-x86_64/syscalls/umask.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(umask)
diff --git a/libc/arch-x86_64/syscalls/umount2.S b/libc/arch-x86_64/syscalls/umount2.S
index 93e6fa0..c4f5ab8 100644
--- a/libc/arch-x86_64/syscalls/umount2.S
+++ b/libc/arch-x86_64/syscalls/umount2.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(umount2)
diff --git a/libc/arch-x86_64/syscalls/uname.S b/libc/arch-x86_64/syscalls/uname.S
index 4b0d1c5..d01d1f6 100644
--- a/libc/arch-x86_64/syscalls/uname.S
+++ b/libc/arch-x86_64/syscalls/uname.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(uname)
diff --git a/libc/arch-x86_64/syscalls/unlinkat.S b/libc/arch-x86_64/syscalls/unlinkat.S
index f322f7d..17726ff 100644
--- a/libc/arch-x86_64/syscalls/unlinkat.S
+++ b/libc/arch-x86_64/syscalls/unlinkat.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(unlinkat)
diff --git a/libc/arch-x86_64/syscalls/unshare.S b/libc/arch-x86_64/syscalls/unshare.S
index b5395c1..df94104 100644
--- a/libc/arch-x86_64/syscalls/unshare.S
+++ b/libc/arch-x86_64/syscalls/unshare.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(unshare)
diff --git a/libc/arch-x86_64/syscalls/utimensat.S b/libc/arch-x86_64/syscalls/utimensat.S
index f90caf2..c6bf2d4 100644
--- a/libc/arch-x86_64/syscalls/utimensat.S
+++ b/libc/arch-x86_64/syscalls/utimensat.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(utimensat)
diff --git a/libc/arch-x86_64/syscalls/vmsplice.S b/libc/arch-x86_64/syscalls/vmsplice.S
index cc94cc6..66490ab 100644
--- a/libc/arch-x86_64/syscalls/vmsplice.S
+++ b/libc/arch-x86_64/syscalls/vmsplice.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(vmsplice)
diff --git a/libc/arch-x86_64/syscalls/wait4.S b/libc/arch-x86_64/syscalls/wait4.S
index 7948331..b8d78f9 100644
--- a/libc/arch-x86_64/syscalls/wait4.S
+++ b/libc/arch-x86_64/syscalls/wait4.S
@@ -10,7 +10,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(wait4)
diff --git a/libc/arch-x86_64/syscalls/write.S b/libc/arch-x86_64/syscalls/write.S
index 7e3a563..20cd689 100644
--- a/libc/arch-x86_64/syscalls/write.S
+++ b/libc/arch-x86_64/syscalls/write.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(write)
diff --git a/libc/arch-x86_64/syscalls/writev.S b/libc/arch-x86_64/syscalls/writev.S
index 5fc040a..2aff011 100644
--- a/libc/arch-x86_64/syscalls/writev.S
+++ b/libc/arch-x86_64/syscalls/writev.S
@@ -9,7 +9,7 @@
     jb      1f
     negl    %eax
     movl    %eax, %edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(writev)
diff --git a/libc/arch-x86_64/x86_64.mk b/libc/arch-x86_64/x86_64.mk
index 234cf67..7887c51 100644
--- a/libc/arch-x86_64/x86_64.mk
+++ b/libc/arch-x86_64/x86_64.mk
@@ -37,6 +37,7 @@
     arch-x86_64/bionic/__set_tls.c \
     arch-x86_64/bionic/sigsetjmp.S \
     arch-x86_64/bionic/syscall.S \
+    arch-x86_64/bionic/vfork.S \
 
 libc_bionic_src_files_x86_64 += \
     arch-x86_64/string/sse2-memcpy-slm.S \
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index e3e640a..0c72019 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -225,6 +225,7 @@
   return syscall(__NR_tkill, tid, sig);
 }
 
+// This was removed from POSIX 2008.
 extern "C" wchar_t* wcswcs(wchar_t* haystack, wchar_t* needle) {
   return wcsstr(haystack, needle);
 }
@@ -267,7 +268,7 @@
   return r.rlim_cur;
 }
 
-// Only used by ftime, which was removed from POSIX.
+// Only used by ftime, which was removed from POSIX 2008.
 struct timeb {
   time_t          time;
   unsigned short  millitm;
diff --git a/libc/bionic/pthread_exit.cpp b/libc/bionic/pthread_exit.cpp
index a6bb363..6cd5311 100644
--- a/libc/bionic/pthread_exit.cpp
+++ b/libc/bionic/pthread_exit.cpp
@@ -112,6 +112,12 @@
   }
   pthread_mutex_unlock(&g_thread_list_lock);
 
+  // Perform a second key cleanup. When using jemalloc, a call to free from
+  // _pthread_internal_remove_locked causes the memory associated with a key
+  // to be reallocated.
+  // TODO: When b/16847284 is fixed this call can be removed.
+  pthread_key_clean_all();
+
   if (user_allocated_stack) {
     // Cleaning up this thread's stack is the creator's responsibility, not ours.
     __exit(0);
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index 9c6bd3f..74e5732 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -38,6 +38,14 @@
 #ifndef	_STDIO_H_
 #define	_STDIO_H_
 
+/*
+ * This file must contain a reference to __gnuc_va_list so that GCC's
+ * fixincludes knows that that's what's being used for va_list, and so
+ * to leave our <stdio.h> alone. (fixincludes gets in the way of pointing
+ * one toolchain at various different sets of platform headers.)
+ * If you alter this comment, be sure to keep "__gnuc_va_list" in it!
+ */
+
 #include <sys/cdefs.h>
 #include <sys/types.h>
 
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 984ceb3..a5eb3d1 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -111,12 +111,6 @@
 
 #define RAND_MAX 0x7fffffff
 
-/* Work around x86/x86-64 libvpx build breakage caused by postproc_x86.c. */
-#if (defined(__i386__) || defined(__x86_64__)) && defined(rand)
-#undef rand
-#define __rand lrand48
-#endif
-
 int rand(void);
 int rand_r(unsigned int*);
 void srand(unsigned int);
diff --git a/libc/include/string.h b/libc/include/string.h
index af1c0c1..8df68e3 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -94,9 +94,6 @@
 
 #if defined(__BIONIC_FORTIFY)
 
-__errordecl(__memcpy_dest_size_error, "memcpy: prevented write past end of buffer");
-__errordecl(__memcpy_src_size_error, "memcpy: prevented read past end of buffer");
-
 __BIONIC_FORTIFY_INLINE
 void* memcpy(void* __restrict dest, const void* __restrict src, size_t copy_amount) {
     char *d = (char *) dest;
@@ -104,14 +101,6 @@
     size_t s_len = __bos0(s);
     size_t d_len = __bos0(d);
 
-    if (__builtin_constant_p(copy_amount) && (copy_amount > d_len)) {
-        __memcpy_dest_size_error();
-    }
-
-    if (__builtin_constant_p(copy_amount) && (copy_amount > s_len)) {
-        __memcpy_src_size_error();
-    }
-
     return __builtin___memcpy_chk(dest, src, copy_amount, d_len);
 }
 
@@ -130,16 +119,12 @@
     return __builtin___strcpy_chk(dest, src, __bos(dest));
 }
 
-__errordecl(__stpncpy_error, "stpncpy: prevented write past end of buffer");
 extern char* __stpncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
 
 __BIONIC_FORTIFY_INLINE
 char* stpncpy(char* __restrict dest, const char* __restrict src, size_t n) {
     size_t bos_dest = __bos(dest);
     size_t bos_src = __bos(src);
-    if (__builtin_constant_p(n) && (n > bos_dest)) {
-        __stpncpy_error();
-    }
 
     if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
         return __builtin___stpncpy_chk(dest, src, n, bos_dest);
@@ -157,16 +142,12 @@
     return __stpncpy_chk2(dest, src, n, bos_dest, bos_src);
 }
 
-__errordecl(__strncpy_error, "strncpy: prevented write past end of buffer");
 extern char* __strncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
 
 __BIONIC_FORTIFY_INLINE
 char* strncpy(char* __restrict dest, const char* __restrict src, size_t n) {
     size_t bos_dest = __bos(dest);
     size_t bos_src = __bos(src);
-    if (__builtin_constant_p(n) && (n > bos_dest)) {
-        __strncpy_error();
-    }
 
     if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
         return __builtin___strncpy_chk(dest, src, n, bos_dest);
@@ -201,7 +182,6 @@
 
 extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t)
     __asm__(__USER_LABEL_PREFIX__ "strlcpy");
-__errordecl(__strlcpy_error, "strlcpy: prevented write past end of buffer");
 extern size_t __strlcpy_chk(char *, const char *, size_t, size_t);
 
 __BIONIC_FORTIFY_INLINE
@@ -219,12 +199,6 @@
     if (__builtin_constant_p(size) && (size <= bos)) {
         return __strlcpy_real(dest, src, size);
     }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always > the actual object size. Force a compiler error.
-    if (__builtin_constant_p(size) && (size > bos)) {
-        __strlcpy_error();
-    }
 #endif /* !defined(__clang__) */
 
     return __strlcpy_chk(dest, src, size, bos);
@@ -232,7 +206,6 @@
 
 extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t)
     __asm__(__USER_LABEL_PREFIX__ "strlcat");
-__errordecl(__strlcat_error, "strlcat: prevented write past end of buffer");
 extern size_t __strlcat_chk(char* __restrict, const char* __restrict, size_t, size_t);
 
 
@@ -251,12 +224,6 @@
     if (__builtin_constant_p(size) && (size <= bos)) {
         return __strlcat_real(dest, src, size);
     }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always > the actual object size. Force a compiler error.
-    if (__builtin_constant_p(size) && (size > bos)) {
-        __strlcat_error();
-    }
 #endif /* !defined(__clang__) */
 
     return __strlcat_chk(dest, src, size, bos);
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 42f2c91..2b7bec7 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -175,7 +175,7 @@
     jb      1f
     negl    %%eax
     pushl   %%eax
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
     addl    $4, %%esp
 1:
 """
@@ -197,7 +197,7 @@
     jb      1f
     negl    %%eax
     movl    %%eax, %%edi
-    call    __set_errno
+    call    PIC_PLT(__set_errno)
 1:
     ret
 END(%(func)s)
diff --git a/libc/tools/zoneinfo/ZoneCompactor.java b/libc/tools/zoneinfo/ZoneCompactor.java
index f47afd1..bf3153e 100644
--- a/libc/tools/zoneinfo/ZoneCompactor.java
+++ b/libc/tools/zoneinfo/ZoneCompactor.java
@@ -1,9 +1,6 @@
 
 import java.io.*;
-import java.nio.ByteOrder;
 import java.util.*;
-import libcore.io.BufferIterator;
-import libcore.util.ZoneInfo;
 
 // usage: java ZoneCompiler <setup file> <data directory> <output directory> <tzdata version>
 //
@@ -27,66 +24,20 @@
 //
 
 public class ZoneCompactor {
-  public static class ByteArrayBufferIteratorBE extends BufferIterator {
-    private final byte[] bytes;
-    private int offset = 0;
-
-    public ByteArrayBufferIteratorBE(byte[] bytes) {
-      this.bytes = bytes;
-      this.offset = 0;
-    }
-
-    public void seek(int offset) {
-      this.offset = offset;
-    }
-
-    public void skip(int byteCount) {
-      this.offset += byteCount;
-    }
-
-    public void readByteArray(byte[] dst, int dstOffset, int byteCount) {
-      System.arraycopy(bytes, offset, dst, dstOffset, byteCount);
-      offset += byteCount;
-    }
-
-    public byte readByte() {
-      return bytes[offset++];
-    }
-
-    public int readInt() {
-      return ((readByte() & 0xff) << 24) | ((readByte() & 0xff) << 16) | ((readByte() & 0xff) << 8) | (readByte() & 0xff);
-    }
-
-    public void readIntArray(int[] dst, int dstOffset, int intCount) {
-      for (int i = 0; i < intCount; ++i) {
-        dst[dstOffset++] = readInt();
-      }
-    }
-
-    public short readShort() {
-      throw new UnsupportedOperationException();
-    }
-  }
-
-  // Maximum number of characters in a zone name, including '\0' terminator
+  // Maximum number of characters in a zone name, including '\0' terminator.
   private static final int MAXNAME = 40;
 
-  // Zone name synonyms
+  // Zone name synonyms.
   private Map<String,String> links = new HashMap<String,String>();
 
-  // File starting bytes by zone name
-  private Map<String,Integer> starts = new HashMap<String,Integer>();
+  // File offsets by zone name.
+  private Map<String,Integer> offsets = new HashMap<String,Integer>();
 
-  // File lengths by zone name
+  // File lengths by zone name.
   private Map<String,Integer> lengths = new HashMap<String,Integer>();
 
-  // Raw GMT offsets by zone name
-  private Map<String,Integer> offsets = new HashMap<String,Integer>();
-  private int start = 0;
-
-  // Concatenate the contents of 'inFile' onto 'out'
-  // and return the contents as a byte array.
-  private static byte[] copyFile(File inFile, OutputStream out) throws Exception {
+  // Concatenate the contents of 'inFile' onto 'out'.
+  private static void copyFile(File inFile, OutputStream out) throws Exception {
     byte[] ret = new byte[0];
 
     InputStream in = new FileInputStream(inFile);
@@ -104,14 +55,14 @@
       ret = nret;
     }
     out.flush();
-    return ret;
   }
 
   public ZoneCompactor(String setupFile, String dataDirectory, String zoneTabFile, String outputDirectory, String version) throws Exception {
-    // Read the setup file, and concatenate all the data.
+    // Read the setup file and concatenate all the data.
     ByteArrayOutputStream allData = new ByteArrayOutputStream();
     BufferedReader reader = new BufferedReader(new FileReader(setupFile));
     String s;
+    int offset = 0;
     while ((s = reader.readLine()) != null) {
       s = s.trim();
       if (s.startsWith("Link")) {
@@ -125,16 +76,11 @@
         if (link == null) {
           File sourceFile = new File(dataDirectory, s);
           long length = sourceFile.length();
-          starts.put(s, start);
+          offsets.put(s, offset);
           lengths.put(s, (int) length);
 
-          start += length;
-          byte[] data = copyFile(sourceFile, allData);
-
-          BufferIterator it = new ByteArrayBufferIteratorBE(data);
-          TimeZone tz = ZoneInfo.makeTimeZone(s, it);
-          int gmtOffset = tz.getRawOffset();
-          offsets.put(s, gmtOffset);
+          offset += length;
+          copyFile(sourceFile, allData);
         }
       }
     }
@@ -146,9 +92,8 @@
       String from = it.next();
       String to = links.get(from);
 
-      starts.put(from, starts.get(to));
-      lengths.put(from, lengths.get(to));
       offsets.put(from, offsets.get(to));
+      lengths.put(from, lengths.get(to));
     }
 
     // Create/truncate the destination file.
@@ -178,7 +123,7 @@
 
     // Write the index.
     ArrayList<String> sortedOlsonIds = new ArrayList<String>();
-    sortedOlsonIds.addAll(starts.keySet());
+    sortedOlsonIds.addAll(offsets.keySet());
     Collections.sort(sortedOlsonIds);
     it = sortedOlsonIds.iterator();
     while (it.hasNext()) {
@@ -188,9 +133,9 @@
       }
 
       f.write(toAscii(new byte[MAXNAME], zoneName));
-      f.writeInt(starts.get(zoneName));
-      f.writeInt(lengths.get(zoneName));
       f.writeInt(offsets.get(zoneName));
+      f.writeInt(lengths.get(zoneName));
+      f.writeInt(0); // Used to be raw GMT offset. No longer used.
     }
 
     int data_offset = (int) f.getFilePointer();
diff --git a/libc/tools/zoneinfo/update-tzdata.py b/libc/tools/zoneinfo/update-tzdata.py
index 6b69a5a..e800e8f 100755
--- a/libc/tools/zoneinfo/update-tzdata.py
+++ b/libc/tools/zoneinfo/update-tzdata.py
@@ -115,7 +115,7 @@
   print 'Configuring ICU tools...'
   subprocess.check_call(['%s/runConfigureICU' % icu_dir, 'Linux'])
   print 'Making ICU tools...'
-  subprocess.check_call(['make', '-j6'])
+  subprocess.check_call(['make', '-j32'])
 
   # Run the ICU tools.
   os.chdir('tools/tzcode')
@@ -169,11 +169,8 @@
   WriteSetupFile()
 
   print 'Calling ZoneCompactor to update bionic to %s...' % new_version
-  libcore_src_dir = '%s/../libcore/luni/src/main/java/' % bionic_dir
   subprocess.check_call(['javac', '-d', '.',
-                         '%s/ZoneCompactor.java' % bionic_libc_tools_zoneinfo_dir,
-                         '%s/libcore/util/ZoneInfo.java' % libcore_src_dir,
-                         '%s/libcore/io/BufferIterator.java' % libcore_src_dir])
+                         '%s/ZoneCompactor.java' % bionic_libc_tools_zoneinfo_dir])
   subprocess.check_call(['java', 'ZoneCompactor',
                          'setup', 'data', 'extracted/zone.tab',
                          bionic_libc_zoneinfo_dir, new_version])
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 5e4e962..3bbed90 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -2210,7 +2210,7 @@
     char buf[NAME_LENGTH];
     int32_t start;
     int32_t length;
-    int32_t raw_gmt_offset;
+    int32_t unused; // Was raw GMT offset; always 0 since tzdata2014f (L).
   };
 
   size_t id_count = (ntohl(header.data_offset) - ntohl(header.index_offset)) / sizeof(struct index_entry_t);
diff --git a/libc/zoneinfo/tzdata b/libc/zoneinfo/tzdata
index a5ae1f6..9547f58 100644
--- a/libc/zoneinfo/tzdata
+++ b/libc/zoneinfo/tzdata
Binary files differ
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 4da003f..5328e48 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -400,27 +400,36 @@
 }
 
 TEST(pthread, pthread_detach__leak) {
-  size_t initial_bytes = mallinfo().uordblks;
+  size_t initial_bytes = 0;
+  // Run this loop more than once since the first loop causes some memory
+  // to be allocated permenantly. Run an extra loop to help catch any subtle
+  // memory leaks.
+  for (size_t loop = 0; loop < 3; loop++) {
+    // Set the initial bytes on the second loop since the memory in use
+    // should have stabilized.
+    if (loop == 1) {
+      initial_bytes = mallinfo().uordblks;
+    }
 
-  pthread_attr_t attr;
-  ASSERT_EQ(0, pthread_attr_init(&attr));
-  ASSERT_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE));
+    pthread_attr_t attr;
+    ASSERT_EQ(0, pthread_attr_init(&attr));
+    ASSERT_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE));
 
-  std::vector<pthread_t> threads;
-  for (size_t i = 0; i < 32; ++i) {
-    pthread_t t;
-    ASSERT_EQ(0, pthread_create(&t, &attr, IdFn, NULL));
-    threads.push_back(t);
-  }
+    std::vector<pthread_t> threads;
+    for (size_t i = 0; i < 32; ++i) {
+      pthread_t t;
+      ASSERT_EQ(0, pthread_create(&t, &attr, IdFn, NULL));
+      threads.push_back(t);
+    }
 
-  sleep(1);
+    sleep(1);
 
-  for (size_t i = 0; i < 32; ++i) {
-    ASSERT_EQ(0, pthread_detach(threads[i])) << i;
+    for (size_t i = 0; i < 32; ++i) {
+      ASSERT_EQ(0, pthread_detach(threads[i])) << i;
+    }
   }
 
   size_t final_bytes = mallinfo().uordblks;
-
   int leaked_bytes = (final_bytes - initial_bytes);
 
   // User code (like this test) doesn't know how large pthread_internal_t is.