This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix TLS build


Hi!

When building with TLS capable binutils and without --without-tls, build
fails with:

mkdir /usr/src/build/128842-i686/BUILD/glibc-2.2.90/build-i686-linux2.4/setjmp
../sysdeps/i386/bsd-_setjmp.S:26:1: warning: "_SETJMP_H" redefined
In file included from ../include/setjmp.h:2,
                 from ../linuxthreads/descr.h:21,
                 from ../linuxthreads/sysdeps/i386/tls.h:58,
                 from ../sysdeps/unix/sysv/linux/i386/sysdep.h:27,
                 from ../sysdeps/unix/sysv/linux/i386/i686/sysdep.h:24,
                 from ../sysdeps/i386/bsd-_setjmp.S:24:
../setjmp/setjmp.h:24:1: warning: this is the location of the previous definition
...
make -s -C stdio-common subdir_lib
make[2]: Entering directory `/usr/src/build/128842-i686/BUILD/glibc-2.2.90/stdio-common'
mkdir /usr/src/build/128842-i686/BUILD/glibc-2.2.90/build-i686-linux2.4/stdio-common
/usr/bin/install: cannot remove `/usr/include/bits/stdio_lim.h': Permission denied
make[2]: *** [/usr/include/bits/stdio_lim.h] Error 1

The problem is that while ASSEMBLER macro is defined
when preprocessing/assembling .S -> .o*, it is not defined
when computing dependencies, ie. .S -> .d, so the above warning and also
s-proto.d includes in that case /usr/include/bits/stdio_lim.h dependency, which make
tries to satisfy by installing a newer bits/stdio_lim.h on top of that
(and when not building as root it fails to do so).

The following patch seems to fix it, using
both ASSEMBLER and __ASSEMBLER__ seems
a) inconsistent
b) ASSEMBLER only gives problems, while __ASSEMBLER__ is automatically
   defined by the compiler driver

2002-07-25  Jakub Jelinek  <jakub@redhat.com>

	* config.h.in: Use __ASSEMBLER__ test macro not ASSEMBLER.
	* sysdeps/ia64/fpu/libm_support.h: Likewise.

	* sysdeps/i386/tls.h: Use __ASSEMBLER__ test macro not ASSEMBLER.
	* sysdeps/i386/pt-machine.h: Likewise.
	* sysdeps/i386/useldt.h: Likewise.

--- libc/linuxthreads/sysdeps/i386/tls.h.jj	Tue Jul 23 10:05:34 2002
+++ libc/linuxthreads/sysdeps/i386/tls.h	Thu Jul 25 00:40:37 2002
@@ -22,7 +22,7 @@
 
 # include <pt-machine.h>
 
-#ifndef ASSEMBLER
+#ifndef __ASSEMBLER__
 # include <stddef.h>
 
 /* Type for the dtv.  */
@@ -49,7 +49,7 @@ typedef struct
 /* Signal that TLS support is available.  */
 # define USE_TLS	1
 
-# ifndef ASSEMBLER
+# ifndef __ASSEMBLER__
 /* Get system call information.  */
 #  include <sysdep.h>
 
--- libc/linuxthreads/sysdeps/i386/pt-machine.h.jj	Tue Jul 23 10:05:34 2002
+++ libc/linuxthreads/sysdeps/i386/pt-machine.h	Thu Jul 25 00:40:24 2002
@@ -22,7 +22,7 @@
 #ifndef _PT_MACHINE_H
 #define _PT_MACHINE_H	1
 
-#ifndef ASSEMBLER
+#ifndef __ASSEMBLER__
 #ifndef PT_EI
 # define PT_EI extern inline
 #endif
@@ -103,6 +103,6 @@ compare_and_swap_is_available (void)
      Otherwise, it's a 486 or above and it has cmpxchg.  */
   return changed != 0;
 }
-#endif /* ASSEMBLER */
+#endif /* __ASSEMBLER__ */
 
 #endif /* pt-machine.h */
--- libc/linuxthreads/sysdeps/i386/useldt.h.jj	Tue Jul 23 10:05:34 2002
+++ libc/linuxthreads/sysdeps/i386/useldt.h	Thu Jul 25 00:40:55 2002
@@ -19,7 +19,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef ASSEMBLER
+#ifndef __ASSEMBLER__
 #include <stddef.h>	/* For offsetof.  */
 #include <stdlib.h>	/* For abort().  */
 
--- libc/sysdeps/ia64/fpu/libm_support.h.jj	Tue Jul 23 10:05:56 2002
+++ libc/sysdeps/ia64/fpu/libm_support.h	Thu Jul 25 00:41:32 2002
@@ -49,7 +49,7 @@
 //         12/07/2000 Added scalbn error_types values.
 //
 
-#ifndef ASSEMBLER
+#ifndef __ASSEMBLER__
 #include <math.h>
 
 float __libm_frexp_4f( float x, int*  exp);
@@ -337,7 +337,7 @@ extern _LIB_VERSION_TYPE _LIB_VERSION;
 // This is a run-time variable and may effect
 // floating point behavior of the libm functions
 
-#endif	/* ASSEMBLER */
+#endif	/* __ASSEMBLER__ */
 
 /* Support for compatible assembler handling.  */
 #if !defined L && defined _LIBC
--- libc/config.h.in.jj	Tue Jul 23 10:05:28 2002
+++ libc/config.h.in	Thu Jul 25 00:42:24 2002
@@ -1,4 +1,4 @@
-#if !defined ASSEMBLER && !defined _ISOMAC && !defined __OPTIMIZE__
+#if !defined __ASSEMBLER__ && !defined _ISOMAC && !defined __OPTIMIZE__
 # error "glibc cannot be compiled without optimization"
 #endif
 


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]