This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi Nick, On Fri, Aug 06, 2004 at 08:43:02AM +0100, Nick Clifton wrote: > >Tried both #pragma long_calls and __attribute__((long_call)) and didn't > >help :-/. > > OK - do you have a *small* test program/sources that demonstrates the > problem ? Here. Compiled (gcc 3.4.1 patched with your patch) like: # arm-elf-gcc -mthumb -mlong-calls -Wall -nostdlib -o test test.c test2.c objdump shows (ripped a bit) following: # arm-elf-objdump -d test test: file format elf32-littlearm Disassembly of section .text: ... 0000802c <_start>: 802c: b580 push {r7, lr} 802e: 466f mov r7, sp foo() gets called here: 8030: ffe6f7ff bl 8000 <foo> bar() gets called here: 8034: 4b03 ldr r3, [pc, #12] (8044 <.text+0x44>) 8036: f801f000 bl 803c <_start+0x10> 803a: e000 b 803e <_start+0x12> 803c: 4718 bx r3 803e: 46bd mov sp, r7 8040: bd80 pop {r7, pc} 8042: 0000 lsl r0, r0, #0 8044: 8049 strh r1, [r1, #2] ... So foo() gets called directly with 'bl' but bar() (in test2.c) gets called as "wanted". -sk
Attachment:
test.c
Description: Text document
Attachment:
test2.c
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |