]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
doc: Consolidate documentation for naked attribute [PR88472]
authorSandra Loosemore <sloosemore@baylibre.com>
Thu, 19 Feb 2026 18:26:32 +0000 (18:26 +0000)
committerSandra Loosemore <sloosemore@baylibre.com>
Tue, 24 Feb 2026 23:25:32 +0000 (23:25 +0000)
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.

gcc/doc/extend.texi

index d7c2dc8d703d8af152471e9b5d5563699dd4464d..4a96fd0a529f51df466965c66424ff001b99b96c 100644 (file)
@@ -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})