about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-03-10 09:11:13 +0000
committerRoland McGrath <roland@gnu.org>2003-03-10 09:11:13 +0000
commite48f96382f237c0edad5c446eca867092406a51d (patch)
tree0cc492aa8b714292edaed64529ac9ae0bf523b2e /sysdeps
parent073e82bfaeeb5624b2c85012a5582a1308ddae05 (diff)
downloadglibc-e48f96382f237c0edad5c446eca867092406a51d.tar.gz
glibc-e48f96382f237c0edad5c446eca867092406a51d.tar.xz
glibc-e48f96382f237c0edad5c446eca867092406a51d.zip
* sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for
	assembler command.
	* sysdeps/unix/Makefile (compile-syscall): New variable.
	Pass -g0 to compiler for assembling syscall stubs from stdin.

	* sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO]
	(STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END):
	Define these to do nothing.

	* configure.in: New check for -g on .S files.
	* configure: Regenerated.
	* config.make.in (have-cpp-asm-debuginfo): New variable.
	* config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef.
	* Makeconfig (ASFLAGS): New variable, if undefined and
	$(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS).
	* Makerules (compile.S, COMPILE.S): Use $(ASFLAGS).
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/sysdep.h9
-rw-r--r--sysdeps/unix/Makefile8
-rw-r--r--sysdeps/unix/make-syscalls.sh2
3 files changed, 17 insertions, 2 deletions
diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
index 9fa7f8de68..e955b43f95 100644
--- a/sysdeps/i386/sysdep.h
+++ b/sysdeps/i386/sysdep.h
@@ -64,6 +64,14 @@
   ASM_SIZE_DIRECTIVE(name)						      \
   STABS_FUN_END(name)
 
+#ifdef HAVE_CPP_ASM_DEBUGINFO
+/* Disable that goop, because we just pass -g through to the assembler
+   and it generates proper line number information directly.  */
+# define STABS_CURRENT_FILE1(name)
+# define STABS_CURRENT_FILE(name)
+# define STABS_FUN(name)
+# define STABS_FUN_END(name)
+#else
 /* Remove the following two lines once the gdb bug is fixed.  */
 #define STABS_CURRENT_FILE(name)					      \
   STABS_CURRENT_FILE1 (#name)
@@ -77,6 +85,7 @@
   .stabs #namestr,36,0,0,name;
 #define STABS_FUN_END(name)						      \
   1: .stabs "",36,0,0,1b-name;
+#endif
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
 #ifdef	PROF
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 0d8284ecd3..18de414341 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -1,4 +1,5 @@
-# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,2003
+#	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
@@ -286,6 +287,11 @@ endif
 export sysdirs
 export asm_CPP := $(COMPILE.S) -E -x assembler-with-cpp
 
+# This is the end of the pipeline for compiling the syscall stubs.
+# The stdin in assembler with cpp using sysdep.h macros.
+# Be sure to disable debugging info since it would all just say "<stdin>".
+compile-syscall = $(filter-out -g%,$(COMPILE.S)) -x assembler-with-cpp -o $@ -
+
 ifndef avoid-generated
 $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
 			       $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 2c384f5e92..1d293cf9f2 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -198,7 +198,7 @@ shared-only-routines += $file
   done
 
   # And finally, pipe this all into the compiler.
-  echo '	) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
+  echo '	) | $(compile-syscall)'
 
   case $weak in
   *@*)