From 248e8530dd0298e9bbe099c651d5d9c4d2a0c0f9 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 18 Jul 2024 11:34:09 -0700 Subject: [PATCH] libbacktrace: use __has_attribute for fallthrough Also convert some FALLTHROUGH comments to ATTRIBUTE_FALLTHROUGH. * internal.h: Use __has_attribute to check for fallthrough attribute. * elf.c (elf_zstd_decompress): Use ATTRIBUTE_FALLTHROUGH rather than a FALLTHROUGH comment. --- libbacktrace/elf.c | 14 +++++++------- libbacktrace/internal.h | 5 +++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index e8d67feab6d..0040479143d 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -4848,25 +4848,25 @@ elf_zstd_decompress (const unsigned char *pin, size_t sin, { case 8: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 7: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 6: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 5: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 4: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 3: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 2: *pout++ = *plit++; - /* FALLTHROUGH */ + ATTRIBUTE_FALLTHROUGH; case 1: *pout++ = *plit++; break; diff --git a/libbacktrace/internal.h b/libbacktrace/internal.h index a119cda692f..fe2abe50b0f 100644 --- a/libbacktrace/internal.h +++ b/libbacktrace/internal.h @@ -56,6 +56,11 @@ POSSIBILITY OF SUCH DAMAGE. */ # endif #endif +#ifdef __has_attribute +# if __has_attribute(fallthrough) +# define ATTRIBUTE_FALLTHROUGH __attribute__ ((fallthrough)) +# endif +#endif #ifndef ATTRIBUTE_FALLTHROUGH # if (GCC_VERSION >= 7000) # define ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))