mkmap-flat.awk, [...]: If the last version assigned to a symbol was '%exclude', do...
authorZack Weinberg <zack@gcc.gnu.org>
Wed, 17 Nov 2004 05:39:02 +0000 (05:39 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Wed, 17 Nov 2004 05:39:02 +0000 (05:39 +0000)
* mkmap-flat.awk, mkmap-symver.awk: If the last version
assigned to a symbol was '%exclude', do not emit it anywhere.
If leading_underscore is true, prefix all symbols from the
version scripts with a leading underscore before comparing
them with nm output or emitting them.  Remove support for dot
symbols.
* config/t-slibgcc-darwin (SHLIB_LINK): Use mkmap-flat.awk.
(SHLIB_MAPFILES): Use libgcc-std.ver.
(SHLIB_MKMAP_OPTS): Enable leading-underscore mode.
(SHLIB_LINK): Add -Wl,-exported_symbols_list,$(SHLIB_MAP).
* config/sh/t-linux: Use the normal libgcc-std.ver, plus
libgcc-excl.ver and libgcc-glibc.ver.

* config/sh/libgcc-excl.ver: New file.
* config/sh/libgcc-std.ver, libgcc-darwin.ver: Delete.

From-SVN: r90792

gcc/ChangeLog
gcc/config/sh/libgcc-excl.ver [new file with mode: 0644]
gcc/config/sh/libgcc-std.ver [deleted file]
gcc/config/sh/t-linux
gcc/config/t-slibgcc-darwin
gcc/libgcc-darwin.ver [deleted file]
gcc/mkmap-flat.awk
gcc/mkmap-symver.awk

index fd41205..19ebe9f 100644 (file)
@@ -1,3 +1,21 @@
+2004-11-16  Zack Weinberg  <zack@codesourcery.com>
+
+       * mkmap-flat.awk, mkmap-symver.awk: If the last version
+       assigned to a symbol was '%exclude', do not emit it anywhere.
+       If leading_underscore is true, prefix all symbols from the
+       version scripts with a leading underscore before comparing
+       them with nm output or emitting them.  Remove support for dot
+       symbols.
+       * config/t-slibgcc-darwin (SHLIB_LINK): Use mkmap-flat.awk.
+       (SHLIB_MAPFILES): Use libgcc-std.ver.
+       (SHLIB_MKMAP_OPTS): Enable leading-underscore mode.
+       (SHLIB_LINK): Add -Wl,-exported_symbols_list,$(SHLIB_MAP).
+       * config/sh/t-linux: Use the normal libgcc-std.ver, plus
+       libgcc-excl.ver and libgcc-glibc.ver.
+
+       * config/sh/libgcc-excl.ver: New file.
+       * config/sh/libgcc-std.ver, libgcc-darwin.ver: Delete.
+
 2004-11-16  Daniel Berlin  <dberlin@dberlin.org>
 
        * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Swap
 
 2004-11-16  Aldy Hernandez  <aldyh@redhat.com>
 
-        * config/rs6000/rs6000.c (rs6000_override_options): Split e500v2
-        doubles.
-        (rs6000_complex_function_value): Handle e500 v2 variant.
+       * config/rs6000/rs6000.c (rs6000_override_options): Split e500v2
+       doubles.
+       (rs6000_complex_function_value): Handle e500 v2 variant.
 
 2004-11-16  Daniel Berlin  <dberlin@dberlin.org>
 
        Fix PR tree-optimization/18519
-       
+
        * tree-optimize (execute_todo): Add case for TODO_cleanup_cfg.
        * tree-pass.h: Add TODO_cleanup_cfg.
        * tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg.
        (ccp_finalize): Remove call to cleanup_cfg.
        * tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func.
        (pass_cd_dce): Ditto.
-       (perform_tree_ssa_dce): Remove call to cleanup_cfg, 
+       (perform_tree_ssa_dce): Remove call to cleanup_cfg,
        dump_function_to_file.
        * tree-ssa-loop-ch.c (copy_loop_headers): Remove call
        to cleanup_cfg.
        cleanup_cfg.
        (pass_loop_done): Add TODO_cleanup_cfg.
        * tree-ssa-phiopt.c (pass_phiopt): Ditto.
-       (tree_ssa_phiopt): Remove call to cleanup_cfg.  
-       
+       (tree_ssa_phiopt): Remove call to cleanup_cfg.
+
 2004-11-16  Devang Patel  <dpatel@apple.com>
 
        * optabs.c (vector_compare_rtx): Fix COMPARISON_CLASS_P use.
-       
+
 2004-11-16  Kazu Hirata  <kazu@cs.umass.edu>
 
        * expmed.c, ra-colorize.c: Fix comment typos.
@@ -42,7 +60,7 @@
        * doc/tm.texi: Fix typos.
 
 2004-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
-            Mark Mitchell  <mark@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
 
        PR target/6123
        * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __PIC__ and
@@ -56,7 +74,7 @@
 2004-11-16  Devang Patel  <dpatel@apple.com>
 
        * tree-if-conv.c (clean_predicate_lists): Update gcc_assert check.
-       
+
 2004-11-16  Eric Christopher  <echristo@redhat.com>
 
        * config/mips/mips.c: Use rtl _P predicates.
        (vect_transform_loop_bound): Set loop->nb_iterations.
 
 2004-11-14  Dorit Naishlos  <dorit@il.ibm.com>
-            Andrew Pinski  <pinskia@physics.uc.edu>
+           Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR tree-opt/18425
        * tree-vectorize.c (vect_build_loop_niters): Do not insert
diff --git a/gcc/config/sh/libgcc-excl.ver b/gcc/config/sh/libgcc-excl.ver
new file mode 100644 (file)
index 0000000..1083ba2
--- /dev/null
@@ -0,0 +1,7 @@
+# Exclude various symbols which should not be visible in libgcc.so for SH.
+%exclude {
+  __ashlsi3
+  __ashrsi3
+  __lshrsi3
+  __udivsi3
+}
diff --git a/gcc/config/sh/libgcc-std.ver b/gcc/config/sh/libgcc-std.ver
deleted file mode 100644 (file)
index bd4cfbf..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-GCC_3.0 {
-  # libgcc1 integer symbols
-  __absvsi2
-  __addvsi3
-  # __ashlsi3
-  # __ashrsi3
-  __divsi3
-  # __lshrsi3
-  __modsi3
-  __mulsi3
-  __mulvsi3
-  __negvsi2
-  __subvsi3
-  # __udivsi3
-  __umodsi3
-
-  # libgcc1 floating point symbols
-  __addsf3
-  __adddf3
-  __addxf3
-  __addtf3
-  __divsf3
-  __divdf3
-  __divxf3
-  __divtf3
-  __eqsf2
-  __eqdf2
-  __eqxf2
-  __eqtf2
-  __extenddfxf2
-  __extenddftf2
-  __extendsfdf2
-  __extendsfxf2
-  __extendsftf2
-  __fixsfsi
-  __fixdfsi
-  __fixxfsi
-  __fixtfsi
-  __floatsisf
-  __floatsidf
-  __floatsixf
-  __floatsitf
-  __gesf2
-  __gedf2
-  __gexf2
-  __getf2
-  __gtsf2
-  __gtdf2
-  __gtxf2
-  __gttf2
-  __lesf2
-  __ledf2
-  __lexf2
-  __letf2
-  __ltsf2
-  __ltdf2
-  __ltxf2
-  __lttf2
-  __mulsf3
-  __muldf3
-  __mulxf3
-  __multf3
-  __negsf2
-  __negdf2
-  __negxf2
-  __negtf2
-  __nesf2
-  __nedf2
-  __nexf2
-  __netf2
-  __subsf3
-  __subdf3
-  __subxf3
-  __subtf3
-  __truncdfsf2
-  __truncxfsf2
-  __trunctfsf2
-  __truncxfdf2
-  __trunctfdf2
-
-  # libgcc2 DImode arithmetic (for 32-bit targets).
-  __absvdi2
-  __addvdi3
-  __ashldi3
-  __ashrdi3
-  __cmpdi2
-  __divdi3
-  __ffsdi2
-  __fixdfdi
-  __fixsfdi
-  __fixtfdi
-  __fixxfdi
-  __fixunsdfdi
-  __fixunsdfsi
-  __fixunssfsi
-  __fixunssfdi
-  __fixunstfdi
-  __fixunstfsi
-  __fixunsxfdi
-  __fixunsxfsi
-  __floatdidf
-  __floatdisf
-  __floatdixf
-  __floatditf
-  __lshrdi3
-  __moddi3
-  __muldi3
-  __mulvdi3
-  __negdi2
-  __negvdi2
-  __subvdi3
-  __ucmpdi2
-  __udivdi3
-  __udivmoddi4
-  __umoddi3
-
-  # libgcc2 TImode arithmetic (for 64-bit targets).
-  __ashlti3
-  __ashrti3
-  __cmpti2
-  __divti3
-  __ffsti2
-  __fixdfti
-  __fixsfti
-  __fixtfti
-  __fixxfti
-  __lshrti3
-  __modti3
-  __multi3
-  __negti2
-  __ucmpti2
-  __udivmodti4
-  __udivti3
-  __umodti3
-  __fixunsdfti
-  __fixunssfti
-  __fixunstfti
-  __fixunsxfti
-  __floattidf
-  __floattisf
-  __floattixf
-  __floattitf
-
-  # Used to deal with trampoline initialization on some platforms
-  __clear_cache
-
-  # EH symbols
-  _Unwind_DeleteException
-  _Unwind_Find_FDE
-  _Unwind_ForcedUnwind
-  _Unwind_GetGR
-  _Unwind_GetIP
-  _Unwind_GetLanguageSpecificData
-  _Unwind_GetRegionStart
-  _Unwind_GetTextRelBase
-  _Unwind_GetDataRelBase
-  _Unwind_RaiseException
-  _Unwind_Resume
-  _Unwind_SetGR
-  _Unwind_SetIP
-  __deregister_frame
-  __deregister_frame_info
-  __deregister_frame_info_bases
-  __register_frame
-  __register_frame_info
-  __register_frame_info_bases
-  __register_frame_info_table
-  __register_frame_info_table_bases
-  __register_frame_table
-
-  # SjLj EH symbols
-  _Unwind_SjLj_Register
-  _Unwind_SjLj_Unregister
-  _Unwind_SjLj_RaiseException
-  _Unwind_SjLj_ForcedUnwind
-  _Unwind_SjLj_Resume
-}
-
-%inherit GCC_3.3 GCC_3.0
-GCC_3.3 {
-  _Unwind_FindEnclosingFunction
-  _Unwind_GetCFA
-  _Unwind_Backtrace
-  _Unwind_Resume_or_Rethrow
-  _Unwind_SjLj_Resume_or_Rethrow
-}
-
-%inherit GCC_3.3.1 GCC_3.3
-GCC_3.3.1 {
-  __gcc_personality_sj0
-  __gcc_personality_v0
-}
-
-%inherit GCC_3.3.2 GCC_3.3.1
-GCC_3.3.2 {
-}
-%inherit GCC_3.3.4 GCC_3.3.2
-GCC_3.3.4 {
-  __unorddf2
-  __unordsf2
-}
-
-%inherit GCC_3.4 GCC_3.3.4
-GCC_3.4 {
-  # bit scanning and counting built-ins
-  __clzsi2
-  __clzdi2
-  __clzti2
-  __ctzsi2
-  __ctzdi2
-  __ctzti2
-  __popcountsi2
-  __popcountdi2
-  __popcountti2
-  __paritysi2
-  __paritydi2
-  __parityti2
-}
index 3b917d1..d716c1b 100644 (file)
@@ -10,10 +10,12 @@ MULTILIB_EXCEPTIONS=
 EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
 
 # Override t-slibgcc-elf-ver to export some libgcc symbols with
-# the symbol versions that glibc used.  Also use an sh specific
-# libgcc-std.ver to avoid to export some lib1func routines which
-# should not be called via PLT.
-SHLIB_MAPFILES =  $(srcdir)/config/sh/libgcc-std.ver \
+# the symbol versions that glibc used, and hide some lib1func
+# routines which should not be called via PLT.  We have to create
+# the list from scratch.
+SHLIB_MAPFILES = \
+       $(srcdir)/libgcc-std.ver \
+       $(srcdir)/config/sh/libgcc-excl.ver \
        $(srcdir)/config/sh/libgcc-glibc.ver
 
 # Override SHLIB_LINK and SHLIB_INSTALL to use linker script
index fbbf1c0..11d652d 100644 (file)
@@ -13,6 +13,7 @@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
 SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
        -Wl,-install_name,$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME) \
        -Wl,-flat_namespace -o $(SHLIB_NAME).tmp \
+       -Wl,-exported_symbols_list,$(SHLIB_MAP) \
        $(SHLIB_VERSTRING) \
        @multilib_flags@ $(SHLIB_OBJS) -lc && \
        rm -f $(SHLIB_SOLINK) && \
@@ -30,5 +31,6 @@ SHLIB_INSTALL = \
        rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
        $(LN_S) $(SHLIB_SONAME) \
          $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
-SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
-SHLIB_MAPFILES = $(srcdir)/libgcc-darwin.ver
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
+SHLIB_MKMAP_OPTS = -v leading_underscore=1
+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
diff --git a/gcc/libgcc-darwin.ver b/gcc/libgcc-darwin.ver
deleted file mode 100644 (file)
index 0e9f95d..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-GCC_3.0 {
-  # libgcc1 integer symbols
-  ___absvsi2
-  ___addvsi3
-  ___ashlsi3
-  ___ashrsi3
-  ___divsi3
-  ___lshrsi3
-  ___modsi3
-  ___mulsi3
-  ___mulvsi3
-  ___negvsi2
-  ___subvsi3
-  ___udivsi3
-  ___umodsi3
-
-  # libgcc1 floating point symbols
-  ___addsf3
-  ___adddf3
-  ___addxf3
-  ___addtf3
-  ___divsf3
-  ___divdf3
-  ___divxf3
-  ___divtf3
-  ___eqsf2
-  ___eqdf2
-  ___eqxf2
-  ___eqtf2
-  ___extenddfxf2
-  ___extenddftf2
-  ___extendsfdf2
-  ___extendsfxf2
-  ___extendsftf2
-  ___fixsfsi
-  ___fixdfsi
-  ___fixxfsi
-  ___fixtfsi
-  ___floatsisf
-  ___floatsidf
-  ___floatsixf
-  ___floatsitf
-  ___gesf2
-  ___gedf2
-  ___gexf2
-  ___getf2
-  ___gtsf2
-  ___gtdf2
-  ___gtxf2
-  ___gttf2
-  ___lesf2
-  ___ledf2
-  ___lexf2
-  ___letf2
-  ___ltsf2
-  ___ltdf2
-  ___ltxf2
-  ___lttf2
-  ___mulsf3
-  ___muldf3
-  ___mulxf3
-  ___multf3
-  ___negsf2
-  ___negdf2
-  ___negxf2
-  ___negtf2
-  ___nesf2
-  ___nedf2
-  ___nexf2
-  ___netf2
-  ___subsf3
-  ___subdf3
-  ___subxf3
-  ___subtf3
-  ___truncdfsf2
-  ___truncxfsf2
-  ___trunctfsf2
-  ___truncxfdf2
-  ___trunctfdf2
-
-  # libgcc2 DImode arithmetic (for 32-bit targets).
-  ___absvdi2
-  ___addvdi3
-  ___ashldi3
-  ___ashrdi3
-  ___cmpdi2
-  ___divdi3
-  ___ffsdi2
-  ___fixdfdi
-  ___fixsfdi
-  ___fixtfdi
-  ___fixxfdi
-  ___fixunsdfdi
-  ___fixunsdfsi
-  ___fixunssfsi
-  ___fixunssfdi
-  ___fixunstfdi
-  ___fixunstfsi
-  ___fixunsxfdi
-  ___fixunsxfsi
-  ___floatdidf
-  ___floatdisf
-  ___floatdixf
-  ___floatditf
-  ___lshrdi3
-  ___moddi3
-  ___muldi3
-  ___mulvdi3
-  ___negdi2
-  ___negvdi2
-  ___subvdi3
-  ___ucmpdi2
-  ___udivdi3
-  ___udivmoddi4
-  ___umoddi3
-
-  # libgcc2 TImode arithmetic (for 64-bit targets).
-  ___ashlti3
-  ___ashrti3
-  ___cmpti2
-  ___divti3
-  ___ffsti2
-  ___fixdfti
-  ___fixsfti
-  ___fixtfti
-  ___fixxfti
-  ___lshrti3
-  ___modti3
-  ___multi3
-  ___negti2
-  ___ucmpti2
-  ___udivmodti4
-  ___udivti3
-  ___umodti3
-  ___fixunsdfti
-  ___fixunssfti
-  ___fixunstfti
-  ___fixunsxfti
-  ___floattidf
-  ___floattisf
-  ___floattixf
-  ___floattitf
-
-  # Used to deal with trampoline initialization on some platforms
-  ___clear_cache
-
-  # EH symbols
-  __Unwind_DeleteException
-  __Unwind_Find_FDE
-  __Unwind_ForcedUnwind
-  __Unwind_GetGR
-  __Unwind_GetIP
-  __Unwind_GetLanguageSpecificData
-  __Unwind_GetRegionStart
-  __Unwind_GetTextRelBase
-  __Unwind_GetDataRelBase
-  __Unwind_RaiseException
-  __Unwind_Resume
-  __Unwind_SetGR
-  __Unwind_SetIP
-  ___deregister_frame
-  ___deregister_frame_info
-  ___deregister_frame_info_bases
-  ___register_frame
-  ___register_frame_info
-  ___register_frame_info_bases
-  ___register_frame_info_table
-  ___register_frame_info_table_bases
-  ___register_frame_table
-
-  # SjLj EH symbols
-  __Unwind_SjLj_Register
-  __Unwind_SjLj_Unregister
-  __Unwind_SjLj_RaiseException
-  __Unwind_SjLj_ForcedUnwind
-  __Unwind_SjLj_Resume
-}
-
-%inherit GCC_3.3 GCC_3.0
-GCC_3.3 {
-  __Unwind_FindEnclosingFunction
-  __Unwind_GetCFA
-  __Unwind_Backtrace
-  __Unwind_Resume_or_Rethrow
-  __Unwind_SjLj_Resume_or_Rethrow
-}
-
-%inherit GCC_3.3.1 GCC_3.3
-GCC_3.3.1 {
-  __gcc_personality_sj0
-  __gcc_personality_v0
-}
-
-%inherit GCC_3.3.2 GCC_3.3.1
-GCC_3.3.2 {
-}
-%inherit GCC_3.3.4 GCC_3.3.2
-GCC_3.3.4 {
-  __unorddf2
-  __unordsf2
-}
-
-%inherit GCC_3.4 GCC_3.3.4
-GCC_3.4 {
-  # bit scanning and counting built-ins
-  ___clzsi2
-  ___clzdi2
-  ___clzti2
-  ___ctzsi2
-  ___ctzdi2
-  ___ctzti2
-  ___popcountsi2
-  ___popcountdi2
-  ___popcountti2
-  ___paritysi2
-  ___paritydi2
-  ___parityti2
-}
index 4ff5bf5..dacd7ca 100644 (file)
 
 BEGIN {
   state = "nm";
+  excluding = 0;
+  if (leading_underscore)
+    prefix = "_";
+  else
+    prefix = "";
 }
 
 # Remove comment and blank lines.
@@ -53,21 +58,30 @@ state == "nm" {
 # for beginning and ending each section, and %inherit markers for
 # describing version inheritence.  A symbol may appear in more than
 # one symbol version, and the last seen takes effect.
+# The magic version name '%exclude' causes all the symbols given that
+# version to be dropped from the output (unless a later version overrides).
 
 NF == 3 && $1 == "%inherit" {
   next;
 }
 
 NF == 2 && $2 == "{" {
+  if ($1 == "%exclude")
+    excluding = 1;
   next;
 }
 
 $1 == "}" {
+  excluding = 0;
   next;
 }
 
 {
-  export[$1] = 1;
+  sym = prefix $1;
+  if (excluding)
+    delete export[sym];
+  else
+    export[sym] = 1;
   next;
 }
 
index 7953afc..7514b95 100644 (file)
 BEGIN {
   state = "nm";
   sawsymbol = 0;
+  if (leading_underscore)
+    prefix = "_";
+  else
+    prefix = "";
 }
 
 # Remove comment and blank lines.
@@ -56,6 +60,8 @@ state == "nm" {
 # for beginning and ending each section, and %inherit markers for
 # describing version inheritence.  A symbol may appear in more than
 # one symbol version, and the last seen takes effect.
+# The magic version name '%exclude' causes all the symbols given that
+# version to be dropped from the output (unless a later version overrides).
 
 NF == 3 && $1 == "%inherit" {
   inherit[$2] = $3;
@@ -63,7 +69,8 @@ NF == 3 && $1 == "%inherit" {
 }
 
 NF == 2 && $2 == "{" {
-  libs[$1] = 1;
+  if ($1 != "%exclude")
+    libs[$1] = 1;
   thislib = $1;
   next;
 }
@@ -74,7 +81,11 @@ $1 == "}" {
 }
 
 {
-  ver[$1] = thislib;
+  sym = prefix $1;
+  if (thislib != "%exclude")
+    ver[sym] = thislib;
+  else
+    delete ver[sym];
   next;
 }
 
@@ -106,8 +117,6 @@ function output(lib) {
            empty = 0;
          }
        printf("\t%s;\n", sym);
-       if (dotsyms)
-         printf("\t.%s;\n", sym);
       }
 
   if (empty)