On Mon, Aug 15, 2005 at 07:55:00PM +0200, Torsten Mohr wrote: > I wonder now how to proceed, do i need to report this stuff officially > somewhere?
I've taken the liberty of cleaning up the L_callt_save_interrupt #ifdef, making it consistent with the following one for L_callt_save_all_interrupt. (This not only removes the .text error, but adopts the easier to handle layout of the latter.) Would you mind applying the attached patch, and rebuilding v850e-gcc, to check it works for you? I'd happily have a look at the elf generated from a small test, if you'd like to send it off-list. (Just the .call_table_data and .call_table_text sections would suffice.) Once we're happy with it, I'll put the bug report and patch into bugzilla. I'm happy to move over to a gcc mailing list, but am not currently subscribed. Erik
--- /mnt/usr/local/src/gcc-3.4.4/gcc/config/v850/lib1funcs.asm Thu Jan 1 04:22:33 2004 +++ /home/erik/tmp/lib1funcs.asm Tue Aug 16 12:05:36 2005 @@ -1428,7 +1428,7 @@ #ifdef L_callt_save_interrupt - /* Put this functions into the call table area */ + /* Put these functions into the call table area */ .call_table_text /* Save registers r1, ep, gp, r10 on stack and load up with expected values. */ @@ -1440,23 +1440,14 @@ st.w ep, 0[sp] st.w gp, 4[sp] st.w r1, 8[sp] - /* R10 has alread been saved bofore callt ctoff(_save_interrupt). */ + /* R10 has alread been saved before callt ctoff(_save_interrupt). */ /* st.w r10, 12[sp] */ mov hilo(__ep),ep mov hilo(__gp),gp ctret - /* Place the offsets of the start of the routine into the call table. */ - .call_table_data - .global __callt_save_interrupt - .type __callt_save_interrupt,@function -__callt_save_interrupt: .short ctoff(.L_save_interrupt) - - .call_table_text - /* Restore saved registers, deallocate stack and return from the interrupt. */ - /* Called via: callt ctoff(__callt_restore_itnerrupt). */ - .text + /* Called via: callt ctoff(__callt_restore_interrupt). */ .align 2 .globl __return_interrupt .type __return_interrupt,@function @@ -1472,9 +1463,13 @@ addi 24, sp, sp reti - /* Place the offsets of the start of the routine into the call table. */ + /* Place the offsets of the start of these routines into the call table. */ .call_table_data + .global __callt_save_interrupt + .type __callt_save_interrupt,@function +__callt_save_interrupt: .short ctoff(.L_save_interrupt) + .global __callt_return_interrupt .type __callt_return_interrupt,@function __callt_return_interrupt: .short ctoff(.L_return_interrupt) @@ -1482,7 +1477,7 @@ #endif /* L_callt_save_interrupt */ #ifdef L_callt_save_all_interrupt - /* Put this functions into the call table area. */ + /* Put these functions into the call table area. */ .call_table_text /* Save all registers except for those saved in __save_interrupt. */