When using nested functions, the trampoline code will destroy register 9 while loading the static chain. This is even noted in gcc/config/arm/arm.h: XXX FIXME: When the trampoline returns, r8 will be clobbered. (it will be r9 and not r8...). The attached patch avoids clobbering r9.
-- Summary: gcc generates incorrect trampoline code in thumb mode Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: leo at marco dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32838