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] | |
Here's an updated patch following Jakub's suggestion.
The configure patch also contains a patch for -fpie. Since main was
missing there, the check never succeeded but errored out with "no main
function defined".
I've tested the patch below with the GCC 3.3 hammer-branch on AMD64.
Ok to commit?
Andreas
2003-11-30 Andreas Jaeger <aj@suse.de>
* config.make.in (fno-unit-at-a-time): Define.
* configure.in: Add test for -fno-unit-at-a-time.
Fix text for -fpie.
* csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time).
* locale/Makefile (CFLAGS-loadlocale.c): Likewise.
For linuxthreads:
* Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
* sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
Likewise.
For nptl:
* Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
* sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
Likewise.
============================================================
Index: csu/Makefile
--- csu/Makefile 25 Sep 2003 20:29:39 -0000 1.71
+++ csu/Makefile 30 Nov 2003 21:37:07 -0000
@@ -104,7 +104,7 @@ omit-deps += $(crtstuff)
$(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h
$(compile.S) -g0 $(ASFLAGS-.os) -o $@
-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
vpath initfini.c $(full_config_sysdirs)
============================================================
Index: configure.in
--- configure.in 12 Nov 2003 00:37:03 -0000 1.404
+++ configure.in 30 Nov 2003 21:37:08 -0000
@@ -1359,6 +1359,7 @@ EOF
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
cat > conftest.c <<EOF
int foo;
+main () { return 0;}
EOF
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
-o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
@@ -1371,6 +1372,36 @@ EOF
AC_SUBST(libc_cv_fpie)
fi
+
+if test $elf != yes; then
+ AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
+ [AC_TRY_COMPILE(, [asm (".section .init");
+ asm (".section .fini");
+ asm ("${libc_cv_dot_text}");],
+ libc_cv_have_initfini=yes,
+ libc_cv_have_initfini=no)])
+ AC_SUBST(libc_cv_have_initfini)dnl
+ if test $libc_cv_have_initfini = yes; then
+ AC_DEFINE(HAVE_INITFINI)
+ fi
+fi
+
+AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl
+cat > conftest.c <<EOF
+int foo;
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
+ conftest.c 1>&AS_MESSAGE_LOG_FD])
+then
+ libc_cv_fno_unit_at_a_time=yes
+else
+ libc_cv_fno_unit_at_a_time=no
+fi
+rm -f conftest*])
+if test $libc_cv_fno_unit_at_a_time = yes; then
+ fno_unit_at_a_time=-fno-unit-at-a-time
+fi
+AC_SUBST(fno_unit_at_a_time)
if test $elf != yes; then
AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
============================================================
Index: config.make.in
--- config.make.in 12 Nov 2003 00:37:03 -0000 1.98
+++ config.make.in 30 Nov 2003 21:37:08 -0000
@@ -55,6 +55,7 @@ have-cpp-asm-debuginfo = @libc_cv_cpp_as
enable-check-abi = @enable_check_abi@
have-forced-unwind = @libc_cv_forced_unwind@
have-fpie = @libc_cv_fpie@
+fno-unit-at-a-time = @fno_unit_at_a_time@
static-libgcc = @libc_cv_gcc_static_libgcc@
============================================================
Index: linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile
--- linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 11 Apr 2003 23:34:02 -0000 1.5
+++ linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 30 Nov 2003 21:37:08 -0000
@@ -1,3 +1,4 @@
ifeq ($(subdir),linuxthreads)
-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables
+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \
+ -fno-asynchronous-unwind-tables $(fno-unit-at-a-time)
endif
============================================================
Index: linuxthreads/Makefile
--- linuxthreads/Makefile 2 Oct 2003 18:48:48 -0000 1.83
+++ linuxthreads/Makefile 30 Nov 2003 21:37:08 -0000
@@ -101,7 +101,7 @@ endif
extra-objs += $(crti-objs) $(crtn-objs)
omit-deps += crti crtn
-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
endif
librt-tests = ex10 ex11
============================================================
Index: locale/Makefile
--- locale/Makefile 13 Jun 2003 20:42:48 -0000 1.71
+++ locale/Makefile 30 Nov 2003 21:37:08 -0000
@@ -100,6 +100,7 @@ locale-CPPFLAGS := -DLOCALE_PATH='$(loca
CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts
CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts
CFLAGS-charmap-dir.c = -Wno-write-strings
+CFLAGS-loadlocale.c = $(fno-unit-at-a-time)
# This makes sure -DNOT_IN_libc is passed for all these modules.
cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
============================================================
Index: nptl/Makefile
--- nptl/Makefile 21 Nov 2003 18:53:01 -0000 1.127
+++ nptl/Makefile 30 Nov 2003 21:37:08 -0000
@@ -312,7 +312,7 @@ endif
extra-objs += $(crti-objs) $(crtn-objs)
omit-deps += crti crtn
-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
endif
CFLAGS-flockfile.c = -D_IO_MTSAFE_IO
============================================================
Index: nptl/sysdeps/unix/sysv/linux/x86_64/Makefile
--- nptl/sysdeps/unix/sysv/linux/x86_64/Makefile 9 May 2003 07:29:09 -0000 1.3
+++ nptl/sysdeps/unix/sysv/linux/x86_64/Makefile 30 Nov 2003 21:37:08 -0000
@@ -1,3 +1,4 @@
ifeq ($(subdir),nptl)
-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables
+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \
+ -fno-asynchronous-unwind-tables $(fno-unit-at-a-time)
endif
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
Attachment:
pgp00000.pgp
Description: PGP signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |