This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
The remaining dubious symbols in libgcc-std.ver
- To: gcc-patches at gcc dot gnu dot org
- Subject: The remaining dubious symbols in libgcc-std.ver
- From: "Zack Weinberg" <zackw at stanford dot edu>
- Date: Mon, 11 Jun 2001 16:37:31 -0700
There are a very few symbols remaining in libgcc-std.ver which
probably shouldn't be. They are: the __bb series of routines to
implement basic block profiling, which is used only with various
obscure options, not really ready for prime time, and we don't want to
be locked into an implementation; and __gcc_bcmp, which is used only
on platforms where there is no memcmp().
I believe it makes sense to move both of these to the static libgcc.
Profiling is frequently mutually exclusive with shared libraries, and
even where it works, the __bb* symbols are unlikely to wind up
exported from a library that everyone links against (this was the
problem with the EH symbols).
As for __gcc_bcmp, the set of platforms which have shared libraries
and no memcmp is almost certain to be empty.
Also marked with ??? in libgcc-std.ver is __clear_cache, which appears
to be used genuinely and unavoidably in the trampoline sequence for
some targets. I happen to think that that particular extension should
never have existed in the first place, but we're stuck with it now.
I've corrected the comment.
There are other libgcc symbols used by trampolines on some targets:
__trampoline, __enable_execute_stack, and possibly others. None of
them are presently in libgcc-std.ver. I propose to leave them out,
on the theory that we want to mess with this as little as possible,
and we can always add them later, but we can never take anything out
after 3.0 ships.
Patch follows, being tested now. OK for branch?
--
zw A man who has never gone to school may steal from a freight car, but
if he has a university education, he may steal the whole railroad.
-- Theodore Roosevelt
* Makefile.in: Move _bb and __gcc_bcmp from LIB2FUNCS to
LIB2FUNCS_ST.
* libgcc-std.ver: Remove __bb* and __gcc_bcmp.
Correct comment above __clear_cache.
===================================================================
Index: Makefile.in
--- Makefile.in 2001/06/07 22:04:38 1.602.2.29
+++ Makefile.in 2001/06/11 23:32:27
@@ -808,13 +808,13 @@ LIB2FUNCS = _muldi3 _divdi3 _moddi3 _udi
_fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
_fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \
_fixtfdi _fixunstfdi _floatditf \
- __gcc_bcmp _bb _clear_cache _trampoline __main _exit \
+ _clear_cache _trampoline __main _exit \
_absvsi2 _absvdi2 _addvsi3 _addvdi3 _subvsi3 _subvdi3 \
_mulvsi3 _mulvdi3 _negvsi2 _negvdi2 \
_ctors
# Defined in libgcc2.c, included only in the static library.
-LIB2FUNCS_ST = _eprintf
+LIB2FUNCS_ST = _eprintf _bb __gcc_bcmp
FPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
_fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
===================================================================
Index: libgcc-std.ver
--- libgcc-std.ver 2001/05/26 00:07:51 1.4.4.7
+++ libgcc-std.ver 2001/06/11 23:32:27
@@ -141,19 +141,8 @@ GCC_3.0 {
__floattixf
__floattitf
- # Basic block profile symbols.
- # ??? Some of these are for `-a', which ought to die.
- __bb
- __bb_exit_func
- __bb_fork_func
- __bb_init_func
- __bb_init_trace_func
- __bb_trace_func
- __bb_trace_ret
-
- # ??? Symbols that perhaps unused should be nuked.
+ # Used to deal with trampoline initialization on some platforms.
__clear_cache
- __gcc_bcmp
# EH symbols
_Unwind_DeleteException