about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/alpha
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-05-24 20:16:39 +0000
committerRoland McGrath <roland@gnu.org>1996-05-24 20:16:39 +0000
commit613a76ff52a680e71db772306a260b9cb7f95b49 (patch)
tree7c6ff1e04f1cadef4b95c93e295d3df2ad0631d0 /sysdeps/unix/sysv/linux/alpha
parent510ca033d66c47e0dc54550928dece59799a0136 (diff)
downloadglibc-613a76ff52a680e71db772306a260b9cb7f95b49.tar.gz
glibc-613a76ff52a680e71db772306a260b9cb7f95b49.tar.xz
glibc-613a76ff52a680e71db772306a260b9cb7f95b49.zip
Fri May 24 02:31:36 1996 Ulrich Drepper <drepper@cygnus.com>
	* sysdeps/unix/sysv/linux/speed.c: Add new speed value 460800.

Thu May 23 23:09:33 1996  Ulrich Drepper  <drepper@cygnus.com>

	* FAQ: Add answer for 100% source code compatibility to Linux
	libc by David Mosberger-Tang.

	Update from bind-4.3.4-T3B.
	* inet/arpa/inet.h: Add prototypes for inet_pton, inet_ntop,
	inet_nsap_addr, and inet_nsap_ntoa.
	* resolv/gethnamaddr.c: Correct compatibility problems (sprintf),
	remove fourth argument to inet_pton and correct handling of
	host_addr passing.
	* resolv/inet_ntop.c: Correct compatibility problems (sprintf).
	* resolv/inet_pton.c: Remove fourth argument.
	* resolv/resolv.h: Remove prototypes for inet_nsap_addr and
	inet_nsap_ntoa.  Now on <arpa/inet.h>.

	* stdlib/gmp-impl.h: Add prototypes for internal functions.

Thu May 23 22:49:15 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Rules (subdir_install): Remove dep on sor-$(subdir).
	(static-only-routines): Removed variable and associated rules.

	* sysdeps/unix/sysv/linux/alpha/Makefile (headers): Add
 	sysdeps/alpha/bsd-_setjmp.S, sysdeps/alpha/ffs.S,
 	sysdeps/unix/sysv/linux/alpha/sigsuspend.S,
 	sysdeps/unix/sysv/linux/alpha/start.S,
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha')
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigsuspend.S8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/start.S35
3 files changed, 30 insertions, 15 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile
index 9e12a0daa2..beb8441b46 100644
--- a/sysdeps/unix/sysv/linux/alpha/Makefile
+++ b/sysdeps/unix/sysv/linux/alpha/Makefile
@@ -1,5 +1,5 @@
 ifeq ($(subdir), misc)
-headers += alpha/regdef.h
+headers += alpha/ptrace.h alpha/regdef.h
 
 sysdep_routines := $(sysdep_routines) \
   ieee_get_fp_control ieee_set_fp_control fpu_control setfpucw \
diff --git a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
index 29cba8d312..00c02de72b 100644
--- a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
+++ b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
@@ -17,12 +17,13 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 /* sigsuspend is a special syscall since it needs to dereference the
-sigset.  */
+   sigset.  */
 
 #include <sysdep.h>
 
 	.text
-ENTRY(sigsuspend)
+
+LEAF(sigsuspend, 0)
 	.prologue 0
 
 	ldq	a0, 0(a0)
@@ -33,7 +34,6 @@ ENTRY(sigsuspend)
 
 error:	br	gp, 1f
 1:	ldgp	gp, 0(gp)
-	lda	pv, syscall_error
-	jmp	zero, (pv)
+	jmp	zero, syscall_error
 
 	.end sigsuspend
diff --git a/sysdeps/unix/sysv/linux/alpha/start.S b/sysdeps/unix/sysv/linux/alpha/start.S
index d1966a82ba..a7099f6840 100644
--- a/sysdeps/unix/sysv/linux/alpha/start.S
+++ b/sysdeps/unix/sysv/linux/alpha/start.S
@@ -18,11 +18,16 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-.comm errno, 4
+	.comm errno, 4
+#ifdef __ELF__
+	.type errno, @object
+#endif
 
 	.text
-ENTRY(__start)
+LEAF(__start, 16)
 	lda	sp, -16(sp)
+	.prologue 0
+
 	stq	zero, 8(sp)		/* terminate frame chain */
 
 	br	t0, 1f
@@ -33,8 +38,7 @@ ENTRY(__start)
 	ldgp	gp, 0(ra)
 
 	/* clear out errno. */
-	lda	t0, errno
-	stl	zero, 0(t0)
+	stl	zero, (errno)
 
 	ldl	a0, 16(sp)	/* get argc */
 	lda	a1, 24(sp)	/* get argv */
@@ -45,26 +49,32 @@ ENTRY(__start)
 	addq	a2, 0x8, a2
 	stq	a2, 0(t0)
 
-#ifndef HAVE_INITFINI
 	mov	a0, s0
 	mov	a1, s1
 	mov	a2, s2
 
-	jsr	ra, __libc_init
+#ifdef HAVE_INITFINI
+	/* register the _fini sections to ensure destructors get run: */
+	lda	a0, _fini
+	jsr	ra, atexit
 	ldgp	gp, 0(ra)
 
-	mov	s0, a0
-	mov	s1, a1
-	mov	s2, a2
+	/* Now run the _init section of the program itself.  The _init
+	   sections of shared libraries will be run by the dynamic linker.  */
+	jsr	ra, _init
+	ldgp	gp, 0(ra)
 
 	/* initialize constructors: */
 	jsr	ra, __main
 	ldgp	gp, 0(ra)
+#else
+	jsr	ra, __libc_init
+	ldgp	gp, 0(ra)
+#endif
 
 	mov	s0, a0
 	mov	s1, a1
 	mov	s2, a2
-#endif
 
 	jsr	ra, main
 	ldgp	gp, 0(ra)
@@ -90,4 +100,9 @@ ENTRY(__start)
 __data_start:
 	.long 0
 
+#ifdef __ELF__
+	.size __data_start, 4
+	.type __data_start, @object
+#endif
+
 weak_alias(__data_start, data_start)