Makefile.in (libgcc2): Pass MAYBE_USE_COLLECT2 as an argument.

* Makefile.in (libgcc2): Pass MAYBE_USE_COLLECT2 as an argument.
        * libgcc2.c (__CTOR_LIST, __DTOR_LIST); Do not provide
        initializers is some circumstances.

From-SVN: r27489
This commit is contained in:
Jeffrey A Law 1999-06-11 03:12:22 +00:00 committed by Jeff Law
parent 2fdf4c3e97
commit 657be7aff1
3 changed files with 23 additions and 7 deletions

View File

@ -1,5 +1,9 @@
Fri Jun 11 03:17:51 1999 Jeffrey A Law (law@cygnus.com)
* Makefile.in (libgcc2): Pass MAYBE_USE_COLLECT2 as an argument.
* libgcc2.c (__CTOR_LIST, __DTOR_LIST); Do not provide
initializers is some circumstances.
* fixinc/inclhack.def (endif_label): Add additional selector for
more bogus stuff after #endif statements.
* fixinc/inclhack.sh, fixinc/fixincl.x: Rebuilt.

View File

@ -393,6 +393,9 @@ EXTRA_HEADERS =@extra_headers_list@
# Set this to `collect2' to enable use of collect2.
USE_COLLECT2 = @will_use_collect2@
# If we might be using collect2, then this variable will be set to
# -DUSE_COLLECT2. toplev.c, collect2.c and libgcc2.c all need to
# if we may be using collect2.
MAYBE_USE_COLLECT2 = @maybe_use_collect2@
# It is convenient for configure to add the assignment at the beginning,
# so don't override it here.
@ -1067,7 +1070,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(FPBIT) $(DPBIT) $(LIB2ADD) \
do \
echo $${name}; \
$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \
$(srcdir)/libgcc2.c -o $${name}$(objext); \
$(MAYBE_USE_COLLECT2) $(srcdir)/libgcc2.c -o $${name}$(objext); \
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
$(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${name}$(objext); \
rm -f $${name}$(objext); \

View File

@ -2903,17 +2903,26 @@ SYMBOL__MAIN ()
#include "gbl-ctors.h"
/* Provide default definitions for the lists of constructors and
destructors, so that we don't get linker errors.
The old code sometimes put these into the data segment and sometimes
into the bss segment. Putting these into the data segment should always
work and avoids a little bit of complexity. */
destructors, so that we don't get linker errors. These symbols are
intentionally bss symbols, so that gld and/or collect will provide
the right values. */
/* We declare the lists here with two elements each,
so that they are valid empty lists if no other definition is loaded. */
so that they are valid empty lists if no other definition is loaded.
If we are using the old "set" extensions to have the gnu linker
collect ctors and dtors, then we __CTOR_LIST__ and __DTOR_LIST__
must be in the bss/common section.
Long term no port should use those extensions. But many still do. */
#if !defined(INIT_SECTION_ASM_OP) && !defined(CTOR_LISTS_DEFINED_EXTERNALLY)
#if defined (ASM_OUTPUT_CONSTRUCTOR) || defined (USE_COLLECT2)
func_ptr __CTOR_LIST__[2] = {0, 0};
func_ptr __DTOR_LIST__[2] = {0, 0};
#else
func_ptr __CTOR_LIST__[2];
func_ptr __DTOR_LIST__[2];
#endif
#endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */
#endif /* L_ctors */