diff --git a/ChangeLog b/ChangeLog index 181f46632..37a4cec03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-11-22 Vladimir Serbinenko + + clang emits calls to abort () under some unknown conditions. + Export abort () when compiling with clang. + 2013-11-22 Vladimir Serbinenko * docs/grub-dev.texi: Document stack and heap sizes. diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c index f61ff00c1..695777ccc 100644 --- a/grub-core/kern/misc.c +++ b/grub-core/kern/misc.c @@ -1220,6 +1220,15 @@ grub_abort (void) grub_exit (); } +#if defined (__clang__) && !defined (GRUB_UTIL) +/* clang emits references to abort(). */ +void __attribute__ ((noreturn)) +abort (void) +{ + grub_abort (); +} +#endif + void grub_fatal (const char *fmt, ...) { diff --git a/include/grub/misc.h b/include/grub/misc.h index 3d7147797..d80da3349 100644 --- a/include/grub/misc.h +++ b/include/grub/misc.h @@ -421,6 +421,10 @@ void EXPORT_FUNC(grub_reboot) (void) __attribute__ ((noreturn)); void grub_reboot (void) __attribute__ ((noreturn)); #endif +#if defined (__clang__) && !defined (GRUB_UTIL) +void __attribute__ ((noreturn)) EXPORT_FUNC (abort) (void); +#endif + #ifdef GRUB_MACHINE_PCBIOS /* Halt the system, using APM if possible. If NO_APM is true, don't * use APM even if it is available. */