mirror of
http://cgit.git.savannah.gnu.org/git/grub.git
synced 2026-04-28 06:33:17 +00:00
gnulib: Provide abort() implementation for gnulib
The recent gnulib updates require an implementation of abort(), but the current macro provided by changeset:cd37d3d391gnulib: Drop no-abort.patch to config.h.in does not work with the clang compiler since it doesn't provide a __builtin_trap() implementation, so this element of the changeset needs to be reverted, and replaced. After some discussion with Vladimir 'phcoder' Serbinenko and Daniel Kiper it was suggested to bring back in the change from the changeset:db7337a3d3* grub-core/gnulib/regcomp.c (regerror): ... Which implements abort() as an inline call to grub_abort(), but since that was made static by changeset:a8f15bceea* grub-core/kern/misc.c (grub_abort): Make static it is also necessary to revert the specific part that makes it a static function too. Another implementation of abort() was found in grub-core/kern/compiler-rt.c which needs to also be removed to be consistent. Signed-off-by: Darren Kenny <darren.kenny@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
committed by
Daniel Kiper
parent
c76a07e15f
commit
8505f73003
10
config.h.in
10
config.h.in
@@ -137,16 +137,6 @@ typedef __UINT_FAST32_TYPE__ uint_fast32_t;
|
||||
void * \
|
||||
reallocarray (void *ptr, unsigned int nmemb, unsigned int size);
|
||||
# define _GL_INLINE_HEADER_END _Pragma ("GCC diagnostic pop")
|
||||
|
||||
/*
|
||||
* We don't have an abort() for gnulib to call in regexp. Because gnulib is
|
||||
* built as a separate object that is then linked with, it doesn't have any
|
||||
* of our headers or functions around to use - so we unfortunately can't
|
||||
* print anything. Builds of emu include the system's stdlib, which includes
|
||||
* a prototype for abort(), so leave this as a macro that doesn't take
|
||||
* arguments.
|
||||
*/
|
||||
# define abort __builtin_trap
|
||||
# endif /* !_GL_INLINE_HEADER_BEGIN */
|
||||
|
||||
/* gnulib doesn't build cleanly with older compilers. */
|
||||
|
||||
@@ -194,16 +194,6 @@ __ctzsi2 (grub_uint32_t x)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if defined (__clang__) && !defined(GRUB_EMBED_DECOMPRESSOR)
|
||||
/* clang emits references to abort(). */
|
||||
void __attribute__ ((noreturn))
|
||||
abort (void)
|
||||
{
|
||||
grub_fatal ("compiler abort");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined (__MINGW32__) || defined (__CYGWIN__))
|
||||
void __register_frame_info (void)
|
||||
{
|
||||
|
||||
@@ -1249,7 +1249,7 @@ grub_printf_fmt_check (const char *fmt, const char *fmt_expected)
|
||||
|
||||
|
||||
/* Abort GRUB. This function does not return. */
|
||||
static void __attribute__ ((noreturn))
|
||||
void __attribute__ ((noreturn))
|
||||
grub_abort (void)
|
||||
{
|
||||
grub_printf ("\nAborted.");
|
||||
|
||||
@@ -58,4 +58,10 @@ abs (int c)
|
||||
return (c >= 0) ? c : -c;
|
||||
}
|
||||
|
||||
static inline void __attribute__ ((noreturn))
|
||||
abort (void)
|
||||
{
|
||||
grub_abort ();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -385,6 +385,7 @@ char *EXPORT_FUNC(grub_xasprintf) (const char *fmt, ...)
|
||||
__attribute__ ((format (GNU_PRINTF, 1, 2))) WARN_UNUSED_RESULT;
|
||||
char *EXPORT_FUNC(grub_xvasprintf) (const char *fmt, va_list args) WARN_UNUSED_RESULT;
|
||||
void EXPORT_FUNC(grub_exit) (void) __attribute__ ((noreturn));
|
||||
void EXPORT_FUNC(grub_abort) (void) __attribute__ ((noreturn));
|
||||
grub_uint64_t EXPORT_FUNC(grub_divmod64) (grub_uint64_t n,
|
||||
grub_uint64_t d,
|
||||
grub_uint64_t *r);
|
||||
@@ -454,10 +455,6 @@ 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. */
|
||||
|
||||
Reference in New Issue
Block a user