Updated diff: - replace the remaining uses of PIC_SYM(CERROR,PLT) with plain CERROR - add setjmp xor cookies - switch _?(set|long)jmp from sigblock/sigsetmask to sigprocmask
ok? Index: lib/libc/arch/arm/DEFS.h =================================================================== RCS file: lib/libc/arch/arm/DEFS.h diff -N lib/libc/arch/arm/DEFS.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lib/libc/arch/arm/DEFS.h 18 Jul 2016 13:32:23 -0000 @@ -0,0 +1,40 @@ +/* $OpenBSD$ */ +/* + * Copyright (c) 2016 Philip Guenther <[email protected]> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <machine/asm.h> + +/* + * We define a hidden alias with the prefix "_libc_" for each global symbol + * that may be used internally. By referencing _libc_x instead of x, other + * parts of libc prevent overriding by the application and avoid unnecessary + * relocations. + */ +#define _HIDDEN(x) _libc_##x +#define _HIDDEN_ALIAS(x,y) \ + STRONG_ALIAS(_HIDDEN(x),y); \ + .hidden _HIDDEN(x) +#define _HIDDEN_FALIAS(x,y) \ + _HIDDEN_ALIAS(x,y); \ + .type _HIDDEN(x),#function + +/* + * For functions implemented in ASM that aren't syscalls. + * END_STRONG(x) Like DEF_STRONG() in C; for standard/reserved C names + * END_WEAK(x) Like DEF_WEAK() in C; for non-ISO C names + */ +#define END_STRONG(x) END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x)) +#define END_WEAK(x) END_STRONG(x); .weak x Index: lib/libc/arch/arm/SYS.h =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/SYS.h,v retrieving revision 1.15 diff -u -p -r1.15 SYS.h --- lib/libc/arch/arm/SYS.h 7 May 2016 19:05:21 -0000 1.15 +++ lib/libc/arch/arm/SYS.h 19 Jul 2016 16:31:49 -0000 @@ -35,33 +35,10 @@ * from: @(#)SYS.h 5.5 (Berkeley) 5/7/91 */ -#include <machine/asm.h> +#include "DEFS.h" #include <sys/syscall.h> -/* - * We define a hidden alias with the prefix "_libc_" for each global symbol - * that may be used internally. By referencing _libc_x instead of x, other - * parts of libc prevent overriding by the application and avoid unnecessary - * relocations. - */ -#define _HIDDEN(x) _libc_##x -#define _HIDDEN_ALIAS(x,y) \ - STRONG_ALIAS(_HIDDEN(x),y); \ - .hidden _HIDDEN(x) -#define _HIDDEN_FALIAS(x,y) \ - _HIDDEN_ALIAS(x,y); \ - .type _HIDDEN(x),#function - -/* - * For functions implemented in ASM that aren't syscalls. - * END_STRONG(x) Like DEF_STRONG() in C; for standard/reserved C names - * END_WEAK(x) Like DEF_WEAK() in C; for non-ISO C names - */ -#define END_STRONG(x) END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x)) -#define END_WEAK(x) END_STRONG(x); .weak x - - #define SYSENTRY(x) \ .weak _C_LABEL(x); \ _C_LABEL(x) = _C_LABEL(_thread_sys_ ## x); \ @@ -90,10 +67,10 @@ #define _SYSCALL(x, y) \ _SYSCALL_NOERROR(x,y); \ - bcs PIC_SYM(CERROR, PLT) + bcs CERROR #define _SYSCALL_HIDDEN(x, y) \ _SYSCALL_HIDDEN_NOERROR(x,y); \ - bcs PIC_SYM(CERROR, PLT) + bcs CERROR #define SYSCALL_NOERROR(x) \ _SYSCALL_NOERROR(x,x) Index: lib/libc/arch/arm/gen/_setjmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/gen/_setjmp.S,v retrieving revision 1.3 diff -u -p -r1.3 _setjmp.S --- lib/libc/arch/arm/gen/_setjmp.S 23 May 2016 00:18:57 -0000 1.3 +++ lib/libc/arch/arm/gen/_setjmp.S 21 Jul 2016 02:00:08 -0000 @@ -33,9 +33,18 @@ * SUCH DAMAGE. */ -#include <machine/asm.h> +#include "DEFS.h" #include <machine/setjmp.h> + .section .openbsd.randomdata,"aw",%progbits + .align 4 + .globl __jmpxor +__jmpxor: + .zero 4*2 /* (sp, lr) */ + END(__jmpxor) + .type __jmpxor,%object + + /* * C library -- _setjmp, _longjmp * @@ -52,6 +61,13 @@ ENTRY(_setjmp) ldr r1, .L_setjmp_magic str r1, [r0], #4 + ldr r2, .L_jmpxor_setjmp +1: add r2, pc, r2 /* r2 = &__jmpxor */ + ldr r3, [r2], #4 /* r3 = __jmpxor[1] */ + ldr r2, [r2] /* r2 = __jmpxor[0] */ + eor r2, r13, r2 /* r2 = sp ^ __jmpxor[0] */ + eor r3, lr, r3 /* r3 = lr ^ __jmpxor[1] */ + #ifdef SOFTFLOAT add r0, r0, #52 #else @@ -62,13 +78,18 @@ ENTRY(_setjmp) str r1, [r0], #0x0004 #endif /* SOFTFLOAT */ /* Store integer registers */ - stmia r0, {r4-r14} + stmia r0, {r2-r11} - mov r0, #0x00000000 - mov r15, r14 + mov r0, #0x00000000 + mov r2, r0 /* overwrite __jmpxor copies */ + mov r3, r0 + mov pc, lr .L_setjmp_magic: .word _JB_MAGIC__SETJMP +.L_jmpxor_setjmp: + .word __jmpxor - 1b +END_STRONG(_setjmp) ENTRY(_longjmp) ldr r2, .L_setjmp_magic @@ -85,21 +106,34 @@ ENTRY(_longjmp) ldr r4, [r0], #0x0004 wfs r4 #endif /* SOFTFLOAT */ - /* Restore integer registers */ - ldmia r0, {r4-r14} + /* Restore integer registers */ + ldmia r0, {r2-r11} - /* Validate sp and r14 */ + ldr r0, .L_jmpxor_longjmp +1: add r0, pc, r0 /* r0 = &__jmpxor */ + ldr lr, [r0], #4 /* lr = __jmpxor[1] */ + eor lr, r3, lr /* lr ^= jmpbuf[LR] */ + ldr r0, [r0] /* r0 = __jmpxor[0] */ + eor r13, r0, r2 /* sp = __jmpxor[0] ^ jmpbuf[SP] */ + mov r2, r1 /* overwrite __jmpxor copies */ + mov r3, r1 + + /* Validate sp and lr */ teq sp, #0 - teqne r14, #0 + teqne lr, #0 beq botch /* Set return value */ mov r0, r1 teq r0, #0x00000000 moveq r0, #0x00000001 - mov r15, r14 + mov pc, lr + +.L_jmpxor_longjmp: + .word __jmpxor - 1b /* validation failed, die die die. */ botch: - bl PIC_SYM(_libc_abort, PLT) + bl _HIDDEN(abort) b . - 8 /* Cannot get here */ +END_STRONG(_longjmp) Index: lib/libc/arch/arm/gen/divsi3.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/gen/divsi3.S,v retrieving revision 1.2 diff -u -p -r1.2 divsi3.S --- lib/libc/arch/arm/gen/divsi3.S 1 Feb 2004 05:40:52 -0000 1.2 +++ lib/libc/arch/arm/gen/divsi3.S 18 Jul 2016 13:34:56 -0000 @@ -15,7 +15,7 @@ * SUCH DAMAGE. */ -#include <machine/asm.h> +#include "DEFS.h" /* * stack is aligned as there's a possibility of branching to .L_overflow @@ -41,7 +41,7 @@ ENTRY(__modsi3) .L_overflow: #if !defined(_KERNEL) && !defined(_STANDALONE) mov r0, #8 /* SIGFPE */ - bl PIC_SYM(_C_LABEL(raise), PLT) /* raise it */ + bl _HIDDEN(raise) /* raise it */ mov r0, #0 #else /* XXX should cause a fatal error */ Index: lib/libc/arch/arm/gen/setjmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/gen/setjmp.S,v retrieving revision 1.4 diff -u -p -r1.4 setjmp.S --- lib/libc/arch/arm/gen/setjmp.S 23 May 2016 00:18:57 -0000 1.4 +++ lib/libc/arch/arm/gen/setjmp.S 21 Jul 2016 03:48:41 -0000 @@ -33,9 +33,11 @@ * SUCH DAMAGE. */ -#include <machine/asm.h> +#include "SYS.h" #include <machine/setjmp.h> + .hidden __jmpxor + /* * C library -- setjmp, longjmp * @@ -48,36 +50,46 @@ ENTRY(setjmp) /* Block all signals and retrieve the old signal mask */ - stmfd sp!, {r0, r14} - mov r0, #0x00000000 - - bl PIC_SYM(_C_LABEL(_libc_sigblock), PLT) - mov r1, r0 - - ldmfd sp!, {r0, r14} + mov r2, r0 + mov r1, #0x00000000 + mov r0, #0x00000001 /* SIG_BLOCK */ + SYSTRAP(sigprocmask) /* Store signal mask */ - str r1, [r0, #(25 * 4)] + str r0, [r2, #(25 * 4)] ldr r1, .Lsetjmp_magic - str r1, [r0], #4 + str r1, [r2], #4 + + ldr r12, .L_jmpxor_setjmp +1: add r12, pc, r12 /* r12 = &__jmpxor */ + ldr r3, [r12], #4 /* r3 = __jmpxor[1] */ + ldr r12, [r12] /* r12 = __jmpxor[0] */ + eor r12, r13, r12 /* r12 = sp ^ __jmpxor[0] */ + eor r3, lr, r3 /* r3 = lr ^ __jmpxor[1] */ #ifdef SOFTFLOAT - add r0, r0, #52 + add r2, r2, #52 #else /* Store fp registers */ - sfm f4, 4, [r0], #48 + sfm f4, 4, [r2], #48 /* Store fpsr */ rfs r1 - str r1, [r0], #0x0004 + str r1, [r2], #0x0004 #endif /*SOFTFLOAT*/ /* Store integer registers */ - stmia r0, {r4-r14} - mov r0, #0x00000000 - mov r15, r14 + stmia r2, {r3-r12} + + mov r0, #0x00000000 + mov r12, r0 /* overwrite __jmpxor copies */ + mov r3, r0 + mov pc, lr .Lsetjmp_magic: .word _JB_MAGIC_SETJMP +.L_jmpxor_setjmp: + .word __jmpxor - 1b +END_STRONG(setjmp) ENTRY(longjmp) @@ -86,49 +98,51 @@ ENTRY(longjmp) teq r2, r3 bne botch - /* Fetch signal mask */ - ldr r2, [r0, #(25 * 4)] + /* Fetch signal mask and call sigprocmask */ + mov r3, r0 /* r3 = jmpbuf */ + mov r2, r1 /* r2 = retvalue */ + ldr r1, [r0, #(25 * 4)] + mov r0, #0x00000003 /* SIG_SETMASK */ + SYSTRAP(sigprocmask) - /* Set signal mask */ - stmfd sp!, {r0, r1, r14} - sub sp, sp, #4 /* align the stack */ - - mov r0, r2 - bl PIC_SYM(_C_LABEL(_libc_sigsetmask), PLT) - - add sp, sp, #4 /* unalign the stack */ - ldmfd sp!, {r0, r1, r14} - - add r0, r0, #4 + add r3, r3, #4 #ifdef SOFTFLOAT - add r0, r0, #52 + add r3, r3, #52 #else /* Restore fp registers */ - lfm f4, 4, [r0], #48 + lfm f4, 4, [r3], #48 /* Restore FPSR */ - ldr r4, [r0], #0x0004 + ldr r4, [r3], #0x0004 wfs r4 #endif /* SOFTFLOAT */ /* Restore integer registers */ - ldmia r0, {r4-r14} + ldmia r3, {r3-r12} + + ldr r0, .L_jmpxor_longjmp +1: add r0, pc, r0 /* r0 = &__jmpxor */ + ldr lr, [r0], #4 /* lr = __jmpxor[1] */ + eor lr, r3, lr /* lr ^= jmpbuf[LR] */ + ldr r0, [r0] /* r0 = __jmpxor[0] */ + eor r13, r0, r12 /* sp = __jmpxor[0] ^ jmpbuf[SP] */ + mov r12, r2 /* overwrite __jmpxor copies */ + mov r3, r2 - /* Validate sp and r14 */ + /* Validate sp and lr */ teq sp, #0 - teqne r14, #0 + teqne lr, #0 beq botch /* Set return value */ - - mov r0, r1 + mov r0, r12 teq r0, #0x00000000 moveq r0, #0x00000001 -#ifdef __ARM_26__ - mov r15, r14 -#else - mov r15, r14 -#endif + mov pc, lr + +.L_jmpxor_longjmp: + .word __jmpxor - 1b /* validation failed, die die die. */ botch: - bl PIC_SYM(_libc_abort, PLT) + bl _HIDDEN(abort) b . - 8 /* Cannot get here */ +END_STRONG(longjmp) Index: lib/libc/arch/arm/gen/sigsetjmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/gen/sigsetjmp.S,v retrieving revision 1.2 diff -u -p -r1.2 sigsetjmp.S --- lib/libc/arch/arm/gen/sigsetjmp.S 1 Feb 2004 05:40:52 -0000 1.2 +++ lib/libc/arch/arm/gen/sigsetjmp.S 18 Jul 2016 13:34:19 -0000 @@ -33,7 +33,7 @@ * SUCH DAMAGE. */ -#include <machine/asm.h> +#include "DEFS.h" #include <machine/setjmp.h> /* @@ -48,8 +48,8 @@ ENTRY(sigsetjmp) teq r1, #0 - beq PIC_SYM(_C_LABEL(_setjmp), PLT) - b PIC_SYM(_C_LABEL(setjmp), PLT) + beq _HIDDEN(_setjmp) + b _HIDDEN(setjmp) .L_setjmp_magic: .word _JB_MAGIC__SETJMP @@ -58,5 +58,5 @@ ENTRY(siglongjmp) ldr r2, .L_setjmp_magic ldr r3, [r0] teq r2, r3 - beq PIC_SYM(_C_LABEL(_longjmp), PLT) - b PIC_SYM(_C_LABEL(longjmp), PLT) + beq _HIDDEN(_longjmp) + b _HIDDEN(longjmp) Index: lib/libc/arch/arm/string/_memcpy.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/_memcpy.S,v retrieving revision 1.5 diff -u -p -r1.5 _memcpy.S --- lib/libc/arch/arm/string/_memcpy.S 31 Aug 2015 02:53:56 -0000 1.5 +++ lib/libc/arch/arm/string/_memcpy.S 18 Jul 2016 13:37:23 -0000 @@ -30,7 +30,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" /* * This is one fun bit of code ... @@ -462,4 +462,4 @@ ENTRY(_memcpy) .Lmemcpy_bsrcul1l4: add r1, r1, #1 b .Lmemcpy_bl4 -END(_memcpy) +END_STRONG(_memcpy) Index: lib/libc/arch/arm/string/bcopy.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/bcopy.S,v retrieving revision 1.4 diff -u -p -r1.4 bcopy.S --- lib/libc/arch/arm/string/bcopy.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/bcopy.S 18 Jul 2016 13:36:20 -0000 @@ -30,7 +30,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" /* bcopy = memcpy/memmove with arguments reversed. */ @@ -39,5 +39,5 @@ ENTRY(bcopy) eor r0, r1, r0 eor r1, r0, r1 eor r0, r1, r0 - b PIC_SYM(_C_LABEL(_memcpy), PLT) + b _HIDDEN(_memcpy) END_WEAK(bcopy) Index: lib/libc/arch/arm/string/bzero.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/bzero.S,v retrieving revision 1.4 diff -u -p -r1.4 bzero.S --- lib/libc/arch/arm/string/bzero.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/bzero.S 18 Jul 2016 13:36:28 -0000 @@ -30,10 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" ENTRY(bzero) mov r2, r1 mov r1, #0 - b PIC_SYM(_C_LABEL(memset), PLT) + b _HIDDEN(memset) END_WEAK(bzero) Index: lib/libc/arch/arm/string/ffs.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/ffs.S,v retrieving revision 1.4 diff -u -p -r1.4 ffs.S --- lib/libc/arch/arm/string/ffs.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/ffs.S 18 Jul 2016 13:37:24 -0000 @@ -29,7 +29,7 @@ * SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" /* * ffs - find first set bit, this algorithm isolates the first set Index: lib/libc/arch/arm/string/memcmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/memcmp.S,v retrieving revision 1.5 diff -u -p -r1.5 memcmp.S --- lib/libc/arch/arm/string/memcmp.S 31 Aug 2015 02:53:56 -0000 1.5 +++ lib/libc/arch/arm/string/memcmp.S 18 Jul 2016 13:37:27 -0000 @@ -29,7 +29,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" ENTRY(memcmp) /* if (len == 0) return 0 */ Index: lib/libc/arch/arm/string/memcpy.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/memcpy.S,v retrieving revision 1.5 diff -u -p -r1.5 memcpy.S --- lib/libc/arch/arm/string/memcpy.S 31 Aug 2015 02:53:56 -0000 1.5 +++ lib/libc/arch/arm/string/memcpy.S 18 Jul 2016 13:36:42 -0000 @@ -30,7 +30,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" /* * XXX @@ -40,6 +40,6 @@ ENTRY(memcpy) stmfd sp!, {r0, lr} - bl PIC_SYM(_C_LABEL(_memcpy), PLT) + bl _HIDDEN(_memcpy) ldmfd sp!, {r0, pc} END_STRONG(memcpy) Index: lib/libc/arch/arm/string/memmove.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/memmove.S,v retrieving revision 1.4 diff -u -p -r1.4 memmove.S --- lib/libc/arch/arm/string/memmove.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/memmove.S 18 Jul 2016 13:37:00 -0000 @@ -30,10 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" ENTRY(memmove) stmfd sp!, {r0, lr} - bl PIC_SYM(_C_LABEL(_memcpy), PLT) + bl _HIDDEN(_memcpy) ldmfd sp!, {r0, pc} END_STRONG(memmove) Index: lib/libc/arch/arm/string/memset.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/memset.S,v retrieving revision 1.4 diff -u -p -r1.4 memset.S --- lib/libc/arch/arm/string/memset.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/memset.S 18 Jul 2016 13:37:29 -0000 @@ -33,7 +33,7 @@ * SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" /* * Sets a block of memory to the specified value Index: lib/libc/arch/arm/string/strcmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/strcmp.S,v retrieving revision 1.4 diff -u -p -r1.4 strcmp.S --- lib/libc/arch/arm/string/strcmp.S 31 Aug 2015 02:53:56 -0000 1.4 +++ lib/libc/arch/arm/string/strcmp.S 18 Jul 2016 13:37:30 -0000 @@ -29,7 +29,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" ENTRY(strcmp) 1: Index: lib/libc/arch/arm/string/strncmp.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/string/strncmp.S,v retrieving revision 1.5 diff -u -p -r1.5 strncmp.S --- lib/libc/arch/arm/string/strncmp.S 31 Aug 2015 02:53:56 -0000 1.5 +++ lib/libc/arch/arm/string/strncmp.S 18 Jul 2016 13:37:32 -0000 @@ -29,7 +29,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "SYS.h" +#include "DEFS.h" ENTRY(strncmp) /* if (len == 0) return 0 */ Index: lib/libc/arch/arm/sys/Ovfork.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/Ovfork.S,v retrieving revision 1.6 diff -u -p -r1.6 Ovfork.S --- lib/libc/arch/arm/sys/Ovfork.S 7 May 2016 19:05:21 -0000 1.6 +++ lib/libc/arch/arm/sys/Ovfork.S 19 Jul 2016 16:32:02 -0000 @@ -40,6 +40,6 @@ SYSENTRY_HIDDEN(vfork) mov r2, r14 SYSTRAP(vfork) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR mov r15, r2 SYSCALL_END_HIDDEN(vfork) Index: lib/libc/arch/arm/sys/brk.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/brk.S,v retrieving revision 1.8 diff -u -p -r1.8 brk.S --- lib/libc/arch/arm/sys/brk.S 30 May 2016 05:18:52 -0000 1.8 +++ lib/libc/arch/arm/sys/brk.S 19 Jul 2016 16:32:22 -0000 @@ -71,7 +71,7 @@ ENTRY(brk) movcc r0, r1 mov r2, r0 SYSTRAP(break) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR #ifdef __PIC__ ldr r1, .Lcurbrk Index: lib/libc/arch/arm/sys/cerror.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/cerror.S,v retrieving revision 1.8 diff -u -p -r1.8 cerror.S --- lib/libc/arch/arm/sys/cerror.S 7 May 2016 19:05:21 -0000 1.8 +++ lib/libc/arch/arm/sys/cerror.S 18 Jul 2016 13:47:26 -0000 @@ -37,7 +37,7 @@ _ENTRY(CERROR) stmfd sp!, {r4, lr} mov r4, r0 - bl PIC_SYM(_C_LABEL(__errno), PLT) + bl _HIDDEN(__errno) str r4, [r0] mvn r0, #0x00000000 mvn r1, #0x00000000 Index: lib/libc/arch/arm/sys/sbrk.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/sbrk.S,v retrieving revision 1.8 diff -u -p -r1.8 sbrk.S --- lib/libc/arch/arm/sys/sbrk.S 30 May 2016 05:18:52 -0000 1.8 +++ lib/libc/arch/arm/sys/sbrk.S 19 Jul 2016 16:32:29 -0000 @@ -67,7 +67,7 @@ ENTRY(sbrk) mov r3, r0 add r0, r0, r1 SYSTRAP(break) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR /* Store new curbrk value */ ldr r0, [r2] Index: lib/libc/arch/arm/sys/sigpending.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/sigpending.S,v retrieving revision 1.4 diff -u -p -r1.4 sigpending.S --- lib/libc/arch/arm/sys/sigpending.S 10 Sep 2015 13:29:09 -0000 1.4 +++ lib/libc/arch/arm/sys/sigpending.S 19 Jul 2016 16:32:39 -0000 @@ -37,7 +37,7 @@ SYSENTRY(sigpending) mov r2, r0 SYSTRAP(sigpending) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR str r0, [r2] mov r0, #0x00000000 mov r15, r14 Index: lib/libc/arch/arm/sys/sigprocmask.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/sigprocmask.S,v retrieving revision 1.4 diff -u -p -r1.4 sigprocmask.S --- lib/libc/arch/arm/sys/sigprocmask.S 23 Oct 2015 04:39:24 -0000 1.4 +++ lib/libc/arch/arm/sys/sigprocmask.S 19 Jul 2016 16:32:43 -0000 @@ -40,7 +40,7 @@ SYSENTRY_HIDDEN(sigprocmask) moveq r1, #0x00000000 ldrne r1, [r1] SYSTRAP(sigprocmask) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR teq r2, #0x00000000 strne r0, [r2] mov r0, #0x00000000 Index: lib/libc/arch/arm/sys/sigsuspend.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/sigsuspend.S,v retrieving revision 1.5 diff -u -p -r1.5 sigsuspend.S --- lib/libc/arch/arm/sys/sigsuspend.S 7 May 2016 19:05:21 -0000 1.5 +++ lib/libc/arch/arm/sys/sigsuspend.S 19 Jul 2016 16:32:46 -0000 @@ -37,7 +37,7 @@ SYSENTRY_HIDDEN(sigsuspend) ldr r0, [r0] SYSTRAP(sigsuspend) - bcs PIC_SYM(CERROR, PLT) + bcs CERROR mov r0, #0x00000000 mov r15, r14 SYSCALL_END_HIDDEN(sigsuspend) Index: lib/libc/arch/arm/sys/tfork_thread.S =================================================================== RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/tfork_thread.S,v retrieving revision 1.3 diff -u -p -r1.3 tfork_thread.S --- lib/libc/arch/arm/sys/tfork_thread.S 10 Sep 2015 13:29:09 -0000 1.3 +++ lib/libc/arch/arm/sys/tfork_thread.S 19 Jul 2016 16:33:04 -0000 @@ -25,7 +25,7 @@ ENTRY(__tfork_thread) SYSTRAP(__tfork) - bcs 1f /* XXX can this be PIC_SYM(CERROR, PLT) ? */ + bcs CERROR /* check if we are parent or child */ cmp r0, #0 @@ -37,6 +37,4 @@ ENTRY(__tfork_thread) mov pc, r2 nop SYSTRAP(__threxit) -1: - b PIC_SYM(CERROR, PLT) END(__tfork_thread)
