V3 PATCH: Allow an OS to override _G_USING_THUNKS

Phil Edwards pedwards@disaster.jaj.com
Mon Oct 30 09:40:00 GMT 2000


On Sun, Oct 29, 2000 at 01:26:38PM -0800, Mark Mitchell wrote:
> 
> Because _G_config.h was hardwired to use thunks, we ran into pretty
> serious problems with libio on platforms that didn't use thunks.
> 
> I bet this patch will allow Phil to fix the Solaris problem he
> reported on October 27 in this message:
> 
>   http://sources.redhat.com/ml/libstdc++/2000-10/msg00229.html
> 
> Phil, try `#define _G_USING_THUNKS 0' in your OS override file, and
> see if that helps.

Holy cow...

>From 6 passing tests to 119, all at once.  Of the remaining 63 failures,
I get 2 coredumps from cc1plus, and 49 from binutils' ld (mostly on
static builds).

The testsuite results are below.  Shared executables have improved
considerably (go figure, the vtbls work now :-).  The mkcheck output is
changed slightly; "-b" indicates a build failure, as distinguished from
all the other ways in which things can go wrong.

I made some small changes while trying to debug this problem, and will
post the patch to the v3 list.


Thanks, Mark!
Phil

-- 
pedwards at disaster dot jaj dot com  |  pme at sources dot redhat dot com
devphil at several other less interesting addresses in various dot domains
The gods do not protect fools.  Fools are protected by more capable fools.


host: SunOS 5.8 Generic_108528-02 sun4u
compiler: gcc version 2.97 20001030 (experimental)
compiler flags: -ggdb3 -DDEBUG_ASSERT -ffunction-sections -fdata-sections 
date: 20001030
pass/fail results:  119/63

p == pass/fail execution test
ctime == time to compile and link
etime == time for executable to run
text == size of the executable text section
data == size of the executable data section
total == size of the executable

(First static, then shared.)
p ctime	etime	text	data	total	name	
+  1	0.007	159408	5628	293593	17_intro/header_ciso646.cc
+  1	0.035	1256	12	4451	17_intro/header_ciso646.cc

+  8	0.007	134556	5508	441807	17_intro/header_fstream.cc
+  8	0.035	1040	32	200577	17_intro/header_fstream.cc

+  4	0.006	29720	2268	196656	17_intro/header_iomanip.cc
+  5	0.035	960	12	149439	17_intro/header_iomanip.cc

+  4	0.006	29720	2268	163678	17_intro/header_ios.cc
+  4	0.036	960	12	116461	17_intro/header_ios.cc

+  0	0.006	29376	2268	54974	17_intro/header_iosfwd.cc
+  0	0.036	616	12	6890	17_intro/header_iosfwd.cc

-b 6	0.036	0	0	0	17_intro/header_iostream.cc
+  5	0.035	1160	12	147866	17_intro/header_iostream.cc

+  5	0.006	29720	2268	194230	17_intro/header_istream.cc
+  5	0.035	960	12	147013	17_intro/header_istream.cc

+  4	0.007	29720	2268	163686	17_intro/header_ostream.cc
+  4	0.036	960	12	116469	17_intro/header_ostream.cc

+  5	0.006	29720	2268	194230	17_intro/header_sstream.cc
+  5	0.035	960	12	147013	17_intro/header_sstream.cc

+  4	0.006	29720	2268	163665	17_intro/header_streambuf.cc
+  4	0.036	960	12	116448	17_intro/header_streambuf.cc

-b 15	0.036	0	0	0	17_intro/headers.cc
+  14	0.035	1664	548	228574	17_intro/headers.cc

+  1	0.006	189620	6240	429517	18_support/numeric_limits.cc
+  1	0.035	2040	12	40963	18_support/numeric_limits.cc

-b 1	0.035	0	0	0	20_util/auto_ptr.cc
-b 2	0.035	0	0	0	20_util/auto_ptr.cc

+  8	0.008	222204	6448	1038900	21_strings/append.cc
+  7	0.041	23012	24	320540	21_strings/append.cc

+  10	0.007	220728	6448	849995	21_strings/capacity.cc
+  10	0.036	30044	28	384688	21_strings/capacity.cc

+  6	0.007	202912	6456	679582	21_strings/char_traits.cc
+  5	0.036	11812	32	200857	21_strings/char_traits.cc

+  6	0.007	201608	6448	649652	21_strings/compare.cc
+  5	0.035	10200	24	169078	21_strings/compare.cc

+  7	0.008	208248	6448	745005	21_strings/ctor_copy_dtor.cc
+  7	0.040	17160	24	283546	21_strings/ctor_copy_dtor.cc

+  6	0.007	198068	6448	641748	21_strings/element_access.cc
+  5	0.039	7516	24	159622	21_strings/element_access.cc

+  6	0.007	223424	6448	925256	21_strings/find.cc
+  5	0.036	11772	24	164440	21_strings/find.cc

+  8	0.008	211584	6448	750469	21_strings/insert.cc
+  7	0.040	20496	24	291346	21_strings/insert.cc

-b 15	0.040	0	0	0	21_strings/inserters_extractors.cc
+  13	0.152	28772	528	358005	21_strings/inserters_extractors.cc

+  7	0.007	206864	6448	683238	21_strings/invariants.cc
+  6	0.035	15564	24	206899	21_strings/invariants.cc

+  7	0.007	215260	6448	718644	21_strings/nonmember.cc
+  7	0.035	23852	24	249489	21_strings/nonmember.cc

+  5	0.007	198840	6448	643461	21_strings/operations.cc
+  5	0.034	8228	24	163607	21_strings/operations.cc

+  8	0.007	210684	6448	758539	21_strings/replace.cc
+  7	0.035	19296	24	287845	21_strings/replace.cc

+  6	0.007	198888	6448	641229	21_strings/rfind.cc
+  5	0.035	7480	24	157052	21_strings/rfind.cc

+  6	0.007	202724	6448	690900	21_strings/substr.cc
+  6	0.039	11556	24	219155	21_strings/substr.cc

-b 11	0.039	0	0	0	22_locale/codecvt_char_char.cc
+  8	0.035	3932	32	237276	22_locale/codecvt_char_char.cc

-b 9	0.035	0	0	0	22_locale/codecvt_unicode_char.cc
-b 9	0.035	0	0	0	22_locale/codecvt_unicode_char.cc

-b 9	0.035	0	0	0	22_locale/codecvt_unicode_wchar_t.cc
-b 8	0.035	0	0	0	22_locale/codecvt_unicode_wchar_t.cc

-b 11	0.035	0	0	0	22_locale/codecvt_wchar_t_char.cc
+  8	0.035	4212	32	238952	22_locale/codecvt_wchar_t_char.cc

-b 9	0.035	0	0	0	22_locale/ctor_copy_dtor.cc
-b 9	0.035	0	0	0	22_locale/ctor_copy_dtor.cc

-b 10	0.035	0	0	0	22_locale/ctype.cc
+  8	0.035	2416	544	212954	22_locale/ctype.cc

-b 10	0.035	0	0	0	22_locale/ctype_char_members.cc
+  7	0.036	3424	128	210946	22_locale/ctype_char_members.cc

-b 10	0.036	0	0	0	22_locale/ctype_wchar_t_members.cc
+  8	0.036	3460	160	212992	22_locale/ctype_wchar_t_members.cc

-b 16	0.036	0	0	0	22_locale/facet.cc
+  14	0.035	42404	3320	473117	22_locale/facet.cc

-b 11	0.035	0	0	0	22_locale/global_templates.cc
+  9	0.036	7788	120	270245	22_locale/global_templates.cc

-b 11	0.036	0	0	0	22_locale/operators.cc
+  9	0.036	8708	120	275664	22_locale/operators.cc

-b 11	0.036	0	0	0	22_locale/static_members.cc
+  9	0.035	8468	120	248989	22_locale/static_members.cc

-b 10	0.035	0	0	0	23_containers/bitset_ctor.cc
+  8	0.039	16428	672	291736	23_containers/bitset_ctor.cc

-b 12	0.039	0	0	0	23_containers/bitset_shift.cc
+  9	1.064	27120	672	306013	23_containers/bitset_shift.cc

-b 6	1.064	0	0	0	23_containers/map_operators.cc
-b 7	1.064	0	0	0	23_containers/map_operators.cc

-b 10	1.064	0	0	0	23_containers/multiset.cc
+  7	0.000	10992	16	259327	23_containers/multiset.cc

-b 5	0.000	0	0	0	23_containers/set_operators.cc
-b 5	0.000	0	0	0	23_containers/set_operators.cc

+  4	0.007	198752	6248	520960	23_containers/vector_capacity.cc
+  4	0.035	11216	16	134157	23_containers/vector_capacity.cc

-b 11	0.035	0	0	0	23_containers/vector_ctor.cc
+  9	0.036	39200	16	341008	23_containers/vector_ctor.cc

-b 5	0.036	0	0	0	23_containers/vector_element_access.cc
+  3	0.040	3784	16	91196	23_containers/vector_element_access.cc

+  6	0.007	208584	6248	641045	23_containers/vector_modifiers.cc
+  6	0.035	21048	16	254300	23_containers/vector_modifiers.cc

-b 10	0.035	0	0	0	24_iterators/istreambuf_iterator.cc
+  7	0.035	15824	360	261721	24_iterators/istreambuf_iterator.cc

+  13	0.007	226372	6448	943188	24_iterators/iterator.cc
+  12	0.036	35688	24	471903	24_iterators/iterator.cc

+  3	0.007	160724	5628	346691	25_algorithms/lower_bound.cc
+  2	0.035	2572	12	57554	25_algorithms/lower_bound.cc

+  2	0.007	159476	5628	322560	25_algorithms/min_max.cc
+  2	0.035	1324	12	33733	25_algorithms/min_max.cc

-b 11	0.035	0	0	0	26_numerics/binary_closure.cc
+  10	0.000	5724	12	285044	26_numerics/binary_closure.cc

+  0	0.006	29884	2268	59884	26_numerics/buggy_complex.cc
+  1	0.035	1124	12	11941	26_numerics/buggy_complex.cc

+  1	0.006	182204	5628	326410	26_numerics/c_math.cc
+  0	0.036	1020	12	6543	26_numerics/c_math.cc

-b 11	0.036	0	0	0	26_numerics/complex_inserters_extractors.cc
+  8	0.041	20232	360	265060	26_numerics/complex_inserters_extractors.cc

+  6	0.007	190304	6240	498723	26_numerics/valarray.cc
+  6	0.036	2264	12	108647	26_numerics/valarray.cc

-b 13	0.036	0	0	0	27_io/filebuf.cc
+  11	0.040	25664	272	298414	27_io/filebuf.cc

-b 10	0.040	0	0	0	27_io/filebuf_members.cc
+  10	0.036	8152	152	257232	27_io/filebuf_members.cc

+  5	0.006	161736	5628	410823	27_io/fpos.cc
+  4	0.036	3584	12	122987	27_io/fpos.cc

-b 12	0.036	0	0	0	27_io/ifstream_members.cc
+  10	0.602	8692	152	255091	27_io/ifstream_members.cc

-b 9	0.602	0	0	0	27_io/ios_base_callbacks.cc
+  7	0.036	12476	296	244178	27_io/ios_base_callbacks.cc

-b 9	0.036	0	0	0	27_io/ios_base_members_static.cc
+  6	0.036	9928	300	233286	27_io/ios_base_members_static.cc

-b 9	0.036	0	0	0	27_io/ios_ctor.cc
+  7	0.035	11848	296	237974	27_io/ios_ctor.cc

-b 14	0.035	0	0	0	27_io/ios_manip_basefield.cc
+  11	777.000	19600	600	332456	27_io/ios_manip_basefield.cc

-b 14	777.000	0	0	0	27_io/ios_manip_fmtflags.cc
+  12	0.000	21256	632	338371	27_io/ios_manip_fmtflags.cc

-b 8	0.000	0	0	0	27_io/ios_members.cc
+  5	0.039	7764	80	181957	27_io/ios_members.cc

+  5	0.006	29720	2268	194210	27_io/istream.cc
+  5	0.035	960	12	146993	27_io/istream.cc

-b 16	0.035	0	0	0	27_io/istream_extractor_arith.cc
+  13	1.000	35784	832	348571	27_io/istream_extractor_arith.cc

-b 9	1.000	0	0	0	27_io/istream_extractor_char.cc
+  8	0.036	17884	360	257634	27_io/istream_extractor_char.cc

-b 12	0.036	0	0	0	27_io/istream_extractor_other.cc
+  11	0.037	19344	368	316154	27_io/istream_extractor_other.cc

-b 9	0.037	0	0	0	27_io/istream_manip.cc
+  8	0.036	13440	360	250659	27_io/istream_manip.cc

-b 14	0.036	0	0	0	27_io/istream_seeks.cc
+  12	0.038	25792	432	328484	27_io/istream_seeks.cc

-b 9	0.038	0	0	0	27_io/istream_sentry.cc
+  6	0.035	10856	328	241568	27_io/istream_sentry.cc

-b 15	0.035	0	0	0	27_io/istream_unformatted.cc
+  12	0.137	29720	464	344647	27_io/istream_unformatted.cc

-b 9	0.137	0	0	0	27_io/istringstream_members.cc
+  8	0.037	14788	392	277920	27_io/istringstream_members.cc

-b 16	0.037	0	0	0	27_io/narrow_stream_objects.cc
+  14	0.000	2196	548	257929	27_io/narrow_stream_objects.cc

-b 12	0.000	0	0	0	27_io/ofstream_members.cc
+  9	0.688	8708	152	253704	27_io/ofstream_members.cc

+  4	0.006	29720	2268	163666	27_io/ostream.cc
+  4	0.037	960	12	116449	27_io/ostream.cc

-b 17	0.037	0	0	0	27_io/ostream_inserter_arith.cc
+  15	0.076	45556	1216	461540	27_io/ostream_inserter_arith.cc

-b 15	0.076	0	0	0	27_io/ostream_inserter_char.cc
+  12	0.198	27372	432	341540	27_io/ostream_inserter_char.cc

-b 13	0.198	0	0	0	27_io/ostream_inserter_other.cc
+  11	0.060	15992	464	296473	27_io/ostream_inserter_other.cc

-b 10	0.060	0	0	0	27_io/ostream_manip.cc
+  8	0.036	18024	360	281363	27_io/ostream_manip.cc

-b 12	0.036	0	0	0	27_io/ostream_seeks.cc
+  11	0.038	14656	432	287894	27_io/ostream_seeks.cc

-b 9	0.038	0	0	0	27_io/ostream_unformatted.cc
+  7	0.036	10956	364	241411	27_io/ostream_unformatted.cc

-b 9	0.036	0	0	0	27_io/streambuf.cc
+  7	0.038	17548	440	226034	27_io/streambuf.cc

-b 10	0.038	0	0	0	27_io/stringbuf.cc
+  9	0.038	30508	272	288702	27_io/stringbuf.cc

-b 12	0.038	0	0	0	27_io/stringstream.cc
+  9	0.038	21104	496	301216	27_io/stringstream.cc

-b 16	0.038	0	0	0	27_io/wide_stream_objects.cc
+  14	0.000	2180	548	258408	27_io/wide_stream_objects.cc

-b 5	0.000	0	0	0	ext/headers.cc
-b 4	0.000	0	0	0	ext/headers.cc

testrun == 1564



More information about the Libstdc++ mailing list