* sysdeps/unix/sysv/linux/m68k/sysdep.h (SYSCALL_ERROR_LABEL): New
authorschwab <schwab>
Wed, 10 Jun 1998 01:37:15 +0000 (01:37 +0000)
committerschwab <schwab>
Wed, 10 Jun 1998 01:37:15 +0000 (01:37 +0000)
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.

ChangeLog
sysdeps/unix/sysv/linux/m68k/clone.S
sysdeps/unix/sysv/linux/m68k/mmap.S
sysdeps/unix/sysv/linux/m68k/socket.S
sysdeps/unix/sysv/linux/m68k/syscall.S
sysdeps/unix/sysv/linux/m68k/sysdep.h

index 7a105c6..1b4aadb 100644 (file)
--- 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.
index d553ab7..622f811 100644 (file)
@@ -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
index 9563204..9457831 100644 (file)
@@ -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.  */
index 81e5a21..f25a55b 100644 (file)
@@ -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
index f392b75..f34c076 100644 (file)
@@ -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)
index 8fdd26f..4094172 100644 (file)
    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);                                                       \