aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@gcc.gnu.org>2004-11-17 05:39:02 +0000
committerZack Weinberg <zack@gcc.gnu.org>2004-11-17 05:39:02 +0000
commit7c8347536fcd9cf01264aba9a3827915f26de05d (patch)
treef47c4639b62229f963495d861463f9b3de09e56a /gcc
parentace6d09bfa82365b936696aee87ddf48a079eda2 (diff)
downloadgcc-7c8347536fcd9cf01264aba9a3827915f26de05d.zip
gcc-7c8347536fcd9cf01264aba9a3827915f26de05d.tar.gz
gcc-7c8347536fcd9cf01264aba9a3827915f26de05d.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog40
-rw-r--r--gcc/config/sh/libgcc-excl.ver7
-rw-r--r--gcc/config/sh/libgcc-std.ver218
-rw-r--r--gcc/config/sh/t-linux10
-rw-r--r--gcc/config/t-slibgcc-darwin6
-rw-r--r--gcc/libgcc-darwin.ver218
-rw-r--r--gcc/mkmap-flat.awk16
-rw-r--r--gcc/mkmap-symver.awk17
8 files changed, 74 insertions, 458 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fd41205..19ebe9f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/sh/libgcc-excl.ver b/gcc/config/sh/libgcc-excl.ver
new file mode 100644
index 0000000..1083ba2
--- /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 bd4cfbf..0000000
--- 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 3b917d1..d716c1b 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 fbbf1c0..11d652d 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 0e9f95d..0000000
--- 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 4ff5bf5..dacd7ca 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 7953afc..7514b95 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)