From 145e51364cab7851f706b20540fa0d8661c5650c Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 20 Oct 2020 20:10:59 +0200 Subject: [PATCH] Patch libc for tox --- packages/default.nix | 3 ++ packages/genodelabs/libc-raise.patch | 43 ++++++++++++++++++++++++++++ tests/tox-bootstrapd.nix | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/genodelabs/libc-raise.patch diff --git a/packages/default.nix b/packages/default.nix index e5bcf34..bc1c9f6 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -108,6 +108,9 @@ in depotPkgs // { nic_bus = callPackage ./nic_bus { }; + libc-raise = depotPkgs.libc.overrideAttrs + (attrs: { patches = attrs.patches ++ [ ./genodelabs/libc-raise.patch ]; }); + NOVA = callPackage ./NOVA { }; rtc-dummy = callPackage ./rtc-dummy { }; diff --git a/packages/genodelabs/libc-raise.patch b/packages/genodelabs/libc-raise.patch new file mode 100644 index 0000000..85ca564 --- /dev/null +++ b/packages/genodelabs/libc-raise.patch @@ -0,0 +1,43 @@ +commit d927e6fa1e990685dd353bd3f526924fdcc179b8 +Author: Emery Hemingway +Date: Tue Oct 20 16:50:49 2020 +0200 + + libc: exit for raise(SIGQUIT/SIGABRT/SIGKILL) + +diff --git a/repos/libports/src/lib/libc/dummies.cc b/repos/libports/src/lib/libc/dummies.cc +index 91a5ed34a8..b01d95f717 100644 +--- a/repos/libports/src/lib/libc/dummies.cc ++++ b/repos/libports/src/lib/libc/dummies.cc +@@ -123,7 +123,6 @@ DUMMY(void *, 0, ___mtctxres, (void)) + DUMMY(void *, 0, __nsdefaultsrc, (void)) + DUMMY(int , -1, _nsdispatch, (void)) + DUMMY(long , -1, pathconf, (const char *, int)) +-DUMMY(int , -1, raise, (int)) + DUMMY(int , -1, rmdir, (const char *)) + DUMMY(void *, 0, sbrk, (intptr_t)) + DUMMY(int , -1, sched_setparam, (pid_t, const sched_param *)) +diff --git a/repos/libports/src/lib/libc/signal.cc b/repos/libports/src/lib/libc/signal.cc +index dc9af2d443..a08854a8c0 100644 +--- a/repos/libports/src/lib/libc/signal.cc ++++ b/repos/libports/src/lib/libc/signal.cc +@@ -199,3 +199,20 @@ extern "C" int waitid(idtype_t idtype, id_t id, siginfo_t *info, int flags) + ret = 0; + return (ret); + } ++ ++ ++extern "C" int raise(int sig) ++{ ++ char const *signame = sys_signame[sig]; ++ ++ switch(sig) { ++ case SIGQUIT: ++ case SIGABRT: ++ case SIGKILL: ++ error(__func__, "(", signame, ")"); ++ exit(-1); ++ default: ++ warning(__func__, "(", signame, ") not implemented"); ++ return Libc::Errno(EINVAL); ++ }; ++} diff --git a/tests/tox-bootstrapd.nix b/tests/tox-bootstrapd.nix index 086f6fa..88effeb 100644 --- a/tests/tox-bootstrapd.nix +++ b/tests/tox-bootstrapd.nix @@ -8,7 +8,7 @@ inputs = (with pkgs; [ acpi_drv ipxe_nic_drv - libc + libc-raise platform_drv posix report_rom