This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Maximum symbol length problem? (Sparc, template)



Program first, cause its small:

--------------------------- main.cc -------------------------------
#include <iterator.h>
#include <pair.h>
#include <set>
#include <algo.h>
#include <string>

typedef pair<int, string> pair_i_s;
typedef set<pair_i_s, less<pair_i_s> > set_pair_i_s;

int main(int argc, char *argv[])
{
    set_pair_i_s left, right, result;
    set_pair_i_s::iterator i = result.begin();
    
    set_union(
            left.begin(),
            left.end(),
            right.begin(),
            right.end(),
            inserter(result,i)
            );
    
    return 0;
}
--------------------------- main.cc -------------------------------

Platform/system details:

?uname -a
SunOS taz 5.6 Generic_105181-03 sun4u sparc SUNW,Ultra-5_10
?gcc -v
Reading specs from
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
?uname -a
SunOS taz 5.6 Generic_105181-03 sun4u sparc SUNW,Ultra-5_10
?g++ -v
Reading specs from
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
?as -v
GNU assembler version 2.7 (sparc-sun-solaris2.5), using BFD version 2.7
?ld -v
ld version 2.7 (with BFD 2.7)


If I don't compile with -g:


?g++ -o main main.cc
/usr/ccs/bin/as: "main.s", line 2907: error: can't compute
value of an expression involving an external symbol


If I do compile with -g: (error messages reformated to fit in 74 columns)

?g++ -save-temps -Wall -g -o main main.cc
ld: warning: relocation error: R_SPARC_32: file main.o: symbol
__cl__t15__copy_dispatch2Zt18__rb_tree_iterator3Zt4pair2ZiZt12basic_string
3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0ZRCt4pair2ZiZ
t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0
i0ZPCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_al
loc_template2b0i0Zt15insert_iterator1Zt3set3Zt4pair2ZiZt12basic_string3ZcZ
t18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt4pair2Z
iZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2
b0i0Zt24__default_alloc_template2b0i0Gt18__rb_tree_iterator3Zt4pair2ZiZt12
basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Z
RCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc
_template2b0i0ZPCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24
__default_alloc_template2b0i0T1Gt15insert_iterator1Zt3set3Zt4pair2ZiZt12ba
sic_string3ZcZt18string_char_traits1ZcZt24__defa:
        external symbolic relocation against non-allocatable section .stab;
        cannot be processed at runtime: relocation ignored
Undefined                       first referenced
 symbol                             in file
__cl__t15__copy_dispatch2Zt18__rb_tree_iterator3Zt4pair2ZiZt12basic_string
3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0ZRCt4pair2ZiZ
t12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0
i0ZPCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_al
loc_template2b0i0Zt15insert_iterator1Zt3set3Zt4pair2ZiZt12basic_string3ZcZ
t18string_char_traits1ZcZt24__default_alloc_template2b0i0Zt4less1Zt4pair2Z
iZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2
b0i0Zt24__default_alloc_template2b0i0Gt18__rb_tree_iterator3Zt4pair2ZiZt12
basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc_template2b0i0Z
RCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24__default_alloc
_template2b0i0ZPCt4pair2ZiZt12basic_string3ZcZt18string_char_traits1ZcZt24
__default_alloc_template2b0i0T1Gt15insert_iterator1Zt3set3Zt4pair2ZiZt12ba
sic_string3ZcZt18string_char_traits1ZcZt24__defa main.o
ld: fatal: Symbol referencing errors. No output written to main
collect2: ld returned 1 exit status



Looking at the output of the compile with -g, the symbols appear to be
truncated somewhere near the 950th character...

If I compile to a .o first, and nm the .o, there are two symbols caught by
"grep __cl__t15__copy_dispatch".  They are identical until around the
950th character, at thich point the undefined reference is truncated.



This code compiles under FreeBSD.  Any suggestions?



Appoligies if you saw this yesterday... I attempted to send this mail
before, but never saw it in the archives or at home (where I am subscribed
to egcs-bugs).  I have simplified the program since then, so it should be
easier to analyze.

Doug
-- dougk@tis.com




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]