> Date: Wed, 20 Jul 2016 20:59:55 +0200
> From: Philip Guenther <[email protected]>
> 
> Updated diff:
>  - replace the remaining uses of PIC_SYM(CERROR,PLT) with plain CERROR

This bit looks ok to me

>  - add setjmp xor cookies
>  - switch _?(set|long)jmp from sigblock/sigsetmask to sigprocmask

But it is simply too hot to grok larger chunks of arm assembly right now.

> 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)
> 
> 

Reply via email to