From fdbfd242859c0014d0183d5d9829ec522b1e84fb Mon Sep 17 00:00:00 2001 From: Andrii Riabchenko Date: Tue, 9 Jan 2024 22:09:45 +0200 Subject: [PATCH] new file: projects/gnu.org/libsigsegv/package.yml new file: projects/gnu.org/libsigsegv/test.c --- projects/gnu.org/libsigsegv/package.yml | 26 ++++++++++++++++++ projects/gnu.org/libsigsegv/test.c | 35 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 projects/gnu.org/libsigsegv/package.yml create mode 100644 projects/gnu.org/libsigsegv/test.c diff --git a/projects/gnu.org/libsigsegv/package.yml b/projects/gnu.org/libsigsegv/package.yml new file mode 100644 index 00000000..0c2f4738 --- /dev/null +++ b/projects/gnu.org/libsigsegv/package.yml @@ -0,0 +1,26 @@ +distributable: + url: https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-{{version.marketing}}.tar.gz + strip-components: 1 +versions: + url: https://ftp.gnu.org/gnu/libsigsegv/ + match: /libsigsegv-(\d+\.\d+(\.\d+)?).tar.gz/ + strip: + - /^libsigsegv-/ + - /\.tar\.gz$/ +build: + script: + - ./configure $ARGS + - make --jobs {{hw.concurrency}} + - make --jobs {{hw.concurrency}} check + - make --jobs {{hw.concurrency}} install + env: + ARGS: + - --disable-debug + - --disable-dependency-tracking + - --prefix={{prefix}} + - --libdir={{prefix}}/lib + - --enable-shared + - --enable-relocatable +test: + - cc test.c -lsigsegv -o test + - ./test | grep 'Test passed' diff --git a/projects/gnu.org/libsigsegv/test.c b/projects/gnu.org/libsigsegv/test.c new file mode 100644 index 00000000..cb0c5a7c --- /dev/null +++ b/projects/gnu.org/libsigsegv/test.c @@ -0,0 +1,35 @@ +#include "sigsegv.h" + +#include +#include +#include +#include +#include + +const char *null_pointer = NULL; +static int +handler(void *fault_address, int serious) +{ + abort(); +} + +int main() +{ + if (open(null_pointer, O_RDONLY) != -1 || errno != EFAULT) + { + fprintf(stderr, "EFAULT not detected alone"); + exit(1); + } + + if (sigsegv_install_handler(&handler) < 0) + exit(2); + + if (open(null_pointer, O_RDONLY) != -1 || errno != EFAULT) + { + fprintf(stderr, "EFAULT not detected with handler"); + exit(1); + } + + printf("Test passed"); + return 0; +} \ No newline at end of file