problem with stabs on ARM

Philip Blundell Philip.Blundell@pobox.com
Sun Apr 2 15:12:00 GMT 2000


The current ARM new-backend branch has a problem with stabs.  I think this 
is due to the recently installed `long calls' patch.

Here is a test case:

void foo() asm ("foo");
void foo()
{
}

Compiled with -g this yields:
	
	[...]
        mov     pc, lr
.Lfe1:
        .size    foo,.Lfe1-foo
.Lscope0:
.stabs "",36,0,0,.Lscope0-*foo
        .text
        .stabs "",100,0,0,.Letext
.Letext:
        .ident  "GCC: (GNU) 2.96 20000325 (experimental)"

The problem is the extra `*' in the .stabs directive.  As far as I can tell, 
this comes about because ARM_ENCODE_CALL_TYPE is adding an extra `^' to the 
front of the symbol name.  This then confuses the code in assemble_name() 
which is expecting the `*' to be the first character.  

My guess is that arm_strip_name_encoding() should recognize and chop off 
leading `*' characters as well.  This seems to be in line with other ports 
that use ENCODE_SECTION_INFO.

p.




More information about the Gcc-bugs mailing list