Changes needed for ARM ELF shared library support.

This commit is contained in:
matt 2001-07-16 05:50:05 +00:00
parent f6c7ed1948
commit 5feec23305
22 changed files with 92 additions and 84 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: SYS.h,v 1.1 2000/12/29 20:13:45 bjh21 Exp $ */
/* $NetBSD: SYS.h,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -47,13 +47,21 @@
#define SYSTRAP(x) swi SYS_/**/x
#endif
#ifdef __ELF__
#define CERROR _C_LABEL(__cerror)
#define CURBRK _C_LABEL(__curbrk)
#else
#define CERROR _ASM_LABEL(cerror)
#define CURBRK _ASM_LABEL(curbrk)
#endif
#define _SYSCALL_NOERROR(x,y) \
ENTRY(x); \
SYSTRAP(y)
#define _SYSCALL(x, y) \
_SYSCALL_NOERROR(x,y); \
bcs cerror
bcs PIC_SYM(CERROR, PLT)
#define SYSCALL_NOERROR(x) \
_SYSCALL_NOERROR(x,x)
@ -89,4 +97,4 @@
#define RSYSCALL(x) \
PSEUDO(x,x)
.globl cerror
.globl CERROR

View File

@ -1,4 +1,4 @@
/* $NetBSD: __setjmp14.S,v 1.1 2000/12/29 20:13:45 bjh21 Exp $ */
/* $NetBSD: __setjmp14.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@ -51,7 +51,7 @@ ENTRY(__setjmp14)
add r2, r0, #(_JB_SIGMASK * 4)
mov r1, #0x00000000
mov r0, #0x00000000
bl _C_LABEL(__sigprocmask14)
bl PIC_SYM(_C_LABEL(__sigprocmask14), PLT)
ldmfd r13!, {r0-r2, r14}
ldr r1, Lsetjmp_magic
@ -90,7 +90,7 @@ ENTRY(__longjmp14)
mov r2, #0x00000000
add r1, r0, #(_JB_SIGMASK * 4)
mov r0, #3 /* SIG_SETMASK */
bl _C_LABEL(__sigprocmask14)
bl PIC_SYM(_C_LABEL(__sigprocmask14), PLT)
ldmfd r13!, {r0-r2, r14}
add r0, r0, #4
@ -125,6 +125,6 @@ ENTRY(__longjmp14)
/* validation failed, die die die. */
botch:
bl _C_LABEL(longjmperror)
bl _C_LABEL(abort)
bl PIC_SYM(_C_LABEL(longjmperror), PLT)
bl PIC_SYM(_C_LABEL(abort), PLT)
b . - 8 /* Cannot get here */

View File

@ -1,4 +1,4 @@
/* $NetBSD: __sigsetjmp14.S,v 1.1 2000/12/29 20:13:46 bjh21 Exp $ */
/* $NetBSD: __sigsetjmp14.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@ -47,8 +47,8 @@
ENTRY(__sigsetjmp14)
teq r1, #0
beq _C_LABEL(_setjmp)
b _C_LABEL(__setjmp14)
beq PIC_SYM(_C_LABEL(_setjmp), PLT)
b PIC_SYM(_C_LABEL(__setjmp14), PLT)
L_setjmp_magic:
.word _JB_MAGIC__SETJMP
@ -57,5 +57,5 @@ ENTRY(__siglongjmp14)
ldr r2, L_setjmp_magic
ldr r3, [r0]
teq r2, r3
beq _C_LABEL(_longjmp)
b _C_LABEL(__longjmp14)
beq PIC_SYM(_C_LABEL(_longjmp), PLT)
b PIC_SYM(_C_LABEL(__longjmp14), PLT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: _setjmp.S,v 1.1 2000/12/29 20:13:46 bjh21 Exp $ */
/* $NetBSD: _setjmp.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@ -109,6 +109,6 @@ ENTRY(_longjmp)
/* validation failed, die die die. */
botch:
bl _C_LABEL(longjmperror)
bl _C_LABEL(abort)
bl PIC_SYM(_C_LABEL(longjmperror), PLT)
bl PIC_SYM(_C_LABEL(abort), PLT)
b . - 8 /* Cannot get here */

View File

@ -1,4 +1,4 @@
/* $NetBSD: divsi3.S,v 1.1 2000/12/29 20:13:47 bjh21 Exp $ */
/* $NetBSD: divsi3.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
@ -39,7 +39,7 @@ ENTRY(__modsi3)
L_overflow:
#if !defined(_KERNEL) && !defined(_STANDALONE)
mov r0, #8 /* SIGFPE */
bl _C_LABEL(raise) /* raise it */
bl PIC_SYM(_C_LABEL(raise), PLT) /* raise it */
mov r0, #0
#else
/* XXX should cause a fatal error */

View File

@ -1,4 +1,4 @@
/* $NetBSD: setjmp.S,v 1.1 2000/12/29 20:13:51 bjh21 Exp $ */
/* $NetBSD: setjmp.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@ -50,7 +50,7 @@ ENTRY(setjmp)
stmfd r13!, {r0, r14}
mov r0, #0x00000000
bl _C_LABEL(sigblock)
bl PIC_SYM(_C_LABEL(sigblock), PLT)
mov r1, r0
ldmfd r13!, {r0, r14}
@ -96,7 +96,7 @@ ENTRY(longjmp)
stmfd r13!, {r0, r1, r14}
mov r0, r2
bl _C_LABEL(sigsetmask)
bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
ldmfd r13!, {r0, r1, r14}
@ -132,6 +132,6 @@ ENTRY(longjmp)
/* validation failed, die die die. */
botch:
bl _C_LABEL(longjmperror)
bl _C_LABEL(abort)
bl PIC_SYM(_C_LABEL(longjmperror), PLT)
bl PIC_SYM(_C_LABEL(abort), PLT)
b . - 8 /* Cannot get here */

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigsetjmp.S,v 1.1 2000/12/29 20:13:51 bjh21 Exp $ */
/* $NetBSD: sigsetjmp.S,v 1.2 2001/07/16 05:50:05 matt Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@ -47,8 +47,8 @@
ENTRY(sigsetjmp)
teq r1, #0
beq _C_LABEL(_setjmp)
b _C_LABEL(setjmp)
beq PIC_SYM(_C_LABEL(_setjmp), PLT)
b PIC_SYM(_C_LABEL(setjmp), PLT)
L_setjmp_magic:
.word _JB_MAGIC__SETJMP
@ -57,5 +57,5 @@ ENTRY(siglongjmp)
ldr r2, L_setjmp_magic
ldr r3, [r0]
teq r2, r3
beq _C_LABEL(_longjmp)
b _C_LABEL(longjmp)
beq PIC_SYM(_C_LABEL(_longjmp), PLT)
b PIC_SYM(_C_LABEL(longjmp), PLT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: bcopy.S,v 1.1 2000/12/29 20:13:57 bjh21 Exp $ */
/* $NetBSD: bcopy.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -45,4 +45,4 @@ ENTRY(bcopy)
eor r0, r1, r0
eor r1, r0, r1
eor r0, r1, r0
b _C_LABEL(_memcpy)
b PIC_SYM(_C_LABEL(_memcpy), PLT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: bzero.S,v 1.1 2000/12/29 20:13:57 bjh21 Exp $ */
/* $NetBSD: bzero.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -41,4 +41,4 @@
ENTRY(bzero)
mov r2, r1
mov r1, #0
b _C_LABEL(memset)
b PIC_SYM(_C_LABEL(memset), PLT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: memcpy.S,v 1.1 2000/12/29 20:13:57 bjh21 Exp $ */
/* $NetBSD: memcpy.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -40,7 +40,7 @@
ENTRY(memcpy)
stmfd sp!, {r0, lr}
bl _C_LABEL(_memcpy)
bl PIC_SYM(_C_LABEL(_memcpy), PLT)
#ifdef __APCS_26__
ldmfd sp!, {r0, pc}^
#else

View File

@ -1,4 +1,4 @@
/* $NetBSD: memmove.S,v 1.1 2000/12/29 20:13:57 bjh21 Exp $ */
/* $NetBSD: memmove.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -40,7 +40,7 @@
ENTRY(memmove)
stmfd sp!, {r0, lr}
bl _C_LABEL(_memcpy)
bl PIC_SYM(_C_LABEL(_memcpy), PLT)
#ifdef __APCS_26__
ldmfd sp!, {r0, pc}^
#else

View File

@ -1,4 +1,4 @@
/* $NetBSD: Ovfork.S,v 1.3 2001/01/09 19:47:27 bjh21 Exp $ */
/* $NetBSD: Ovfork.S,v 1.4 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -53,7 +53,7 @@ WARN_REFERENCES(vfork, \
ENTRY(vfork)
mov r2, r14
SYSTRAP(vfork)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
sub r1, r1, #1 /* r1 == 0xffffffff if parent, 0 if child */
and r0, r0, r1 /* r0 == 0 if child, else unchanged */
#ifdef __APCS_26__

View File

@ -1,4 +1,4 @@
/* $NetBSD: __vfork14.S,v 1.3 2001/01/09 19:47:27 bjh21 Exp $ */
/* $NetBSD: __vfork14.S,v 1.4 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -50,7 +50,7 @@
ENTRY(__vfork14)
mov r2, r14
SYSTRAP(__vfork14)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
sub r1, r1, #1 /* r1 == 0xffffffff if parent, 0 if child */
and r0, r0, r1 /* r0 == 0 if child, else unchanged */
#ifdef __APCS_26__

View File

@ -1,4 +1,4 @@
/* $NetBSD: brk.S,v 1.2 2001/01/09 19:47:27 bjh21 Exp $ */
/* $NetBSD: brk.S,v 1.3 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -37,8 +37,8 @@
#include "SYS.h"
.globl _end
.globl curbrk
.globl _C_LABEL(end)
.globl CURBRK
#ifdef WEAK_ALIAS
WEAK_ALIAS(brk, _brk)
@ -49,7 +49,7 @@ WEAK_ALIAS(brk, _brk)
.globl _C_LABEL(__minbrk)
.type _C_LABEL(__minbrk),#object
_C_LABEL(__minbrk):
.word _end
.word _C_LABEL(end)
/*
* Change the data segment size
@ -59,7 +59,7 @@ ENTRY(_brk)
/* Setup the GOT */
ldr r3, Lgot
add r3, pc, r3
L1:
.L1:
ldr r1, Lminbrk
ldr r1, [r3, r1]
#else
@ -76,7 +76,7 @@ L1:
movlt r0, r1
mov r2, r0
SYSTRAP(break)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
#ifdef PIC
ldr r1, Lcurbrk
@ -95,12 +95,12 @@ L1:
mov r15, r14
#endif
.align 0
.align 2
#ifdef PIC
Lgot:
.word __GLOBAL_OFFSET_TABLE_+. - (L1+4)
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif
Lminbrk:
.word _C_LABEL(__minbrk)
.word PIC_SYM(_C_LABEL(__minbrk), GOT)
Lcurbrk:
.word curbrk
.word PIC_SYM(CURBRK, GOT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: cerror.S,v 1.1 2000/12/29 20:14:02 bjh21 Exp $ */
/* $NetBSD: cerror.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -37,11 +37,11 @@
#include "SYS.h"
ASENTRY(cerror)
ASENTRY(CERROR)
#ifdef _REENTRANT
stmfd sp!, {r4, lr}
mov r4, r0
bl _C_LABEL(__errno)
bl PIC_SYM(_C_LABEL(__errno), PLT)
str r4, [r0]
mvn r0, #0x00000000
mvn r1, #0x00000000
@ -55,7 +55,7 @@ ASENTRY(cerror)
/* Setup the GOT */
ldr r3, got
add r3, pc, r3
L1:
.L1:
ldr r1, Lerrno
ldr r1, [r3, r1]
#else
@ -73,11 +73,11 @@ L1:
#ifdef PIC
.align 0
got:
.word __GLOBAL_OFFSET_TABLE_ + (. - (L1+4))
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif /* PIC */
.globl _C_LABEL(errno)
Lerrno:
.word _C_LABEL(errno)
.word PIC_SYM(_C_LABEL(errno), GOT)
#endif /* _REENTRANT */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pipe.S,v 1.2 2001/01/09 19:47:27 bjh21 Exp $ */
/* $NetBSD: pipe.S,v 1.3 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -44,7 +44,7 @@ WEAK_ALIAS(pipe, _pipe)
ENTRY(_pipe)
mov r2, r0
SYSTRAP(pipe)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
str r0, [r2, #0x0000]
str r1, [r2, #0x0004]
mov r0, #0x00000000

View File

@ -1,4 +1,4 @@
/* $NetBSD: ptrace.S,v 1.2 2001/01/09 19:47:28 bjh21 Exp $ */
/* $NetBSD: ptrace.S,v 1.3 2001/07/16 05:50:06 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -40,7 +40,7 @@
ENTRY(ptrace)
#ifdef _REENTRANT
stmfd sp!, {r0-r3, lr}
bl _C_LABEL(__errno)
bl PIC_SYM(_C_LABEL(__errno), PLT)
mov r1, #0x00000000
str r1, [r0]
ldmfd sp!, {r0-r3, lr}
@ -50,7 +50,7 @@ ENTRY(ptrace)
/* Setup the GOT */
ldr r0, got
add r0, pc, r0
L1:
.L1:
ldr r1, Lerrno
ldr r1, [r0, r1]
#else
@ -62,7 +62,7 @@ L1:
#endif /* _REENTRANT */
SYSTRAP(ptrace)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
#ifdef __APCS_26__
movs pc, lr
#else
@ -73,9 +73,9 @@ L1:
#ifdef PIC
.align 0
got:
.word __GLOBAL_OFFSET_TABLE_ + (. - (L1+4))
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif /* PIC */
Lerrno:
.word _C_LABEL(errno)
.word PIC_SYM(_C_LABEL(errno), GOT)
#endif /* !_REENTRANT */

View File

@ -1,4 +1,4 @@
/* $NetBSD: sbrk.S,v 1.3 2001/05/05 17:53:59 kleink Exp $ */
/* $NetBSD: sbrk.S,v 1.4 2001/07/16 05:50:07 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -37,7 +37,7 @@
#include "SYS.h"
.globl _end
.globl _C_LABEL(end)
#ifdef WEAK_ALIAS
WEAK_ALIAS(sbrk, _sbrk)
@ -45,10 +45,10 @@ WEAK_ALIAS(sbrk, _sbrk)
.data
.align 0
.globl curbrk
.type curbrk,#object
curbrk:
.word _end
.globl CURBRK
.type CURBRK,#object
CURBRK:
.word _C_LABEL(end)
/*
* Change the data segment size
@ -58,7 +58,7 @@ ENTRY(_sbrk)
/* Setup the GOT */
ldr r3, Lgot
add r3, pc, r3
L1:
.L1:
ldr r2, Lcurbrk
ldr r2, [r3, r2]
#else
@ -71,7 +71,7 @@ L1:
mov r3, r0
add r0, r0, r1
SYSTRAP(break)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
/* Store new curbrk value */
ldr r0, [r2]
@ -88,7 +88,7 @@ L1:
.align 0
#ifdef PIC
Lgot:
.word __GLOBAL_OFFSET_TABLE_+. - (L1+4)
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif
Lcurbrk:
.word curbrk
.word PIC_SYM(CURBRK, GOT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: setlogin.S,v 1.1 2000/12/29 20:14:04 bjh21 Exp $ */
/* $NetBSD: setlogin.S,v 1.2 2001/07/16 05:50:07 matt Exp $ */
/*-
* Copyright (c) 1991 The Regents of the University of California.
@ -45,7 +45,7 @@ SYSCALL(setlogin)
/* Setup the GOT */
ldr r0, got
add r0, pc, r0
L1:
.L1:
ldr r1, Llogname
ldr r1, [r0, r1]
#else
@ -62,8 +62,8 @@ L1:
#ifdef PIC
.align 0
got:
.word __GLOBAL_OFFSET_TABLE_ + (. - (L1+4))
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif
Llogname:
.word _C_LABEL(__logname_valid)
.word PIC_SYM(_C_LABEL(__logname_valid), GOT)

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigpending.S,v 1.2 2001/01/09 19:47:28 bjh21 Exp $ */
/* $NetBSD: sigpending.S,v 1.3 2001/07/16 05:50:07 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -43,7 +43,7 @@ WARN_REFERENCES(sigpending, \
ENTRY(sigpending)
mov r2, r0
SYSTRAP(compat_13_sigpending13)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
str r0, [r2]
mov r0, #0x00000000
#ifdef __APCS_26__

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigprocmask.S,v 1.2 2001/01/09 19:47:28 bjh21 Exp $ */
/* $NetBSD: sigprocmask.S,v 1.3 2001/07/16 05:50:07 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -46,7 +46,7 @@ ENTRY(sigprocmask)
moveq r1, #0x00000000
ldrne r1, [r1]
SYSTRAP(compat_13_sigprocmask13)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
teq r2, #0x00000000
strne r0, [r2]
mov r0, #0x00000000

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigsuspend.S,v 1.2 2001/01/09 19:47:28 bjh21 Exp $ */
/* $NetBSD: sigsuspend.S,v 1.3 2001/07/16 05:50:07 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@ -43,7 +43,7 @@ WARN_REFERENCES(sigsuspend, \
ENTRY(sigsuspend)
ldr r0, [r0]
SYSTRAP(compat_13_sigsuspend13)
bcs cerror
bcs PIC_SYM(CERROR, PLT)
mov r0, #0x00000000
#ifdef __APCS_26__
mov r15, r14