public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* new way of generating crt[ni].o [patch]
@ 1999-09-02 23:52 Zack Weinberg
  1999-09-02 23:59 ` Ulrich Drepper
  1999-09-03 23:52 ` Andreas Jaeger
  0 siblings, 2 replies; 10+ messages in thread
From: Zack Weinberg @ 1999-09-02 23:52 UTC (permalink / raw)
  To: drepper, libc-hacker

The new x86 back end wants to generate trampolines to load the PIC
base register all the time (yes, even with -march=i386).  The current
crt[in] generation can't handle this.  So I rewrote it again.  This
version does the split in the object file; it turns out to be much,
much cleaner that way.  On the other hand, it is dependent on more
gnu-binutils-specific features than before.  I'm using binutils
2.9.5.0.10, but it ought to work with 2.9.1 and later, at least.

zw

1999-09-02 23:41 -0700  Zack Weinberg  <zack@bitmover.com>

	* csu/Makefile (distribute): Drop defs.awk; add crti.ld and
	crtn.ld.
	(generated [have-initfini]): Just add initfini.o.
	(crt%.o): Extract them from initfini.o using ld and objcopy.
	(CFLAGS-initfini.c): New variable.
	(initfini.s, crti.S, crtn.S, defs.h, CFLAGS-initfini.s): Drop.
	* csu/initfini.c: Use __attribute__ ((section)) tags to say
	where the functions' beginnings go.  Rip out all the asm
	insertions except the section switches inside the functions.
	Function epilogs now go in .init.end/.fini.end respectively.
	Drop dummy().
	* sysdeps/i386/Makefile (CFLAGS-initfini.s): Delete.
	* sysdeps/mach/hurd/Makefile (CFLAGS-initfini.s): Rename to
	CFLAGS-initfini.c.
	* sysdeps/powerpc/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/Makefile: Likewise.
	* csu/crti.ld: New file.
	* csu/crtn.ld: New file.
	* csu/defs.awk: Delete.

===================================================================
Index: csu/Makefile
--- csu/Makefile	1999/08/19 16:28:49	1.37
+++ csu/Makefile	1999/09/03 06:38:08
@@ -36,8 +36,8 @@ omit-deps = $(patsubst %.o,%,$(start-ins
 		             $(csu-dummies))
 install-lib = $(start-installed-name) g$(start-installed-name) \
 	      $(csu-dummies)
-distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \
-	     abi-note.S init.c munch-tmpl.c
+distribute = initfini.c gmon-start.c start.c munch.awk \
+	     abi-note.S init.c munch-tmpl.c crti.ld crtn.ld
 generated = version-info.h
 before-compile = $(objpfx)version-info.h
 
@@ -68,6 +68,8 @@ endif
 ifeq ($(have-initfini),yes)
 
 CPPFLAGS += -DHAVE_INITFINI
+LD = ld
+OBJCOPY = objcopy
 
 # These are the special initializer/finalizer files.  They are always the
 # first and last file in the link.  crti.o ... crtn.o define the global
@@ -76,34 +78,17 @@ crtstuff = crti crtn
 
 install-lib += $(crtstuff:=.o)
 extra-objs += $(crtstuff:=.o)
-generated += $(crtstuff:=.S) initfini.s defs.h
+generated += initfini.o
 omit-deps += $(crtstuff)
 
 # Special rules for the building of crti.o and crtn.o
-$(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
-	$(compile.S) -g0 $(ASFLAGS-.os) -o $@
+$(objpfx)crt%.o: $(objpfx)initfini.o crt%.ld
+	$(LD) -r -o $@T $^
+	$(OBJCOPY) -R .discard $@T $@
+	-rm -f $@T
 
-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
-
-$(objpfx)initfini.s: initfini.c
-	$(compile.c) -S $(CFLAGS-initfini.s) -finhibit-size-directive \
-		$(patsubst -f%,-fno-%,$(exceptions)) -o $@
-
-# We only have one kind of startup code files.  Static binaries and
-# shared libraries are build using the PIC version.
-$(objpfx)crti.S: $(objpfx)initfini.s
-	sed -n -e '1,/@HEADER_ENDS/p' \
-	       -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
-	       -e '/@TRAILER_BEGINS/,$$p' $< > $@
-
-$(objpfx)crtn.S: $(objpfx)initfini.s
-	sed -n -e '1,/@HEADER_ENDS/p' \
-	       -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
-	       -e '/@TRAILER_BEGINS/,$$p' $< > $@
-
-$(objpfx)defs.h: $(objpfx)initfini.s
-	sed -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
-		$(AWK) -f defs.awk > $@
+CFLAGS-initfini.c = -g0 -fPIC -fno-inline-functions -finhibit-size-directive \
+	$(patsubst -f%,-fno-%,$(exceptions))
 
 endif
 
Index: csu/initfini.c
===================================================================
RCS file: /glibc/cvsfiles/libc/csu/initfini.c,v
retrieving revision 1.26
diff -u -p -r1.26 initfini.c
--- csu/initfini.c	1998/09/08 23:25:30	1.26
+++ csu/initfini.c	1999/09/03 06:38:08
@@ -26,43 +26,29 @@
    write to the Free Software Foundation, 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-/* This file is compiled into assembly code which is then munged by a sed
-   script into two files: crti.s and crtn.s.
+/* This file is compiled and then split apart by linker magic into
+   crti.o and crtn.o.  The split falls in the middle of the functions
+   _init and _fini.  Static constructor or destructor calls will be
+   inserted into the middle of the functions by .init or .fini
+   sections in other object files.  (Sort of.)  */
 
-   * crti.s puts a function prologue at the beginning of the
-   .init and .fini sections and defines global symbols for
-   those addresses, so they can be called as functions.
-
-   * crtn.s puts the corresponding function epilogues
-   in the .init and .fini sections. */
-
-#include <stdlib.h>
-
-/* We use embedded asm for .section unconditionally, as this makes it
-   easier to insert the necessary directives into crtn.S. */
-#define SECTION(x) asm (".section " x );
-
-/* Embed an #include to pull in the alignment and .end directives. */
-asm ("\n#include \"defs.h\"");
-
-/* The initial common code ends here. */
-asm ("\n/*@HEADER_ENDS*/");
+#ifndef WEAK_GMON_START
+/* This version of __gmon_start__ is used if no other is found.  By providing
+   a default function we avoid the need to test whether the pointer is NULL,
+   which can be painful on some machines.  */
 
-/* To determine whether we need .end and .align: */
-asm ("\n/*@TESTS_BEGIN*/");
-void
-dummy (void (*foo) (void))
+void __attribute__ ((weak))
+__gmon_start__ (void)
 {
-  if (foo)
-    (*foo) ();
+  /* do nothing */
 }
-asm ("\n/*@TESTS_END*/");
+#endif
 
-/* The beginning of _init:  */
-asm ("\n/*@_init_PROLOG_BEGINS*/");
+/* This is correct syntax for GAS.  If we ever need to support another
+   assembler, we can ifdef this up.  */
+#define SECTION(x) asm (".section\t" #x ",\"ax\",@progbits")
 
-SECTION (".init")
-void
+void __attribute__ ((section (".init")))
 _init (void)
 {
   /* We cannot use the normal constructor mechanism in gcrt1.o because it
@@ -71,7 +57,7 @@ _init (void)
      gcrt1.o to reference a symbol which would be defined by some library
      module which has a constructor; but then user code's constructors
      would come first, and not be profiled.  */
-  extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
+  extern void __gmon_start__ (void) __attribute__ ((weak));
 
 #ifndef WEAK_GMON_START
   __gmon_start__ ();
@@ -80,42 +66,13 @@ _init (void)
     __gmon_start__ ();
 #endif
 
-  asm ("ALIGN");
-  asm("END_INIT");
-  /* Now the epilog. */
-  asm ("\n/*@_init_PROLOG_ENDS*/");
-  asm ("\n/*@_init_EPILOG_BEGINS*/");
-  SECTION(".init");
+  SECTION(.init.end);
 }
-asm ("END_INIT");
-#ifndef WEAK_GMON_START
-SECTION(".text");
 
-/* This version of __gmon_start__ is used if no other is found.  By providing
-   a default function we avoid the need to test whether the pointer is NULL,
-   which can be painful on some machines.  */
-
-void __attribute__ ((weak))
-__gmon_start__ (void)
-{
-  /* do nothing */
-}
-#endif
-
-/* End of the _init epilog, beginning of the _fini prolog. */
-asm ("\n/*@_init_EPILOG_ENDS*/");
-asm ("\n/*@_fini_PROLOG_BEGINS*/");
-
-SECTION (".fini")
-void
+void __attribute__ ((section (".fini")))
 _fini (void)
 {
-
-  /* End of the _fini prolog. */
-  asm ("ALIGN");
-  asm ("END_FINI");
-  asm ("\n/*@_fini_PROLOG_ENDS*/");
-
+  SECTION(.discard);
   {
     /* Let GCC know that _fini is not a leaf function by having a dummy
        function call here.  We arrange for this call to be omitted from
@@ -123,16 +80,5 @@ _fini (void)
     extern void i_am_not_a_leaf (void);
     i_am_not_a_leaf ();
   }
-
-  /* Beginning of the _fini epilog. */
-  asm ("\n/*@_fini_EPILOG_BEGINS*/");
-  SECTION (".fini");
+  SECTION(.fini.end);
 }
-asm ("END_FINI");
-
-/* End of the _fini epilog.  Any further generated assembly (e.g. .ident)
-   is shared between both crt files. */
-asm ("\n/*@_fini_EPILOG_ENDS*/");
-asm ("\n/*@TRAILER_BEGINS*/");
-
-/* End of file. */
===================================================================
Index: sysdeps/i386/Makefile
--- sysdeps/i386/Makefile	1999/08/31 01:01:21	1.10
+++ sysdeps/i386/Makefile	1999/09/03 06:38:09
@@ -5,12 +5,6 @@ asm-CPPFLAGS += -DGAS_SYNTAX
 # The i386 `long double' is a distinct type we support.
 long-double-fcts = yes
 
-ifeq ($(subdir),csu)
-# On i686 we must avoid generating the trampoline functions generated
-# to get the GOT pointer.
-CFLAGS-initfini.s += -march=i386
-endif
-
 ifeq ($(subdir),db2)
 CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_X86_GCC=1
 endif
===================================================================
Index: sysdeps/mach/hurd/i386/Makefile
--- sysdeps/mach/hurd/i386/Makefile	1999/06/13 10:02:39	1.4
+++ Makefile	1999/09/03 06:38:09
@@ -13,6 +13,6 @@ $(objpfx)crt0.o: $(objpfx)static-start.o
 # This is needed to be backward-compatible with glibc-2.0.x startup code
 # that was miscompiled so that it jumps to 0 if there is a nonzero
 # __gmon_start__ symbol, but works if there is none.
-CFLAGS-initfini.s += -DWEAK_GMON_START
+CFLAGS-initfini.c += -DWEAK_GMON_START
 
 endif
===================================================================
Index: sysdeps/powerpc/Makefile
--- sysdeps/powerpc/Makefile	1998/09/01 14:30:52	1.7
+++ sysdeps/powerpc/Makefile	1999/09/03 06:38:09
@@ -17,7 +17,7 @@ endif
 ifeq ($(subdir),csu)
 # The initfini generation code doesn't work in the presence of -fPIC, so
 # we use -fpic instead which is much better.
-CFLAGS-initfini.s = -g0 -fpic
+CFLAGS-initfini.c = -g0 -fpic
 
 # There is no benefit to using sdata for these objects, and the user
 # of the library should be able to control what goes into sdata.
===================================================================
Index: sysdeps/unix/sysv/linux/i386/Makefile
--- sysdeps/unix/sysv/linux/i386/Makefile	1998/10/21 15:16:04	1.14
+++ sysdeps/unix/sysv/linux/i386/Makefile	1999/09/03 06:38:09
@@ -9,5 +9,5 @@ install-bin += lddlibc4
 endif
 
 ifeq ($(subdir),csu)
-CFLAGS-initfini.s += -DWEAK_GMON_START
+CFLAGS-initfini.c += -DWEAK_GMON_START
 endif

 sysdep-routines += errno-loc
===================================================================
Index: csu/crti.ld
--- csu/crti.ld	Mon Feb 22 19:41:16 1999
+++ csu/crti.ld	Thu Sep  2 23:15:00 1999
@@ -0,0 +1,7 @@
+/* Linker script to extract the head of _init and _fini from initfini.o.  */
+SECTIONS
+{
+    /* The /DISCARD/ feature causes the 2.9.5.0.10 linker (at least) to
+       dump core.  */
+    .discard : { *(.discard) *(.init.end) *(.fini.end) }
+}
===================================================================
Index: csu/crtn.ld
--- csu/crtn.ld	Mon Feb 22 19:41:16 1999
+++ csu/crtn.ld	Thu Sep  2 23:14:51 1999
@@ -0,0 +1,9 @@
+/* Linker script to extract the tail of _init and _fini from initfini.o.  */
+SECTIONS
+{
+    /* The /DISCARD/ feature causes the 2.9.5.0.10 linker (at least) to
+       dump core.  */
+    .discard : { *(.discard) *(.init) *(.fini) *(.text) }
+    .init : { *(.init.end) }
+    .fini : { *(.fini.end) }
+}
===================================================================
Index: csu/defs.awk
--- csu/defs.awk	Sat Aug  2 12:28:29 1997
+++ csu/defs.awk	Mon Feb 22 19:41:16 1999
@@ -1,22 +0,0 @@
-/\.end/	 { need_end = 1 }
-/\.align/ { if($2 > max) max = $2; }
-
-END {
-    if(need_end)
-    {
-	print "#define END_INIT .end _init";
-	print "#define END_FINI .end _fini";
-    }
-    else
-    {
-	print "#define END_INIT";
-	print "#define END_FINI";
-    }
-    if(max)
-	print "#define ALIGN .align", max;
-    else
-	print "#define ALIGN";
-
-    print "#include <libc-symbols.h>";
-    print "weak_extern (__gmon_start__)";
-}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-02 23:52 new way of generating crt[ni].o [patch] Zack Weinberg
@ 1999-09-02 23:59 ` Ulrich Drepper
  1999-09-03 10:39   ` Zack Weinberg
  1999-09-03 23:52 ` Andreas Jaeger
  1 sibling, 1 reply; 10+ messages in thread
From: Ulrich Drepper @ 1999-09-02 23:59 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: libc-hacker

Zack Weinberg <zack@bitmover.com> writes:

> The new x86 back end wants to generate trampolines to load the PIC
> base register all the time (yes, even with -march=i386).  The current
> crt[in] generation can't handle this.  So I rewrote it again.

It looks interesting but this whole changes really suggest that we go
with hand-written code.  It's only a few lines.  We could keep the
current scheme (maybe your rewrite) as a backup solution, e.g., to help
new ports to a quick start.

-- 
---------------.      drepper at gnu.org  ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at cygnus.com   `------------------------

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-02 23:59 ` Ulrich Drepper
@ 1999-09-03 10:39   ` Zack Weinberg
  1999-09-03 10:43     ` Roland McGrath
  1999-09-03 17:26     ` Ulrich Drepper
  0 siblings, 2 replies; 10+ messages in thread
From: Zack Weinberg @ 1999-09-03 10:39 UTC (permalink / raw)
  To: Ulrich Drepper; +Cc: libc-hacker

Ulrich Drepper wrote:
> Zack Weinberg <zack@bitmover.com> writes:
> 
> > The new x86 back end wants to generate trampolines to load the PIC
> > base register all the time (yes, even with -march=i386).  The current
> > crt[in] generation can't handle this.  So I rewrote it again.
> 
> It looks interesting but this whole changes really suggest that we go
> with hand-written code.  It's only a few lines.  We could keep the
> current scheme (maybe your rewrite) as a backup solution, e.g., to help
> new ports to a quick start.

I agree.  I did it this way because I'm not competent to write the
assembly stubs.

zw

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-03 10:39   ` Zack Weinberg
@ 1999-09-03 10:43     ` Roland McGrath
  1999-09-03 17:26     ` Ulrich Drepper
  1 sibling, 0 replies; 10+ messages in thread
From: Roland McGrath @ 1999-09-03 10:43 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: Ulrich Drepper, libc-hacker

> I agree.  I did it this way because I'm not competent to write the
> assembly stubs.

Oh yeah?  :-) Then how did you manage to understand the current situation
enough to frob it?  I'm pretty damn sure from what I've seen that you are
competent to use the current method to produce assembly code for any
platform where it works already, inspect/modify it by hand, and declare it
correct.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-03 10:39   ` Zack Weinberg
  1999-09-03 10:43     ` Roland McGrath
@ 1999-09-03 17:26     ` Ulrich Drepper
  1 sibling, 0 replies; 10+ messages in thread
From: Ulrich Drepper @ 1999-09-03 17:26 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: libc-hacker

Zack Weinberg <zack@bitmover.com> writes:

> I agree.  I did it this way because I'm not competent to write the
> assembly stubs.

Well, it'll not go in 2.1 anyway.  For 2.2 we have enough time to let
the parties contribute the changes.

-- 
---------------.      drepper at gnu.org  ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at cygnus.com   `------------------------

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-02 23:52 new way of generating crt[ni].o [patch] Zack Weinberg
  1999-09-02 23:59 ` Ulrich Drepper
@ 1999-09-03 23:52 ` Andreas Jaeger
  1999-09-04  8:49   ` Zack Weinberg
  1 sibling, 1 reply; 10+ messages in thread
From: Andreas Jaeger @ 1999-09-03 23:52 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: drepper, libc-hacker

>>>>> Zack Weinberg writes:

 > The new x86 back end wants to generate trampolines to load the PIC
 > base register all the time (yes, even with -march=i386).  The current
 > crt[in] generation can't handle this.  So I rewrote it again.  This
 > version does the split in the object file; it turns out to be much,
 > much cleaner that way.  On the other hand, it is dependent on more
 > gnu-binutils-specific features than before.  I'm using binutils
 > 2.9.5.0.10, but it ought to work with 2.9.1 and later, at least.

Do I understand your statement correctly that the current gcc cvs
version doesn't correctly build glibc?  How severe is the problem?

Andreas
-- 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-03 23:52 ` Andreas Jaeger
@ 1999-09-04  8:49   ` Zack Weinberg
  1999-09-04  9:41     ` Andreas Jaeger
  1999-09-05  0:00     ` Richard Henderson
  0 siblings, 2 replies; 10+ messages in thread
From: Zack Weinberg @ 1999-09-04  8:49 UTC (permalink / raw)
  To: Andreas Jaeger; +Cc: drepper, libc-hacker

Andreas Jaeger wrote:
> >>>>> Zack Weinberg writes:
> 
>  > The new x86 back end wants to generate trampolines to load the PIC
>  > base register all the time (yes, even with -march=i386).  The current
>  > crt[in] generation can't handle this.  So I rewrote it again.  This
>  > version does the split in the object file; it turns out to be much,
>  > much cleaner that way.  On the other hand, it is dependent on more
>  > gnu-binutils-specific features than before.  I'm using binutils
>  > 2.9.5.0.10, but it ought to work with 2.9.1 and later, at least.
> 
> Do I understand your statement correctly that the current gcc cvs
> version doesn't correctly build glibc?  How severe is the problem?

When I tried it, it blew up in the others pass trying to link the
first program against the just-built library.  Error was "undefined
reference to symbol `LPR0'" or something like that; the problem was
that the new ia32 backend does -fPIC like this:

.LPR0:
	movl	(%esp), %ebx
	ret

_init:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	call	.LPR0
	... body of function here ...

The .LPR0 label and its code are lost when we split up the file.

sysdeps/i386/Makefile adds -march=i386 to CFLAGS, which is supposed to
go back to the old style of -fPIC.  It works on a test file, but
doesn't on initfini.c, I don't know why.

zw
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-04  8:49   ` Zack Weinberg
@ 1999-09-04  9:41     ` Andreas Jaeger
  1999-09-04 17:40       ` Zack Weinberg
  1999-09-05  0:00     ` Richard Henderson
  1 sibling, 1 reply; 10+ messages in thread
From: Andreas Jaeger @ 1999-09-04  9:41 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: drepper, libc-hacker

>>>>> Zack Weinberg writes:

Zack> Andreas Jaeger wrote:
>> >>>>> Zack Weinberg writes:
>> 
>> > The new x86 back end wants to generate trampolines to load the PIC
>> > base register all the time (yes, even with -march=i386).  The current
>> > crt[in] generation can't handle this.  So I rewrote it again.  This
>> > version does the split in the object file; it turns out to be much,
>> > much cleaner that way.  On the other hand, it is dependent on more
>> > gnu-binutils-specific features than before.  I'm using binutils
>> > 2.9.5.0.10, but it ought to work with 2.9.1 and later, at least.
>> 
>> Do I understand your statement correctly that the current gcc cvs
>> version doesn't correctly build glibc?  How severe is the problem?

Zack> When I tried it, it blew up in the others pass trying to link the
Zack> first program against the just-built library.  Error was "undefined
Zack> reference to symbol `LPR0'" or something like that; the problem was
Zack> that the new ia32 backend does -fPIC like this:

Zack> .LPR0:
Zack> 	movl	(%esp), %ebx
Zack> 	ret

Zack> _init:
Zack> 	pushl	%ebp
Zack> 	movl	%esp, %ebp
Zack> 	pushl	%ebx
Zack> 	call	.LPR0
Zack> 	... body of function here ...

Zack> The .LPR0 label and its code are lost when we split up the file.
:-(

Zack> sysdeps/i386/Makefile adds -march=i386 to CFLAGS, which is supposed to
Zack> go back to the old style of -fPIC.  It works on a test file, but
Zack> doesn't on initfini.c, I don't know why.

I've got to concerns: I'd like to see glibc 2.1.2 asap released - and
I don't like another glibc release that only works with the current but
not with the next gcc compiler [1].

Richard, is there no way to get this working with all versions of gcc
including the current development version?

Andreas

Footnotes: 
[1]  gcc 2.95 doesn't work correctly with glibc 2.1.1 - and I don't
     like to see a 2.1.2 which doesn't work with gcc 2.96.
-- 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-04  9:41     ` Andreas Jaeger
@ 1999-09-04 17:40       ` Zack Weinberg
  0 siblings, 0 replies; 10+ messages in thread
From: Zack Weinberg @ 1999-09-04 17:40 UTC (permalink / raw)
  To: Andreas Jaeger; +Cc: drepper, libc-hacker

Andreas Jaeger wrote:
> 
> I've got to concerns: I'd like to see glibc 2.1.2 asap released - and
> I don't like another glibc release that only works with the current but
> not with the next gcc compiler [1].

My patch ought to be a lot less fragile than the old way.  We don't
second-guess the compiler nearly as much.  I don't think it uses
binutils features that were buggy in 2.9.1, either.

zw

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: new way of generating crt[ni].o [patch]
  1999-09-04  8:49   ` Zack Weinberg
  1999-09-04  9:41     ` Andreas Jaeger
@ 1999-09-05  0:00     ` Richard Henderson
  1 sibling, 0 replies; 10+ messages in thread
From: Richard Henderson @ 1999-09-05  0:00 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: Andreas Jaeger, drepper, libc-hacker

On Sat, Sep 04, 1999 at 08:49:27AM -0700, Zack Weinberg wrote:
> sysdeps/i386/Makefile adds -march=i386 to CFLAGS, which is supposed to
> go back to the old style of -fPIC.  It works on a test file, but
> doesn't on initfini.c, I don't know why.

I don't believe you.  If it isn't working on initfini.c, then
the -march=i386 flag isn't really showing up on the gcc command line.

Both uses of pic_label_name are protected by TARGET_DEEP_BRANCH_PREDICTION.


r~

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~1999-09-05  0:00 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-09-02 23:52 new way of generating crt[ni].o [patch] Zack Weinberg
1999-09-02 23:59 ` Ulrich Drepper
1999-09-03 10:39   ` Zack Weinberg
1999-09-03 10:43     ` Roland McGrath
1999-09-03 17:26     ` Ulrich Drepper
1999-09-03 23:52 ` Andreas Jaeger
1999-09-04  8:49   ` Zack Weinberg
1999-09-04  9:41     ` Andreas Jaeger
1999-09-04 17:40       ` Zack Weinberg
1999-09-05  0:00     ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).