From 7c8347536fcd9cf01264aba9a3827915f26de05d Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Wed, 17 Nov 2004 05:39:02 +0000 Subject: [PATCH] mkmap-flat.awk, [...]: If the last version assigned to a symbol was '%exclude', do not emit it anywhere. * 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 | 40 +++++-- gcc/config/sh/libgcc-excl.ver | 7 ++ gcc/config/sh/libgcc-std.ver | 218 ---------------------------------- gcc/config/sh/t-linux | 10 +- gcc/config/t-slibgcc-darwin | 6 +- gcc/libgcc-darwin.ver | 218 ---------------------------------- gcc/mkmap-flat.awk | 16 ++- gcc/mkmap-symver.awk | 17 ++- 8 files changed, 74 insertions(+), 458 deletions(-) create mode 100644 gcc/config/sh/libgcc-excl.ver delete mode 100644 gcc/config/sh/libgcc-std.ver delete mode 100644 gcc/libgcc-darwin.ver diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd412057eda..19ebe9f9876 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2004-11-16 Zack Weinberg + + * 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 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Swap @@ -6,21 +24,21 @@ 2004-11-16 Aldy Hernandez - * 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 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. @@ -29,12 +47,12 @@ 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 * optabs.c (vector_compare_rtx): Fix COMPARISON_CLASS_P use. - + 2004-11-16 Kazu Hirata * expmed.c, ra-colorize.c: Fix comment typos. @@ -42,7 +60,7 @@ * doc/tm.texi: Fix typos. 2004-11-16 Daniel Jacobowitz - Mark Mitchell + Mark Mitchell PR target/6123 * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __PIC__ and @@ -56,7 +74,7 @@ 2004-11-16 Devang Patel * tree-if-conv.c (clean_predicate_lists): Update gcc_assert check. - + 2004-11-16 Eric Christopher * config/mips/mips.c: Use rtl _P predicates. @@ -261,7 +279,7 @@ (vect_transform_loop_bound): Set loop->nb_iterations. 2004-11-14 Dorit Naishlos - Andrew Pinski + Andrew Pinski 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 index 00000000000..1083ba2c20a --- /dev/null +++ b/gcc/config/sh/libgcc-excl.ver @@ -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 index bd4cfbf3d34..00000000000 --- a/gcc/config/sh/libgcc-std.ver +++ /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 -} diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux index 3b917d19326..d716c1be080 100644 --- a/gcc/config/sh/t-linux +++ b/gcc/config/sh/t-linux @@ -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 diff --git a/gcc/config/t-slibgcc-darwin b/gcc/config/t-slibgcc-darwin index fbbf1c01afa..11d652dae74 100644 --- a/gcc/config/t-slibgcc-darwin +++ b/gcc/config/t-slibgcc-darwin @@ -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 index 0e9f95db734..00000000000 --- a/gcc/libgcc-darwin.ver +++ /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 -} diff --git a/gcc/mkmap-flat.awk b/gcc/mkmap-flat.awk index 4ff5bf5f05d..dacd7ca6d36 100644 --- a/gcc/mkmap-flat.awk +++ b/gcc/mkmap-flat.awk @@ -20,6 +20,11 @@ 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; } diff --git a/gcc/mkmap-symver.awk b/gcc/mkmap-symver.awk index 7953afcff80..7514b954ec7 100644 --- a/gcc/mkmap-symver.awk +++ b/gcc/mkmap-symver.awk @@ -21,6 +21,10 @@ 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)