From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v4 1/5] xen/compiler: Replace opencoded __attribute__((noreturn)) Date: Tue, 25 Feb 2014 12:23:27 +0000 Message-ID: <1393331011-22240-2-git-send-email-andrew.cooper3@citrix.com> References: <1393331011-22240-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1393331011-22240-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Xen-devel Cc: Andrew Cooper , Stefano Stabellini , Keir Fraser , Jan Beulich List-Id: xen-devel@lists.xenproject.org Make a formal define for noreturn in compiler.h, and fix up opencoded uses of __attribute__((noreturn)). This includes removing redundant uses with function definitions which have a public declaration. Signed-off-by: Andrew Cooper CC: Keir Fraser CC: Jan Beulich Acked-by: Ian Campbell CC: Stefano Stabellini Acked-by: Tim Deegan --- Changes in v4: * Standardise on noreturn before the function name --- xen/arch/arm/early_printk.c | 2 +- xen/arch/x86/efi/boot.c | 4 ++-- xen/arch/x86/shutdown.c | 2 +- xen/include/asm-arm/early_printk.h | 4 ++-- xen/include/xen/compiler.h | 2 ++ xen/include/xen/lib.h | 2 +- xen/include/xen/sched.h | 4 ++-- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/xen/arch/arm/early_printk.c b/xen/arch/arm/early_printk.c index 41938bb..2870a30 100644 --- a/xen/arch/arm/early_printk.c +++ b/xen/arch/arm/early_printk.c @@ -52,7 +52,7 @@ void __init early_printk(const char *fmt, ...) va_end(args); } -void __attribute__((noreturn)) __init +void __init early_panic(const char *fmt, ...) { va_list args; diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c index 0dd935c..a26e0af 100644 --- a/xen/arch/x86/efi/boot.c +++ b/xen/arch/x86/efi/boot.c @@ -183,7 +183,7 @@ static bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2) !memcmp(guid1->Data4, guid2->Data4, sizeof(guid1->Data4)); } -static void __init __attribute__((__noreturn__)) blexit(const CHAR16 *str) +static void __init noreturn blexit(const CHAR16 *str) { if ( str ) PrintStr((CHAR16 *)str); @@ -762,7 +762,7 @@ static void __init relocate_trampoline(unsigned long phys) *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4; } -void EFIAPI __init __attribute__((__noreturn__)) +void EFIAPI __init noreturn efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { static EFI_GUID __initdata loaded_image_guid = LOADED_IMAGE_PROTOCOL; diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index 6eba271..6143c40 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -85,7 +85,7 @@ static inline void kb_wait(void) break; } -static void __attribute__((noreturn)) __machine_halt(void *unused) +static void noreturn __machine_halt(void *unused) { local_irq_disable(); for ( ; ; ) diff --git a/xen/include/asm-arm/early_printk.h b/xen/include/asm-arm/early_printk.h index 707bbf7..3cb8dab 100644 --- a/xen/include/asm-arm/early_printk.h +++ b/xen/include/asm-arm/early_printk.h @@ -26,7 +26,7 @@ void early_printk(const char *fmt, ...) __attribute__((format (printf, 1, 2))); -void early_panic(const char *fmt, ...) __attribute__((noreturn)) +void early_panic(const char *fmt, ...) noreturn __attribute__((format (printf, 1, 2))); #else @@ -35,7 +35,7 @@ static inline __attribute__((format (printf, 1, 2))) void early_printk(const char *fmt, ...) {} -static inline void __attribute__((noreturn)) +static inline void noreturn __attribute__((format (printf, 1, 2))) early_panic(const char *fmt, ...) {while(1);} diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h index 7d6805c..c80398d 100644 --- a/xen/include/xen/compiler.h +++ b/xen/include/xen/compiler.h @@ -14,6 +14,8 @@ #define always_inline __inline__ __attribute__ ((always_inline)) #define noinline __attribute__((noinline)) +#define noreturn __attribute__((noreturn)) + #if (!defined(__clang__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 5)) #define unreachable() do {} while (1) #else diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index 5b258fd..0d1a5d3 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -8,7 +8,7 @@ #include #include -void __bug(char *file, int line) __attribute__((noreturn)); +void noreturn __bug(char *file, int line); void __warn(char *file, int line); #define BUG_ON(p) do { if (unlikely(p)) BUG(); } while (0) diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index fb8bd36..00f0eba 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -580,7 +580,7 @@ void __domain_crash(struct domain *d); * Mark current domain as crashed and synchronously deschedule from the local * processor. This function never returns. */ -void __domain_crash_synchronous(void) __attribute__((noreturn)); +void noreturn __domain_crash_synchronous(void); #define domain_crash_synchronous() do { \ printk("domain_crash_sync called from %s:%d\n", __FILE__, __LINE__); \ __domain_crash_synchronous(); \ @@ -591,7 +591,7 @@ void __domain_crash_synchronous(void) __attribute__((noreturn)); * the crash occured. If addr is 0, look up address from last extable * redirection. */ -void asm_domain_crash_synchronous(unsigned long addr) __attribute__((noreturn)); +void noreturn asm_domain_crash_synchronous(unsigned long addr); #define set_current_state(_s) do { current->state = (_s); } while (0) void scheduler_init(void); -- 1.7.10.4