defaults.h (MULTIPLE_SYMBOL_SPACES): Provide default.
authorZack Weinberg <zack@gcc.gnu.org>
Thu, 9 Sep 2004 17:11:18 +0000 (17:11 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Thu, 9 Sep 2004 17:11:18 +0000 (17:11 +0000)
* defaults.h (MULTIPLE_SYMBOL_SPACES): Provide default.
* config/arm/pecoff.h, config/i386/beos-elf.h
* config/i386/cygming.h, config/i386/i386-interix.h:
Define MULTIPLE_SYMBOL_SPACES to 1, not nothing.  Remove
comment cloned from manual.
* doc/tm.texi: Update description of MULTIPLE_SYMBOL_SPACES.
cp:
* decl2.c (import_export_class)
* lex.c (handle_pragma_interface):
Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.

From-SVN: r87243

gcc/ChangeLog
gcc/config/arm/pe.h
gcc/config/i386/beos-elf.h
gcc/config/i386/cygming.h
gcc/config/i386/i386-interix.h
gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/cp/lex.c
gcc/defaults.h
gcc/doc/tm.texi

index 76581c8f8bef15590e2cc23d88a2ed30a9f2ed45..bf58622e8fa4070c92b908071ab828c93495f374 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-09  Zack Weinberg  <zack@codesourcery.com>
+
+       * defaults.h (MULTIPLE_SYMBOL_SPACES): Provide default.
+       * config/arm/pecoff.h, config/i386/beos-elf.h
+       * config/i386/cygming.h, config/i386/i386-interix.h:
+       Define MULTIPLE_SYMBOL_SPACES to 1, not nothing.  Remove
+       comment cloned from manual.
+       * doc/tm.texi: Update description of MULTIPLE_SYMBOL_SPACES.
+
 2004-09-09  Frank Ch. Eigler  <fche@redhat.com>
 
        * builtins.c (build_va_arg_indirect_ref): New function.
        (bdesc_int_void2arg, bdesc_prefetches): New arrays.
        (frv_init_builtins): Register the above builtins.
        (frv_int_to_acc): Use ACC_MASK to check for valid accumulator
-       registers.  Turn the referenced accumulators into global registers.  
+       registers.  Turn the referenced accumulators into global registers.
        (frv_read_iacc_argument): New function.
        (frv_expand_int_void2arg, frv_expand_prefetches): New functions.
        (frv_split_iacc_move): New function.
index 63c127c1a617bea345184b9c1cb82c9f98855dac..afaade2cb61629c4576191a4402f0fc3efa0ee6f 100644 (file)
   call_used_regs [11] = 1;
 
 \f
-/* Define this macro if in some cases global symbols from one translation
-   unit may not be bound to undefined symbols in another translation unit
-   without user intervention.  For instance, under Microsoft Windows
-   symbols must be explicitly imported from shared libraries (DLLs).  */
-#define MULTIPLE_SYMBOL_SPACES
+/* PE/COFF uses explicit import from shared libraries.  */
+#define MULTIPLE_SYMBOL_SPACES 1
 
 #define TARGET_ASM_UNIQUE_SECTION arm_pe_unique_section
 #define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
index b0de9bba834c40cfa48a78af4018978c77bc7508..23b3a22921da4c50cf49defe59ebc36a3b495725 100644 (file)
@@ -235,8 +235,5 @@ Boston, MA 02111-1307, USA.  */
 /* BeOS headers are C++-aware (and often use C++).  */
 #define NO_IMPLICIT_EXTERN_C
 
-/* Define this macro if in some cases global symbols from one translation
-   unit may not be bound to undefined symbols in another translation unit
-   without user intervention.  For instance, under Microsoft Windows
-   symbols must be explicitly imported from shared libraries (DLLs).  */
-#define MULTIPLE_SYMBOL_SPACES
+/* BeOS uses explicit import from shared libraries.  */
+#define MULTIPLE_SYMBOL_SPACES 1
index d04ef6e0b7b29e553e370ea28b529cf504cbbfca..a54e8a9718b9d326b3567ae8c2cb6086053bb238 100644 (file)
@@ -258,11 +258,8 @@ do {                                                       \
 #define ASM_OUTPUT_ALIGN(FILE,LOG)     \
     if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))
 
-/* Define this macro if in some cases global symbols from one translation
-   unit may not be bound to undefined symbols in another translation unit
-   without user intervention.  For instance, under Microsoft Windows
-   symbols must be explicitly imported from shared libraries (DLLs).  */
-#define MULTIPLE_SYMBOL_SPACES
+/* Windows uses explicit import from shared libraries.  */
+#define MULTIPLE_SYMBOL_SPACES 1
 
 extern void i386_pe_unique_section (TREE, int);
 #define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
index 971f7cc7e4b1711e06c72f94f2f3e26538c93f12..5d2d72f27f861d91a5ff5b58008bd216aee5b828 100644 (file)
@@ -337,11 +337,8 @@ while (0)
    .data$ sections correctly. See corresponding note in i386/interix.c. 
    MK.  */
 
-/* Define this macro if in some cases global symbols from one translation
-   unit may not be bound to undefined symbols in another translation unit
-   without user intervention.  For instance, under Microsoft Windows
-   symbols must be explicitly imported from shared libraries (DLLs).  */
-#define MULTIPLE_SYMBOL_SPACES
+/* Interix uses explicit import from shared libraries.  */
+#define MULTIPLE_SYMBOL_SPACES 1
 
 extern void i386_pe_unique_section (tree, int);
 #define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
index 2792cca7fed16fae752fee929adfe41b5aece0c6..9bd87e1aad40974f731d0b06115257f472f69778 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-09  Zack Weinberg  <zack@codesourcery.com>
+
+       * decl2.c (import_export_class)
+       * lex.c (handle_pragma_interface):
+       Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
+
 2004-09-08  Ziemowit Laski  <zlaski@apple.com>
 
        * Make-lang.in (cp/semantics.o): Depend on c-common.h.
index 03c468dfd42c8c9d15469fe83806ced3c8950bc1..bb3e4e89def1c2ffcded53ac84099681bfce3e4c 100644 (file)
@@ -1438,7 +1438,7 @@ import_export_class (tree ctype)
   if (CLASSTYPE_INTERFACE_KNOWN (ctype))
     return;
 
-  /* If MULTIPLE_SYMBOL_SPACES is defined and we saw a #pragma interface,
+  /* If MULTIPLE_SYMBOL_SPACES is set and we saw a #pragma interface,
      we will have CLASSTYPE_INTERFACE_ONLY set but not
      CLASSTYPE_INTERFACE_KNOWN.  In that case, we don't want to use this
      heuristic because someone will supply a #pragma implementation
@@ -1472,10 +1472,10 @@ import_export_class (tree ctype)
        import_export = (DECL_REALLY_EXTERN (method) ? -1 : 1);
     }
 
-#ifdef MULTIPLE_SYMBOL_SPACES
-  if (import_export == -1)
+  /* When MULTIPLE_SYMBOL_SPACES is set, we cannot count on seeing
+     a definition anywhere else.  */
+  if (MULTIPLE_SYMBOL_SPACES && import_export == -1)
     import_export = 0;
-#endif
 
   /* Allow backends the chance to overrule the decision.  */
   if (targetm.cxx.import_export_class)
index 468585edef5fa46028367b03e5901ff15830a50e..2a48d995a0ed77e30892786c2be2845a7e635a31 100644 (file)
@@ -505,9 +505,9 @@ handle_pragma_interface (cpp_reader* dfile ATTRIBUTE_UNUSED )
     }
 
   interface_only = interface_strcmp (main_filename);
-#ifdef MULTIPLE_SYMBOL_SPACES
-  if (! interface_only)
-#endif
+  /* If MULTIPLE_SYMBOL_SPACES is set, we cannot assume that we can see
+     a definition in another file.  */
+  if (!MULTIPLE_SYMBOL_SPACES || !interface_only)
     interface_unknown = 0;
 
   finfo->interface_only = interface_only;
index 588d0fc99183557f205c72e277d31dc8fd12fa83..849e5a96b5064fae7d857da33ea67a08b522e642 100644 (file)
@@ -291,6 +291,11 @@ do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \
 # define USE_COMMON_FOR_ONE_ONLY 1
 #endif
 
+/* By default we can assume that all global symbols are in one namespace,
+   across all shared libraries.  */
+#ifndef MULTIPLE_SYMBOL_SPACES
+# define MULTIPLE_SYMBOL_SPACES 0
+#endif
 
 /* If the target supports init_priority C++ attribute, give
    SUPPORTS_INIT_PRIORITY a nonzero value.  */
index 0734b2cebc57fd8772305766fd63fbd7450f0b4c..df72053313d9734b8374d38c26c40e004ac44ff3 100644 (file)
@@ -9114,10 +9114,13 @@ You need not define this macro if it would always return zero.
 @end defmac
 
 @defmac MULTIPLE_SYMBOL_SPACES
-Define this macro if in some cases global symbols from one translation
-unit may not be bound to undefined symbols in another translation unit
-without user intervention.  For instance, under Microsoft Windows
-symbols must be explicitly imported from shared libraries (DLLs).
+Define this macro as a C expression that is nonzero if, in some cases,
+global symbols from one translation unit may not be bound to undefined
+symbols in another translation unit without user intervention.  For
+instance, under Microsoft Windows symbols must be explicitly imported
+from shared libraries (DLLs).
+
+You need not define this macro if it would always evaluate to zero.
 @end defmac
 
 @deftypefn {Target Hook} tree TARGET_MD_ASM_CLOBBERS (tree @var{clobbers})