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
This commit is contained in:
Zack Weinberg 2004-11-17 05:39:02 +00:00
parent ace6d09bfa
commit 7c8347536f
8 changed files with 74 additions and 458 deletions

View 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
@ -6,21 +24,21 @@
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.
@ -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 <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.
@ -261,7 +279,7 @@
(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

View File

@ -0,0 +1,7 @@
# Exclude various symbols which should not be visible in libgcc.so for SH.
%exclude {
__ashlsi3
__ashrsi3
__lshrsi3
__udivsi3
}

View File

@ -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
}

View 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

View 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

View File

@ -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
}

View File

@ -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;
}

View File

@ -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)