ARM, Maverick Crunch and C++ exceptions
wojciech.wisniewski@op.pl
wojciech.wisniewski@op.pl
Mon Feb 25 15:23:00 GMT 2008
Hello,
I've tried to compile some C++ program with ARM-targetted gcc that emits instructions for Maverick Crunch FPU (it's gcc-4.1.2 with patches from http://files.futaris.org/gcc/crunch.tar.bz2). There are assembler errors:
/tmp/cc3KDFf1.s: Assembler messages:
/tmp/cc3KDFf1.s:51145: Error: register expected
/tmp/cc3KDFf1.s:66883: Error: register expected
/tmp/cc3KDFf1.s:66886: Error: register expected
/tmp/cc3KDFf1.s:66889: Error: register expected
The same program compiles and works perfectly when compiling with
When I've looked at gcc's assembly output I've found this:
line 51145:
.save {mv4}
cfstrd mvd4, [sp, #-8]!
line 66883:
.save {mv6}
cfstrd mvd6, [sp, #-8]!
line 66886:
.save {mv5}
cfstrd mvd5, [sp, #-8]!
line 66889:
.save {mv4}
cfstrd mvd4, [sp, #-8]!
It seems that as can't expand .save macro with Maverick register as argument. I've looked also at gas/config/tc-arm.c file in binutils and I've found that there are "s_arm_unwind_save_core", "s_arm_unwind_save_fpa",
"s_arm_unwind_save_vfp_armv6", "s_arm_unwind_save_vfp",
"s_arm_unwind_save_mmxwr", "s_arm_unwind_save_mmxwcg" functions
but there is no "s_arm_unwind_save_maverick" function. It seems that there is no support for exceptions and Maverick at all. Is it a bug or (mis)feature?
Wojciech Wisniewski
More information about the Binutils
mailing list