about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--sysdeps/unix/sysv/linux/m68k/clone.S8
-rw-r--r--sysdeps/unix/sysv/linux/m68k/mmap.S4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/socket.S4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/syscall.S4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sysdep.h17
6 files changed, 31 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 7a105c6809..1b4aadbaf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,14 @@ Wed Jun 10 10:32:11 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.
 	* sysdeps/m68k/elf/start.S: Pass new argument to
 	__libc_start_user. 
 
+	* sysdeps/unix/sysv/linux/m68k/sysdep.h (SYSCALL_ERROR_LABEL): New
+	definition.
+	(PSEUDO, SYSCALL_ERROR_HANDLER): Use it instead of syscall_error.
+	* sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/socket.S: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.
+
 1998-06-09 18:16  Ulrich Drepper  <drepper@cygnus.com>
 
 	* math/Makefile (libm-calls): Add w_exp10 and e_exp10.
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S
index d553ab78c6..622f8117ac 100644
--- a/sysdeps/unix/sysv/linux/m68k/clone.S
+++ b/sysdeps/unix/sysv/linux/m68k/clone.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    Contributed by Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,10 +32,10 @@ ENTRY (__clone)
 	movel	#-EINVAL, %d0
 	movel	4(%sp), %a0		/* no NULL function pointers */
 	tstl	%a0
-	jeq	syscall_error
+	jeq	SYSCALL_ERROR_LABEL
 	movel	8(%sp), %a1		/* no NULL stack pointers */
 	tstl	%a1
-	jeq	syscall_error
+	jeq	SYSCALL_ERROR_LABEL
 
 	/* Allocate space and copy the argument onto the new stack.  */
 	movel	16(%sp), -(%a1)
@@ -48,7 +48,7 @@ ENTRY (__clone)
 	exg	%d2, %a1		/* restore %d2 */
 
 	tstl	%d0
-	jmi	syscall_error
+	jmi	SYSCALL_ERROR_LABEL
 	jeq	thread_start
 
 	rts
diff --git a/sysdeps/unix/sysv/linux/m68k/mmap.S b/sysdeps/unix/sysv/linux/m68k/mmap.S
index 9563204977..94578311b3 100644
--- a/sysdeps/unix/sysv/linux/m68k/mmap.S
+++ b/sysdeps/unix/sysv/linux/m68k/mmap.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,7 +32,7 @@ ENTRY (__mmap)
 	/* Kludge: negative numbers are among the legal return values.
 	   If %d0 is between -4096 and 0 then there was an error.  */
 	cmp.l #-4096, %d0
-	jhi syscall_error
+	jhi SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  Copy it to %a0 because
 	   mmap is declared to return a pointer.  */
diff --git a/sysdeps/unix/sysv/linux/m68k/socket.S b/sysdeps/unix/sysv/linux/m68k/socket.S
index 81e5a213dd..f25a55b187 100644
--- a/sysdeps/unix/sysv/linux/m68k/socket.S
+++ b/sysdeps/unix/sysv/linux/m68k/socket.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -56,7 +56,7 @@ ENTRY (__socket)
 
 	/* %d0 is < 0 if there was an error.  */
 	tst.l %d0
-	jmi syscall_error
+	jmi SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
 	rts
diff --git a/sysdeps/unix/sysv/linux/m68k/syscall.S b/sysdeps/unix/sysv/linux/m68k/syscall.S
index f392b751fc..f34c07600f 100644
--- a/sysdeps/unix/sysv/linux/m68k/syscall.S
+++ b/sysdeps/unix/sysv/linux/m68k/syscall.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,6 +28,6 @@ ENTRY (syscall)
 	trap &0			/* Do the system call.  */
 	UNDOARGS_5		/* Unfrob arguments.  */
 	cmp.l &-4095, %d0	/* Check %d0 for error.  */
-	jcc syscall_error	/* Jump to error handler if negative.  */
+	jcc SYSCALL_ERROR_LABEL	/* Jump to error handler if negative.  */
 	rts			/* Return to caller.  */
 PSEUDO_END (syscall)
diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h
index 8fdd26f52f..4094172587 100644
--- a/sysdeps/unix/sysv/linux/m68k/sysdep.h
+++ b/sysdeps/unix/sysv/linux/m68k/sysdep.h
@@ -43,13 +43,22 @@
    for a real error by making sure the value in %d0 is a real error
    number.  Linus said he will make sure the no syscall returns a value
    in -1 .. -4095 as a valid result so we can savely test with -4095.  */
+
+/* We don't want the label for the error handler to be visible in the symbol
+   table when we define it here.  */
+#ifdef PIC
+#define SYSCALL_ERROR_LABEL .Lsyscall_error
+#else
+#define SYSCALL_ERROR_LABEL __syscall_error
+#endif
+
 #undef PSEUDO
 #define	PSEUDO(name, syscall_name, args)				      \
   .text;								      \
   ENTRY (name)								      \
     DO_CALL (syscall_name, args);					      \
     cmp.l &-4095, %d0;							      \
-    jcc syscall_error
+    jcc SYSCALL_ERROR_LABEL
 
 #undef PSEUDO_END
 #define PSEUDO_END(name)						      \
@@ -60,7 +69,7 @@
 /* Store (- %d0) into errno through the GOT.  */
 #ifdef _LIBC_REENTRANT
 #define SYSCALL_ERROR_HANDLER						      \
-syscall_error:								      \
+SYSCALL_ERROR_LABEL:							      \
     neg.l %d0;								      \
     move.l %d0, -(%sp);							      \
     jbsr __errno_location@PLTPC;					      \
@@ -70,9 +79,9 @@ syscall_error:								      \
        a pointer (e.g., mmap).  */					      \
     move.l %d0, %a0;							      \
     rts;
-#else
+#else /* !_LIBC_REENTRANT */
 #define SYSCALL_ERROR_HANDLER						      \
-syscall_error:								      \
+SYSCALL_ERROR_LABEL:							      \
     move.l (errno@GOTPC, %pc), %a0;					      \
     neg.l %d0;								      \
     move.l %d0, (%a0);							      \