On Sun, 2005-03-13 at 10:54 +0200, Razya Ladelsky wrote: > Mark Mitchell <[EMAIL PROTECTED]> wrote on 11/03/2005 04:55:38: > > > Daniel Berlin wrote: > > > > > As for why the new name doesn't work, it's not clear from the above. > > > I'd need to see the assembly and the error. > > > :) > > > > Likewise. I assume these functions have only internal linkage? Or that > > > the original function is still provided with external linkage? (I'm > > just checking that we're not breaking the ABI.) > > > > These functions indeed have only internal linkage. > The error I get is : > > /tmp/cc9VryOe.s: Assembler messages: > /tmp/cc9VryOe.s:11056: Error: unrecognized symbol type "" > /tmp/cc9VryOe.s:11056: Warning: rest of line ignored; first ignored > character is `<' > /tmp/cc9VryOe.s:11057: Error: Unrecognized opcode: `operator<<.589:' > /tmp/cc9VryOe.s:11392: Error: expected comma after name `operator' in > .size directive > /tmp/cc9VryOe.s:11392: Warning: rest of line ignored; first ignored > character is `<' > /tmp/cc9VryOe.s:11444: Error: unrecognized symbol type "" > /tmp/cc9VryOe.s:11444: Warning: rest of line ignored; first ignored > character is `<' > /tmp/cc9VryOe.s:11445: Error: Unrecognized opcode: `operator<<.585:' > /tmp/cc9VryOe.s:11849: Error: expected comma after name `operator' in > .size directive > /tmp/cc9VryOe.s:11849: Warning: rest of line ignored; first ignored > character is `<' > > > the relevant assembly code (a similar assembly is produced for happens > for operator<<.589): > > > .section > .text._ZNSt13basic_ostreamIN9__gnu_cxx9characterItj11__mbstate_tEESt11char_traitsIS3_EElsEb > .section > .text._ZNSt13basic_ostreamIN9__gnu_cxx9characterItj11__mbstate_tEESt11char_traitsIS3_EElsEl,"ax",@progbits > .align 2 > .type operator<<.585, @function > operator<<.585: > .LFB3983: > .loc 22 125 0 > .LVL864: > mflr 0 > .LCFI384: > stwu 1,-96(1) > ..... > > The caller's part: > ...... > .LEHE165: > mr 3,31 > bl _ZNSt6localeD1Ev > .LBB4727: > .loc 14 98 0 > mr 3,25 > li 4,500 > .LEHB166: > bl operator<<.585
^^^^^^^^^^^^^^^^^^^ You are using the demangled name instead of the mangled one, which is where your problem comes from. Mark should be able to tell you how to get the mangled name instead of the demangled one (though i thought it was just in either DECL_ASSEMBLER_NAME or DECL_NAME). --Dan