According to the tcc (tiny C compiler) Changelog, tcc supports
__attribute__ since 0.9.3.  Looking at history of tcc at
<https://repo.or.cz/tinycc.git>, __attribute__ support was added
in commit 14658993425878be300aae2e879560698e0c6c4c on 2002-01-03,
which also looks like the release of 0.9.3.  While I'm unable to
find release tags for tcc before 0.9.18 (2003-04-14), the next
release (0.9.28) will include __attribute__((cleanup(func)) which
I rely on.

Signed-off-by: Eric Wong <[email protected]>
---
 This change also applies to glibc (where I encounted the problem),
 but glibc is a bigger source tree and I'm HW constrained, so I'd
 appreciate this change also being applied to glibc.
 Thanks.  I have copyright assignments on file with the FSF.

 ChangeLog   | 5 +++++
 lib/cdefs.h | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index b7f0310e00..35500be2ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2025-10-30  Eric Wong  <[email protected]>
+
+       cdefs: allow __attribute__ on tcc
+       * lib/cdefs.h: Do not ignore __attribute__ on tcc.
+
 2025-10-30  Bruno Haible  <[email protected]>
 
        fprintftime: Avoid size_t overflow for very large outputs.
diff --git a/lib/cdefs.h b/lib/cdefs.h
index 2682c092f0..3bfb428511 100644
--- a/lib/cdefs.h
+++ b/lib/cdefs.h
@@ -280,7 +280,7 @@
 /* GCC and clang have various useful declarations that can be made with
    the '__attribute__' syntax.  All of the ways we use this do fine if
    they are omitted for compilers that don't understand it.  */
-#if !(defined __GNUC__ || defined __clang__)
+#if !(defined __GNUC__ || defined __clang__ || defined __TINYC__)
 # define __attribute__(xyz)    /* Ignore */
 #endif
 

Reply via email to