From 0370bcf40ce3a07e6e2d33b8bcebf28a0ac98807 Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Wed, 5 Sep 2018 09:37:11 -0600 Subject: complier.h: add __noreturn and use it in code base Add a __noreturn macro that wraps __attribute__((noreturn)) and replace current users with the macro. Change-Id: Iddd0728cf79678c3d1c1f7e7946c27375a644a7d Signed-off-by: Aaron Durbin Reviewed-on: https://review.coreboot.org/28505 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh Reviewed-by: Paul Menzel --- src/lib/ubsan.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src/lib/ubsan.c') diff --git a/src/lib/ubsan.c b/src/lib/ubsan.c index ead0e18026..128340092f 100644 --- a/src/lib/ubsan.c +++ b/src/lib/ubsan.c @@ -43,8 +43,7 @@ typedef uintptr_t ubsan_value_handle_t; */ #pragma GCC diagnostic ignored "-Wmissing-prototypes" -__attribute__((noreturn)) -static void ubsan_abort(const struct ubsan_source_location *location, +static void __noreturn ubsan_abort(const struct ubsan_source_location *location, const char *violation) { static const struct ubsan_source_location unknown_location = { "", @@ -61,8 +60,8 @@ static void ubsan_abort(const struct ubsan_source_location *location, } #define ABORT_VARIANT(name, params, call) \ - __attribute__((noreturn)) void __ubsan_handle_##name##_abort params; \ - __attribute__((noreturn)) void __ubsan_handle_##name##_abort params { \ + __noreturn void __ubsan_handle_##name##_abort params; \ + __noreturn void __ubsan_handle_##name##_abort params { \ __ubsan_handle_##name call; \ __builtin_unreachable(); \ } @@ -212,16 +211,14 @@ struct ubsan_unreachable_data { struct ubsan_source_location location; }; -__attribute__((noreturn)) -void __ubsan_handle_builtin_unreachable(void *data_raw) +void __noreturn __ubsan_handle_builtin_unreachable(void *data_raw) { struct ubsan_unreachable_data *data = (struct ubsan_unreachable_data *)data_raw; ubsan_abort(&data->location, "reached unreachable"); } -__attribute__((noreturn)) -void __ubsan_handle_missing_return(void *data_raw) +void __noreturn __ubsan_handle_missing_return(void *data_raw) { const struct ubsan_unreachable_data *data = (struct ubsan_unreachable_data *)data_raw; -- cgit v1.2.3