The recent gnulib updates require an implementation of abort(), but the current macro provided by changeset: cd37d3d3916c gnulib: 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: db7337a3d353 * grub-core/gnulib/regcomp.c (regerror): ... Which implements abort() as an inline call to grub_abort(), but since that was made static by changeset: a8f15bceeafe * 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>
68 lines
1.4 KiB
C
68 lines
1.4 KiB
C
/*
|
|
* GRUB -- GRand Unified Bootloader
|
|
* Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
|
*
|
|
* GRUB is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* GRUB is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef GRUB_POSIX_STDLIB_H
|
|
#define GRUB_POSIX_STDLIB_H 1
|
|
|
|
#include <grub/mm.h>
|
|
#include <grub/misc.h>
|
|
#include <grub/safemath.h>
|
|
|
|
static inline void
|
|
free (void *ptr)
|
|
{
|
|
grub_free (ptr);
|
|
}
|
|
|
|
static inline void *
|
|
malloc (grub_size_t size)
|
|
{
|
|
return grub_malloc (size);
|
|
}
|
|
|
|
static inline void *
|
|
calloc (grub_size_t size, grub_size_t nelem)
|
|
{
|
|
grub_size_t sz;
|
|
|
|
if (grub_mul (size, nelem, &sz))
|
|
return NULL;
|
|
|
|
return grub_zalloc (sz);
|
|
}
|
|
|
|
static inline void *
|
|
realloc (void *ptr, grub_size_t size)
|
|
{
|
|
return grub_realloc (ptr, size);
|
|
}
|
|
|
|
static inline int
|
|
abs (int c)
|
|
{
|
|
return (c >= 0) ? c : -c;
|
|
}
|
|
|
|
static inline void __attribute__ ((noreturn))
|
|
abort (void)
|
|
{
|
|
grub_abort ();
|
|
}
|
|
|
|
#endif
|