2004-08-14 Roland McGrath <roland@frob.com>
[kopensolaris-gnu/glibc.git] / sysdeps / mach / sysdep.h
index 62df28f..825198c 100644 (file)
@@ -1,30 +1,52 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1994, 1995, 1997 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
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifdef __ASSEMBLER__
 
 /* Get the Mach definitions of ENTRY and kernel_trap.  */
 #include <mach/machine/syscall_sw.h>
 
+/* The Mach definitions assume underscores should be prepended to
+   symbol names.  Redefine them to do so only when appropriate.  */
+#undef EXT
+#undef LEXT
+#define EXT(x) C_SYMBOL_NAME(x)
+#define LEXT(x) C_SYMBOL_NAME(x##:)
+
+#ifdef HAVE_ELF
+/* For ELF we need to add the `.type' directive to make shared libraries
+   work right.  */
+#undef ENTRY
+#define ENTRY(name) \
+  ASM_GLOBAL_DIRECTIVE name; \
+  .align ALIGN; \
+  .type name,@function; \
+  name:
+#endif
+
+#endif
+
 /* This is invoked by things run when there is random lossage, before they
    try to do anything else.  Just to be safe, deallocate the reply port so
    bogons arriving on it don't foul up future RPCs.  */
 
-#ifndef ASSEMBLER
-#include <mach/mig_support.h>
+#ifndef __ASSEMBLER__
+#define FATAL_PREPARE_INCLUDE <mach/mig_support.h>
 #define FATAL_PREPARE __mig_dealloc_reply_port (MACH_PORT_NULL)
 #endif