summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-19 16:13:05 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-19 16:13:05 +0000
commit3081378bb23b20ff12e30204ef324183d38d3482 (patch)
treee74244f6b6e90f5d2649526aa58d312f2a3d2099 /sysdeps
parented277b4ec4e4bde37970e7ddc109706b48fedb56 (diff)
downloadglibc-3081378bb23b20ff12e30204ef324183d38d3482.tar.gz
glibc-3081378bb23b20ff12e30204ef324183d38d3482.tar.xz
glibc-3081378bb23b20ff12e30204ef324183d38d3482.zip
Update.
1998-05-19 15:58  Ulrich Drepper  <drepper@cygnus.com>

	* elf/rtld.c (process_envvars): Fix typo.  Don't handle
	LD_PROFILE_OUTPUT in SUID binaries.
	* intl/dcgettext.c: In SUID binaries don't let language part of
	locale value contain path elements.
	* intl/explodename.h: Define new function _nl_find_language.
	* intl/loadinfo.h: Declare _nl_find_language.
	* locale/findlocale.c (_nl_find_locale): Use _nl_find_locale to get
	language part it drop the value is path element is contained.

	* locale/setlocale.c: Fix typo.

1998-05-18  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/unix/sysv/linux/arm/socket.S: Correct handling of arguments.

	* sysdeps/arm/strlen.S: Support both big and little endian processors.

	* sysdeps/arm/sysdep.h (ALIGNARG): ELF .align directive uses a
	log, not a byte-count.

	* sysdeps/unix/arm/sysdep.S (syscall_error): Use C_SYMBOL_NAME for
	a.out compatibility.

1998-05-19  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/unix/bsd/vax/vfork.S: Fix the "the the" problems.
	* sysdeps/unix/bsd/sun/m68k/vfork.S: Likewise.
	* sysdeps/unix/bsd/hp/m68k/vfork.S: Likewise.
	* posix/unistd.h: Likewise.
	* math/math.h: Likewise.
	* manual/users.texi (Manipulating the Database): Likewise.
	* manual/signal.texi (Job Control Signals): Likewise.
	* manual/message.texi (The gencat program): Likewise.
	* manual/filesys.texi (Hard Links): Likewise.
	* manual/math.texi (SVID Random): Likewise.
	* manual/llio.texi (Waiting for I/O): Likewise.
	* manual/io.texi (File Name Errors): Likewise.
	* manual/conf.texi (String Parameters): Likewise.
	* manual/arith.texi (Infinity): Likewise.
	* malloc/malloc.c: Likewise.
	* hurd/hurdsig.c (_hurd_internal_post_signal): Likewise.
	* csu/Makefile: Likewise.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/arm/strlen.S8
-rw-r--r--sysdeps/arm/sysdep.h3
-rw-r--r--sysdeps/unix/arm/sysdep.S2
-rw-r--r--sysdeps/unix/bsd/hp/m68k/vfork.S2
-rw-r--r--sysdeps/unix/bsd/sun/m68k/vfork.S2
-rw-r--r--sysdeps/unix/bsd/vax/vfork.S2
-rw-r--r--sysdeps/unix/sysv/linux/arm/socket.S18
7 files changed, 30 insertions, 7 deletions
diff --git a/sysdeps/arm/strlen.S b/sysdeps/arm/strlen.S
index 9acef4f935..0e360e2653 100644
--- a/sysdeps/arm/strlen.S
+++ b/sysdeps/arm/strlen.S
@@ -31,11 +31,19 @@ ENTRY(strlen)
 	rsb     r0, r3, $0              @ get - that number into counter.
 	beq     Laligned                @ skip into main check routine if no
 					@ more
+#ifdef __ARMEB__
 	orr     r2, r2, $0xff000000     @ set this byte to non-zero
 	subs    r3, r3, $1              @ any more to do?
 	orrgt   r2, r2, $0x00ff0000     @ if so, set this byte
 	subs    r3, r3, $1              @ more?
 	orrgt   r2, r2, $0x0000ff00     @ then set.
+#else
+	orr     r2, r2, $0x000000ff     @ set this byte to non-zero
+	subs    r3, r3, $1              @ any more to do?
+	orrgt   r2, r2, $0x0000ff00     @ if so, set this byte
+	subs    r3, r3, $1              @ more?
+	orrgt   r2, r2, $0x00ff0000     @ then set.
+#endif
 Laligned:				@ here, we have a word in r2.  Does it
 	tst     r2, $0x000000ff         @ contain any zeroes?
 	tstne   r2, $0x0000ff00         @
diff --git a/sysdeps/arm/sysdep.h b/sysdeps/arm/sysdep.h
index 28dd402ced..eeef7aaded 100644
--- a/sysdeps/arm/sysdep.h
+++ b/sysdeps/arm/sysdep.h
@@ -25,8 +25,7 @@
 
 #ifdef HAVE_ELF
 
-/* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
-#define ALIGNARG(log2) 1<<log2
+#define ALIGNARG(log2) log2
 /* For ELF we need the `.type' directive to make shared libs work right.  */
 #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,%##typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
diff --git a/sysdeps/unix/arm/sysdep.S b/sysdeps/unix/arm/sysdep.S
index c1da5255b0..5795f5e5d3 100644
--- a/sysdeps/unix/arm/sysdep.S
+++ b/sysdeps/unix/arm/sysdep.S
@@ -43,7 +43,7 @@ syscall_error:
 #ifdef _LIBC_REENTRANT
 	stmdb sp!, {r0, lr}
 	/* put another copy of r0 at a specific errno location */
-	bl __errno_location
+	bl C_SYMBOL_NAME(__errno_location)
 	ldmia sp!, {r1, lr}
 	str r1, [r0]
 #endif
diff --git a/sysdeps/unix/bsd/hp/m68k/vfork.S b/sysdeps/unix/bsd/hp/m68k/vfork.S
index dc1137379d..18519ab6a0 100644
--- a/sysdeps/unix/bsd/hp/m68k/vfork.S
+++ b/sysdeps/unix/bsd/hp/m68k/vfork.S
@@ -23,7 +23,7 @@
 #endif
 
 /* Clone the calling process, but without copying the whole address space.
-   The the calling process is suspended until the the new process exits or is
+   The calling process is suspended until the the new process exits or is
    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
    and the process ID of the new process to the old process.  */
 .globl ___vfork
diff --git a/sysdeps/unix/bsd/sun/m68k/vfork.S b/sysdeps/unix/bsd/sun/m68k/vfork.S
index 4de48b7920..e26466b075 100644
--- a/sysdeps/unix/bsd/sun/m68k/vfork.S
+++ b/sysdeps/unix/bsd/sun/m68k/vfork.S
@@ -23,7 +23,7 @@
 #endif
 
 /* Clone the calling process, but without copying the whole address space.
-   The the calling process is suspended until the the new process exits or is
+   The calling process is suspended until the the new process exits or is
    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
    and the process ID of the new process to the old process.  */
 .globl ___vfork
diff --git a/sysdeps/unix/bsd/vax/vfork.S b/sysdeps/unix/bsd/vax/vfork.S
index ba670ac2a2..b132a67e9c 100644
--- a/sysdeps/unix/bsd/vax/vfork.S
+++ b/sysdeps/unix/bsd/vax/vfork.S
@@ -23,7 +23,7 @@
 #endif
 
 /* Clone the calling process, but without copying the whole address space.
-   The the calling process is suspended until the the new process exits or is
+   The calling process is suspended until the the new process exits or is
    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
    and the process ID of the new process to the old process.  */
 .globl ___vfork
diff --git a/sysdeps/unix/sysv/linux/arm/socket.S b/sysdeps/unix/sysv/linux/arm/socket.S
index 1ebec9ca26..b51d887a7f 100644
--- a/sysdeps/unix/sysv/linux/arm/socket.S
+++ b/sysdeps/unix/sysv/linux/arm/socket.S
@@ -35,10 +35,26 @@
 #define __socket P(__,socket)
 #endif
 
+#define PUSHARGS_1	stmfd ip!, {a1}
+#define PUSHARGS_2	stmfd ip!, {a1, a2}
+#define PUSHARGS_3	stmfd ip!, {a1, a2, a3}
+#define PUSHARGS_4	stmfd ip!, {a1, a2, a3, a4}
+#define PUSHARGS_5	stmfd ip!, {a1, a2, a3, a4}	/* Caller has already pushed arg 5 */
+#define PUSHARGS_6	stmfd ip!, {a1, a2, a3, a4}
+
+#ifndef NARGS
+#define NARGS 3			/* If we were called with no wrapper, this is really socket() */
+#endif
+
 .globl __socket
 ENTRY (__socket)
+	/* Push args onto the stack.  */
+	mov ip, sp
+	P(PUSHARGS_,NARGS)
 
         /* Do the system call trap.  */
+	mov a1, $P(SOCKOP_,socket)
+	mov a2, ip
 	swi SYS_ify(socketcall)
 
 	/* r0 is < 0 if there was an error.  */
@@ -46,7 +62,7 @@ ENTRY (__socket)
 	bhs PLTJMP(syscall_error)
 
 	/* Successful; return the syscall's value.  */
-	RETINSTR(mov,pc,r14)
+	ret
 
 PSEUDO_END (__socket)