about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/alarm.c (renamed from sysdeps/unix/bsd/alarm.c)0
-rw-r--r--sysdeps/unix/i386/sysdep.h40
-rw-r--r--sysdeps/unix/nice.c (renamed from sysdeps/unix/bsd/nice.c)0
-rw-r--r--sysdeps/unix/stime.c (renamed from sysdeps/unix/bsd/stime.c)0
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h14
-rw-r--r--sysdeps/unix/time.c (renamed from sysdeps/unix/bsd/time.c)0
-rw-r--r--sysdeps/unix/utime.c (renamed from sysdeps/unix/bsd/utime.c)0
7 files changed, 34 insertions, 20 deletions
diff --git a/sysdeps/unix/bsd/alarm.c b/sysdeps/unix/alarm.c
index 7743256a09..7743256a09 100644
--- a/sysdeps/unix/bsd/alarm.c
+++ b/sysdeps/unix/alarm.c
diff --git a/sysdeps/unix/i386/sysdep.h b/sysdeps/unix/i386/sysdep.h
index fb1781b156..16a76b1d5f 100644
--- a/sysdeps/unix/i386/sysdep.h
+++ b/sysdeps/unix/i386/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 95, 96 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
@@ -20,18 +20,43 @@ Cambridge, MA 02139, USA.  */
 
 #ifdef	ASSEMBLER
 
+/* Syntactic details of assembler.  */
+
+#ifdef HAVE_ELF
+
+/* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
+#define ALIGNARG(log2) 1<<log2
+/* For ELF we need the `.type' directive to make shared libs work right.  */
+#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
+
+/* In ELF C symbols are asm symbols.  */
+#undef	NO_UNDERSCORES
+#define NO_UNDERSCORES
+
+#else
+
+#define ALIGNARG(log2) log2
+#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified.  */
+
+#endif
+
+
 /* Define an entry point visible from C.  */
 #define	ENTRY(name)							      \
   ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name);				      \
   ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
-  .align 4;								      \
-  C_LABEL(name)
+  .align ALIGNARG(4);							      \
+  C_LABEL(name)								      \
+  CALL_MCOUNT
 
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#ifdef HAVE_ELF
-#define ASM_TYPE_DIRECTIVE(name,typearg)	.type name,typearg;
+/* If compiled for profiling, call `mcount' at the start of each function.  */
+#ifdef	PROF
+/* The mcount code relies on a normal frame pointer being on the stack
+   to locate our caller, so push one just for its benefit.  */
+#define CALL_MCOUNT \
+  pushl %ebp; movl %esp, %ebp; call JUMPTARGET(mcount); popl %ebp;
 #else
-#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified.  */
+#define CALL_MCOUNT		/* Do nothing.  */
 #endif
 
 #ifdef	NO_UNDERSCORES
@@ -39,6 +64,7 @@ Cambridge, MA 02139, USA.  */
    on this system, the asm identifier `syscall_error' intrudes on the
    C name space.  Make sure we use an innocuous name.  */
 #define	syscall_error	__syscall_error
+#define mcount		_mcount
 #endif
 
 #define	PSEUDO(name, syscall_name, args)				      \
diff --git a/sysdeps/unix/bsd/nice.c b/sysdeps/unix/nice.c
index 01f1412adf..01f1412adf 100644
--- a/sysdeps/unix/bsd/nice.c
+++ b/sysdeps/unix/nice.c
diff --git a/sysdeps/unix/bsd/stime.c b/sysdeps/unix/stime.c
index be928e8f39..be928e8f39 100644
--- a/sysdeps/unix/bsd/stime.c
+++ b/sysdeps/unix/stime.c
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index f6da272c75..c77bbbbf86 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 93, 95, 96 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
 
@@ -17,9 +17,6 @@ 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.  */
 
-/* In the Linux/ELF world, C symbols are asm symbols.  */
-#define NO_UNDERSCORES
-
 /* There is some commonality.  */
 #include <sysdeps/unix/i386/sysdep.h>
 
@@ -64,15 +61,6 @@ syscall_error:								      \
   ret;
 #endif
 
-/* We define our own ENTRY macro because the alignment should be 16 for
-   ELF.  */
-#undef ENTRY
-#define ENTRY(name)							      \
-  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), @function)			      \
-  .align 16;								      \
-  C_LABEL (name)
-
 /* Linux takes system call arguments in registers:
 
 	syscall number	%eax	     call-clobbered
diff --git a/sysdeps/unix/bsd/time.c b/sysdeps/unix/time.c
index 8f8a46f830..8f8a46f830 100644
--- a/sysdeps/unix/bsd/time.c
+++ b/sysdeps/unix/time.c
diff --git a/sysdeps/unix/bsd/utime.c b/sysdeps/unix/utime.c
index c7ed20ffe3..c7ed20ffe3 100644
--- a/sysdeps/unix/bsd/utime.c
+++ b/sysdeps/unix/utime.c