https://gcc.gnu.org/g:991a62f5b6fc5dc4fb0de85a532cc53d4fc550ad
commit r16-7681-g991a62f5b6fc5dc4fb0de85a532cc53d4fc550ad Author: Sandra Loosemore <[email protected]> Date: Thu Feb 19 18:26:32 2026 +0000 doc: Consolidate documentation for naked attribute [PR88472] This attribute has been documented similarly in the sections for 12 different targets. I think it's time to promote this to a common attribute and document it only once with a warning that it's not supported everywhere. gcc/ChangeLog PR other/88472 * doc/extend.texi (Common Attributes): Document the "naked" attribute here. (ARC Attributes): Delete entry for "naked". (ARM Attributes): Likewise. (AVR Attributes): Likewise. (BPF Attributes): Likewise. (C-SKY Attributes): Likewise. (MCORE Attributes): Delete entire section since "naked" was the only thing listed. (MSP430 Attributes): Delete entry for "naked". (NDS32 Attributes): Likewise. (RISC-V Attributes): Likewise. (RL78 Attributes): Likewise. (RX Attributes): Likewise. (x86 Attributes): Likewise. Diff: --- gcc/doc/extend.texi | 180 +++++----------------------------------------------- 1 file changed, 16 insertions(+), 164 deletions(-) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index d7c2dc8d703d..4a96fd0a529f 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3511,6 +3511,22 @@ It is not possible to avoid the warning in this way if the maybe-escaped variable is a function argument, because those are in scope for the whole function. +@cindex @code{naked} function attribute +@item naked +This attribute applies to functions. + +It allows the compiler to construct the requisite function +declaration, while allowing the body of the function to be assembly +code. The specified function does not have prologue/epilogue +sequences generated by the compiler. Only basic @code{asm} statements +can safely be included in naked functions (@pxref{Basic Asm}). While +using extended @code{asm} or a mixture of basic @code{asm} and C code +may appear to work, they cannot be depended upon to work reliably and +are not supported. + +Not all targets support this attribute. Those that do include ARC, ARM, +AVR, BPF, C-SKY, MCORE, MSP430, NDS32, RISC-V, RL78, RX, and x86. + @cindex @code{no_icf} attribute @item no_icf This attribute can be applied to functions or variables. @@ -5573,7 +5589,6 @@ The default for the attribute is controlled by @option{-fzero-call-used-regs}. * M32C Attributes:: * M32R/D Attributes:: * m68k Attributes:: -* MCORE Attributes:: * MicroBlaze Attributes:: * Microsoft Windows Attributes:: * MIPS Attributes:: @@ -5981,19 +5996,6 @@ It allows you to mark secure-code functions that are callable from normal mode. The location of the secure call function into the @code{sjli} table needs to be passed as argument. -@cindex @code{naked} function attribute, ARC -@item naked -This attribute applies to functions. - -It allows the compiler to construct the requisite function -declaration, while allowing the body of the function to be assembly -code. The specified function does not have prologue/epilogue -sequences generated by the compiler. Only basic @code{asm} statements -can safely be included in naked functions (@pxref{Basic Asm}). While -using extended @code{asm} or a mixture of basic @code{asm} and C code -may appear to work, they cannot be depended upon to work reliably and -are not supported. - @cindex @code{aux} variable attribute, ARC @item aux This attribute applies to variables. @@ -6079,19 +6081,6 @@ calling sequence. The @code{short_call} attribute always places the offset to the function from the call site into the @samp{BL} instruction directly. -@cindex @code{naked} function attribute, ARM -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{pcs} function attribute, ARM @item pcs This attribute applies to functions. @@ -6315,19 +6304,6 @@ and @code{noblock} together has the same effect like using the @code{interrupt} attribute. Using the @code{noblock} attribute without @code{signal} has no effect. -@cindex @code{naked} function attribute, AVR -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{no_gccisr} function attribute, AVR @item no_gccisr This attribute applies to functions. @@ -6697,19 +6673,6 @@ int bpf_probe_read (void *dst, int size, const void *unsafe_ptr) __attribute__ ((kernel_helper (4))); @end smallexample -@cindex @code{naked} function attribute, BPF -@item naked -This attribute applies to functions. - -It allows the compiler to construct the requisite function -declaration, while allowing the body of the function to be assembly -code. The specified function does not have prologue/epilogue -sequences generated by the compiler. Only basic @code{asm} statements -can safely be included in naked functions (@pxref{Basic Asm}). While -using extended @code{asm} or a mixture of basic @code{asm} and C code -may appear to work, they cannot be depended upon to work reliably and -are not supported. - @cindex @code{preserve_access_index} type attribute, BPF @item preserve_access_index This attribute applies to types. @@ -6743,19 +6706,6 @@ use in an interrupt handler when either of these attributes are present. Use of these options requires the @option{-mistack} command-line option to enable support for the necessary interrupt stack instructions. They are ignored with a warning otherwise. @xref{C-SKY Options}. - -@cindex @code{naked} function attribute, C-SKY -@item naked -This attribute applies to functions. - -This attribute allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. @end table @@ -7429,26 +7379,6 @@ sequences and replaces the return instruction with a @code{sleep} instruction. This attribute is available only on fido. @end table -@node MCORE Attributes -@subsubsection MCORE Attributes - -These attributes are supported by the MCORE back end: - -@table @code -@cindex @code{naked} function attribute, MCORE -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. -@end table - @node MicroBlaze Attributes @subsubsection MicroBlaze Attributes @@ -7854,19 +7784,6 @@ match up with appropriate entries in the linker script. By default the names @code{watchdog} for vector 26, @code{nmi} for vector 30 and @code{reset} for vector 31 are recognized. -@cindex @code{naked} function attribute, MSP430 -@item naked -This attribute applies to functions. - -This attribute allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{reentrant} function attribute, MSP430 @item reentrant This attribute applies to functions. @@ -7979,19 +7896,6 @@ The system will help save caller registers into stack before entering interrupt handler. @end table -@cindex @code{naked} function attribute, NDS32 -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{reset} function attribute, NDS32 @cindex reset handler functions @item reset @@ -8273,19 +8177,6 @@ These attributes mainly are intended to support the @code{__vector}, These attributes are supported by the RISC-V back end: @table @code -@cindex @code{naked} function attribute, RISC-V -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{interrupt} function attribute, RISC-V @item interrupt This attribute applies to functions. @@ -8415,19 +8306,6 @@ Use @code{brk_interrupt} instead of @code{interrupt} for handlers intended to be used with the @code{BRK} opcode (i.e.@: those that must end with @code{RETB} instead of @code{RETI}). -@cindex @code{naked} function attribute, RL78 -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{saddr} variable attribute, RL78 @item saddr This attribute applies to variables. @@ -8484,19 +8362,6 @@ void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default"))) txd1_handler (); @end smallexample -@cindex @code{naked} function attribute, RX -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{vector} function attribute, RX @item vector This attribute applies to functions. @@ -8818,19 +8683,6 @@ this function attribute to make GCC generate the ``hot-patching'' function prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2 and newer. -@cindex @code{naked} function attribute, x86 -@item naked -This attribute applies to functions. - -It allows the compiler to construct the -requisite function declaration, while allowing the body of the -function to be assembly code. The specified function does not have -prologue/epilogue sequences generated by the compiler. Only basic -@code{asm} statements can safely be included in naked functions -(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of -basic @code{asm} and C code may appear to work, they cannot be -depended upon to work reliably and are not supported. - @cindex @code{regparm} function attribute, x86 @cindex functions that are passed arguments in registers on x86-32 @item regparm (@var{number})
