From 2b0268cf0d6a2acbc191ad22d86419d5828e6a22 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Fri, 26 Jan 2018 17:13:04 +0000 Subject: [PATCH] Implement abort() as a call to panic. Sponsored by: Netflix --- stand/libsa/Makefile | 2 +- stand/libsa/abort.c | 35 +++++++++++++++++++++++++++++++++++ stand/libsa/stand.h | 3 +++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 stand/libsa/abort.c diff --git a/stand/libsa/Makefile b/stand/libsa/Makefile index 3b54e67a19cf..fbe27d40ee39 100644 --- a/stand/libsa/Makefile +++ b/stand/libsa/Makefile @@ -19,7 +19,7 @@ LIB?= sa NO_PIC= # standalone components and stuff we have modified locally -SRCS+= gzguts.h zutil.h __main.c assert.c bcd.c environment.c getopt.c gets.c \ +SRCS+= gzguts.h zutil.h __main.c abort.c assert.c bcd.c environment.c getopt.c gets.c \ globals.c pager.c panic.c printf.c strdup.c strerror.c strtol.c strtoul.c \ random.c sbrk.c twiddle.c zalloc.c zalloc_malloc.c diff --git a/stand/libsa/abort.c b/stand/libsa/abort.c new file mode 100644 index 000000000000..4b3a2c7e00c2 --- /dev/null +++ b/stand/libsa/abort.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018 Netflix. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +void +abort(void) +{ + panic("Bootloader aborted by abort"); +} diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index 7c93f83af56b..d1b84625cc56 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -346,6 +346,9 @@ extern int unsetenv(const char *name); extern ev_sethook_t env_noset; /* refuse set operation */ extern ev_unsethook_t env_nounset; /* refuse unset operation */ +/* stdlib.h routines */ +extern void abort(void); + /* BCD conversions (undocumented) */ extern u_char const bcd2bin_data[]; extern u_char const bin2bcd_data[];