[cfe-dev] naked attribute

Reed Kotler rkotler at mips.com
Thu May 2 17:20:52 PDT 2013


On 05/02/2013 05:00 PM, Rafael EspĂ­ndola wrote:
> On 2 May 2013 18:16, reed kotler <rkotler-8NJIiSa5LzA at public.gmane.org> wrote:
>> When I use the latest code sourcery/Menor release of the ARM compiler I get
>> no return statement. This claims to be 4.6.3
>>
>
> Lovely, so I guess this is architecture dependent. Any patch that
> makes us more compatible with gcc in this area is welcome, so we need
> to figure out which architectures get a ret and which ones get an
> unreachable :-(
>
> Cheers,
> Rafael
>

Not all architectures support the naked attribute, even in gcc.
"Use this attribute on the ARM, AVR, MCORE, RX and SPU ports ..."

gcc 4.7 in the android toolkit for arm does not emit a return statement.

(building cross tool chains with gcc is a pain so that's why I at first 
just downloaded the gcc arm version from the mentor/code sourcery site).

fu at fu-G10IL:~/dev/test$ 
~/dev/android-ndk-r8e/toolchains/arm-linux-androideabi-
4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc  -S tnaked.c

fu at fu-G10IL:~/dev/test$ cat tnaked.s
         .arch armv5te
         .fpu softvfp
         .eabi_attribute 20, 1
         .eabi_attribute 21, 1
         .eabi_attribute 23, 3
         .eabi_attribute 24, 1
         .eabi_attribute 25, 1
         .eabi_attribute 26, 2
         .eabi_attribute 30, 6
         .eabi_attribute 34, 0
         .eabi_attribute 18, 4
         .file   "tnaked.c"
         .text
         .align  2
         .global tnaked
         .type   tnaked, %function
tnaked:
         @ Naked Function: prologue and epilogue provided by programmer.
         @ args = 0, pretend = 0, frame = 0
         @ frame_needed = 1, uses_anonymous_args = 0
         .size   tnaked, .-tnaked
         .align  2
         .global tnonaked
         .type   tnonaked, %function
tnonaked:
         @ args = 0, pretend = 0, frame = 0
         @ frame_needed = 1, uses_anonymous_args = 0
         @ link register save eliminated.
         str     fp, [sp, #-4]!
         add     fp, sp, #0
         add     sp, fp, #0
         ldmfd   sp!, {fp}
         bx      lr
         .size   tnonaked, .-tnonaked
         .ident  "GCC: (GNU) 4.7"
         .section        .note.GNU-stack,"",%progbits




More information about the cfe-dev mailing list