This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: invalid assembly language generated on Solaris
- To: papadopo at shfj dot cea dot fr
- Subject: Re: invalid assembly language generated on Solaris
- From: Manfred Hollstein <manfred at s-direktnet dot de>
- Date: Wed, 24 Jun 1998 16:28:39 +0200 (MET DST)
- Cc: egcs-bugs at cygnus dot com
- References: <199806241417.QAA20937@orcanie.shfj.cea.fr>
- Reply-To: manfred at s-direktnet dot de, Manfred dot Hollstein at ks dot sel dot alcatel dot de
On Wed, 24 June 1998, 16:17:42, papadopo@shfj.cea.fr wrote:
> > > The following source generates invalid assembly language on
> > > Solaris 2.x with gcc-2.8.x and egcs-1.0.x:
> > >
> > > #include <set>
> > > #include <string>
> > > set< set<string> > foo;
> > >
> > > More precisely, it compiles smoothly with -g:
> > > $ g++ -g -c foo.cc
> > > $
> > > but not without -g:
> > > $ g++ -c foo.cc
> > > /usr/ccs/bin/as: "/var/tmp/cc090YoK.s", line 229: error: can't compute value of an expression involving an external symbol
> > > $
> >
> > I'm not having any problems on Solaris 2.6 using GNU as and
> > Solaris' native as:
> >
> > $ /tools/gnu/packages/egcs/1.0.3a/bin/egcc -v
> > Reading specs from /tools/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
> > gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
> > $ /tools/gnu/packages/egcs/1.0.3a/bin/egcc -g -c foo.cc
> > $ /tools/gnu/packages/egcs/1.0.3a/bin/egcc -g -c foo.cc -B/usr/ccs/bin/
> > $
>
> You're using the -g option.
> That's probably the reason why you don't have any problem.
> Try again without -g.
> See:
> $ g++ -v
> Reading specs from /home/papadopo/egcs-19980621/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.91.42/specs
> gcc version egcs-2.91.42 19980621 (gcc2 ss-980502 experimental)
> $ g++ -c foo.cc
> /usr/ccs/bin/as: "/var/tmp/ccewDlO_.s", line 235: error: can't compute value of an expression involving an external symbol
> $ g++ -c ~/GRAPH/essai.cc -B/usr/ccs/bin
> /usr/ccs/bin/as: "/var/tmp/ccSX7SK_.s", line 235: error: can't compute value of an expression involving an external symbol
> g++: file path prefix `/usr/ccs/bin' never used
> $
Oops, you're right; but GNU as still doesn't have problems:
$ /tools/gnu/packages/egcs/1.0.3a/bin/egcc -c foo.cc
$ /tools/gnu/packages/egcs/1.0.3a/bin/egcc -c foo.cc -B/usr/ccs/bin/
/usr/ccs/bin/as: "/tmp/ccMvVNP_.s", line 235: error: can't compute value of an expression involving an external symbol
$
I guess, it's the well known problem with these nice mangled STL names;
line 235 is this:
.size right__t7rb_tree5Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt8identity1Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt4less1Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Pt14__rb_tree_node1Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0,.LLfe3-right__t7rb_tree5Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt8identity1Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt4less1Zt3set3Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0Pt14__rb_tree_node1Zt3set3Zt12basic_string3ZcZt18strin
g_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt24__default_alloc_template2b0i0
That's far too long for /usr/ccs/bin/as :-(
manfred