I am using arm-elf-gcc 4.3.2 and binutils 2.19.51 to compile application running on AT91SAM7X256. Most of my program runs in Thumb mode, but some of its parts (interrupt entries, exceptions entries and first part of boot procedure) runs in ARM mode. To achieve that C files running in Thumb mode are compiled with -mthumb. During linking linker analyzes jumps and if there is mode change during jump, it adds _from_arm or _from_thumb wrappers changing processor mode before actual jump. Unfortunatelly sometimes one or couple of these wrappers are missing. I mean they have got their symbol name defined correctly, they occupy correct amount of code space, but in these places are filled with zeros instead of wrapper code.
I haven’t found any reason why it is happening and also I see no pattern. Can you tell me if you seen similar arm-elf-gcc and arm-elf-ld behaviour in your project? Whan can couse such behaviour?