about summary refs log tree commit diff
path: root/sysdeps/alpha/elf/start.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-03-31 23:45:03 +0000
committerUlrich Drepper <drepper@redhat.com>1998-03-31 23:45:03 +0000
commit71bedb76ac4e71537d980705ed8d390950570071 (patch)
tree2dc751a6fbf89818c1e5d622c97d073b9a6412af /sysdeps/alpha/elf/start.S
parentf5baa731d07c8d9b13bd04f4532f714cddfc8da2 (diff)
downloadglibc-71bedb76ac4e71537d980705ed8d390950570071.tar.gz
glibc-71bedb76ac4e71537d980705ed8d390950570071.tar.xz
glibc-71bedb76ac4e71537d980705ed8d390950570071.zip
Update.
	* iconvdata/Makefile: Use libKSC shared object in JOHAB and
	EUC-KR.

	* sysdeps/unix/sysv/linux/bits/socket.h (PF_FILE): Correct
	comment.

1998-03-30 08:43  H.J. Lu  <hjl@gnu.org>

	* sysdeps/alpha/elf/start.S: Let __libc_start_main do most of
	the init stuff.

1998-03-31  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Wrapper for
	adjtimex syscall.
	* sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Add
	adjtimex.
	Patches by Dominik Kubla <kubla@sundiver.zdv.uni-mainz.de>.

1998-03-31  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* Makerules (install): Change comment for libc.so following the
	libc_nonshared changes.

1998-03-31  Ulrich Drepper  <drepper@cygnus.com>
Diffstat (limited to 'sysdeps/alpha/elf/start.S')
-rw-r--r--sysdeps/alpha/elf/start.S58
1 files changed, 13 insertions, 45 deletions
diff --git a/sysdeps/alpha/elf/start.S b/sysdeps/alpha/elf/start.S
index a67a39a49f..1330d1fda2 100644
--- a/sysdeps/alpha/elf/start.S
+++ b/sysdeps/alpha/elf/start.S
@@ -1,5 +1,5 @@
 /* Startup code for Alpha/ELF.
-   Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>
 
@@ -31,56 +31,24 @@ _start:
 1:	ldgp	gp, 0(gp)
 	.prologue 1
 
-  /* Save v0.  When starting a binary via the dynamic linker, s0
-     contains the address of the shared library termination function,
-     which we will register below with atexit() to be called by exit().
-     If we are statically linked, this will be NULL.  */
-	mov	v0, s0
+  /* Load address of the user's main function.  */
+	lda	a0, main
 
-  /* Do essential libc initialization (sp points to argc, argv, and envp)  */
-	jsr	ra, __libc_init_first
-	ldgp	gp, 0(ra)
-
-  /* Now that we have the proper stack frame, register library termination
-     function, if there is any:  */
-
-	beq	s0, 1f
-	mov	s0, a0
-	jsr	ra, atexit
-	ldgp	gp, 0(ra)
-1:
-
-  /* Extract the arguments and environment as encoded on the stack.  */
-	ldl	a0, 0(sp)	/* get argc */
-	lda	a1, 8(sp)	/* get argv */
-	s8addq	a0, a1, a2	/* get envp */
-	addq	a2, 8, a2
-	stq	a2, _environ
+	ldl	a1, 0(sp)	/* get argc */
+	lda	a2, 8(sp)	/* get argv */
 
-	mov	a0, s0		/* tuck them away */
-	mov	a1, s1
-	mov	a2, s2
+  /* Load address of our own entry points to .fini and .init.  */
+	lda	a3, _init
+	lda	a4, _fini
 
-  /* Call _init, the entry point to our own .init section.  */
-	jsr	ra, _init
-	ldgp	gp, 0(ra)
+  /* Store address of the shared library termination function.  */
+	mov	v0, a5
 
-  /* Register our .fini section with atexit.  */
-	lda	a0, _fini
-	jsr	ra, atexit
+  /* Call the user's main function, and exit with its value.
+     But let the libc call main.    */
+	jsr	ra, __libc_start_main
 	ldgp	gp, 0(ra)
 
-  /* Call the user's main and exit with its return value.  */
-	mov	s0, a0
-	mov	s1, a1
-	mov	s2, a2
-
-	jsr	ra, main
-	ldgp	gp, 0(ra)
-
-	mov	v0, a0
-	jsr	ra, exit
-
   /* Die very horribly if exit returns.  Call_pal hlt is callable from
      kernel mode only; this will result in an illegal instruction trap.  */
 	call_pal 0