C++ programs that include throws, like: struct Bar { ~Bar() { throw 1; } }; int main() { try { Bar f; } catch(int i) { return 0; } return 0; } fail when I use the latest gnu assembler. This starts after this checkin: 2010-12-01 Maciej W. Rozycki <macro@codesourcery.com> * symbols.h (dot_symbol): New declaration. (dot_symbol_init): New prototype. * symbols.c (dot_symbol): New variable. (symbol_clone): Assert it's not dot_symbol being cloned. (dot_symbol_init): New function. (symbol_clone_if_forward_ref): Create a new temporary symbol when trying to clone dot_symbol. * expr.c (current_location): Refer to dot_symbol instead of making a new temporary symbol. * read.c (read_a_source_file): Update dot_symbol as we go. * as.c (main): Call dot_symbol_init. Also, before this change I got 3 failures in the GAS testsuite: FAIL: ia64 unwind descriptors FAIL: lns-duplicate FAIL: lns-common-1 After this change I get five failures: FAIL: ia64 unwind relocations (ilp32) FAIL: ia64 proc FAIL: ia64 unwind descriptors FAIL: lns-duplicate FAIL: lns-common-1 I have tried using objdump to find the difference in the object files before and after the gas change but the output of objdump is the same before and after so I am not sure what the problem is. I have been investigating this on ia64-hp-hpux11.23 but I believe it can be reproduced on an ia64-*-linux-gnu platform as well.
Binutils from CVS as of 2010-12-06 works fine on Linux/ia64.
*** This bug has been marked as a duplicate of bug 12282 ***