Skip to content
Snippets Groups Projects
Verified Commit 752c72a4 authored by Anna Wilcox's avatar Anna Wilcox :fox:
Browse files

system/musl: more POSIX

parent 1b9fbd9e
No related branches found
No related tags found
No related merge requests found
From 6f592a7812de3190f567174bbb4baa40790831dd Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Wed, 11 Apr 2018 23:22:33 -0500
Subject: [PATCH 1/2] sysconf: Add _SC_XOPEN_UUCP
Subject: [PATCH 1/7] sysconf: Add _SC_XOPEN_UUCP
We definitely don't /support/ UUCP, so return -1 for it.
But this value is required to be present in <unistd.h>.
......
From 94046871d24d5408adaf61941a4751c77abe06b6 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Wed, 11 Apr 2018 23:23:31 -0500
Subject: [PATCH 2/2] confstr: Add _CS_POSIX_V7_THREADS_*
Subject: [PATCH 2/7] confstr: Add _CS_POSIX_V7_THREADS_*
This is used to determine what CFLAGS/LDFLAGS are needed to enable
compilation with threads on musl. We don't have any special ones, so
......
From da7bab19d59a0ea50e23371462f688329cd6c1a7 Mon Sep 17 00:00:00 2001
From 1d486ac55014c39f225f12bac80202197c2bf9c6 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Wed, 11 Apr 2018 23:43:19 -0500
Subject: [PATCH 3/3] pathconf: add _PC_TIMESTAMP_RESOLUTION
Subject: [PATCH 3/7] pathconf: add _PC_TIMESTAMP_RESOLUTION
Right now, this is a worst-case assumption; some kernels may actually
have a value of 100000 here (100 Hz timers). This is considered the
......@@ -9,8 +9,9 @@ easiest implementation.
This is required to be present in <unistd.h>.
---
include/unistd.h | 1 +
1 file changed, 1 insertion(+)
include/unistd.h | 1 +
src/conf/fpathconf.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/unistd.h b/include/unistd.h
index 68686dfd..1bdd3292 100644
......@@ -24,6 +25,20 @@ index 68686dfd..1bdd3292 100644
#define _SC_ARG_MAX 0
#define _SC_CHILD_MAX 1
diff --git a/src/conf/fpathconf.c b/src/conf/fpathconf.c
index 8eb037e6..1eefac18 100644
--- a/src/conf/fpathconf.c
+++ b/src/conf/fpathconf.c
@@ -25,7 +25,8 @@ long fpathconf(int fd, int name)
[_PC_REC_XFER_ALIGN] = 4096,
[_PC_ALLOC_SIZE_MIN] = 4096,
[_PC_SYMLINK_MAX] = SYMLINK_MAX,
- [_PC_2_SYMLINKS] = 1
+ [_PC_2_SYMLINKS] = 1,
+ [_PC_TIMESTAMP_RESOLUTION] = 1000000,
};
if (name >= sizeof(values)/sizeof(values[0])) {
errno = EINVAL;
--
2.15.0
From 3e9758004c131236d53e5fdca4bbeea7bf7efc28 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Tue, 17 Apr 2018 20:52:39 -0500
Subject: [PATCH 4/7] stdlib: Move mkostemp to _GNU_SOURCE/_BSD_SOURCE
This is not a POSIX function, it should not be visible there.
---
include/stdlib.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/stdlib.h b/include/stdlib.h
index 42ca8336..d1f99fe1 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -100,7 +100,6 @@ int posix_memalign (void **, size_t, size_t);
int setenv (const char *, const char *, int);
int unsetenv (const char *);
int mkstemp (char *);
-int mkostemp (char *, int);
char *mkdtemp (char *);
int getsubopt (char **, char *const *, char **);
int rand_r (unsigned *);
@@ -138,6 +137,7 @@ void lcong48 (unsigned short [7]);
#include <alloca.h>
char *mktemp (char *);
int mkstemps (char *, int);
+int mkostemp (char *, int);
int mkostemps (char *, int, int);
void *valloc (size_t);
void *memalign(size_t, size_t);
--
2.15.0
From 36e0a4286937ccb25bc78392a679f496029765b0 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Tue, 17 Apr 2018 20:54:59 -0500
Subject: [PATCH 5/7] stdlib: Ensure C11 fns are only visible in C11
aligned_alloc, at_quick_exit, and quick_exit are new in C11 and C++11.
Only make these symbols visible in those versions, to avoid polluting
the namespace of C99 and POSIX 2008 sources.
---
include/stdlib.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/stdlib.h b/include/stdlib.h
index d1f99fe1..4bbaded0 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -39,14 +39,18 @@ void *malloc (size_t);
void *calloc (size_t, size_t);
void *realloc (void *, size_t);
void free (void *);
+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
void *aligned_alloc(size_t, size_t);
+#endif
_Noreturn void abort (void);
int atexit (void (*) (void));
_Noreturn void exit (int);
_Noreturn void _Exit (int);
+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
int at_quick_exit (void (*) (void));
_Noreturn void quick_exit (int);
+#endif
char *getenv (const char *);
--
2.15.0
From 0979c50b831c67e0b4f4a560435b867b35cdac67 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Tue, 17 Apr 2018 21:03:15 -0500
Subject: [PATCH 6/7] time: C11 visibility fixes
The timespec_get function, and TIME_* macros, are only in C11.
Since musl is compiled with -std=c99, TIME_UTC is unavailable in the
timespec_get implementation, so we use the raw value 1.
---
include/time.h | 7 +++++--
src/time/timespec_get.c | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/time.h b/include/time.h
index 672b3fc3..c5946dd0 100644
--- a/include/time.h
+++ b/include/time.h
@@ -58,11 +58,14 @@ struct tm *gmtime (const time_t *);
struct tm *localtime (const time_t *);
char *asctime (const struct tm *);
char *ctime (const time_t *);
-int timespec_get(struct timespec *, int);
-#define CLOCKS_PER_SEC 1000000L
+#if __STDC_VERSION__ >= 201112L
+int timespec_get(struct timespec *, int);
#define TIME_UTC 1
+#endif
+
+#define CLOCKS_PER_SEC 1000000L
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
diff --git a/src/time/timespec_get.c b/src/time/timespec_get.c
index 03c5a77b..c423b825 100644
--- a/src/time/timespec_get.c
+++ b/src/time/timespec_get.c
@@ -6,7 +6,7 @@ int __clock_gettime(clockid_t, struct timespec *);
* are considered erroneous. */
int timespec_get(struct timespec * ts, int base)
{
- if (base != TIME_UTC) return 0;
+ if (base != 1) return 0;
int ret = __clock_gettime(CLOCK_REALTIME, ts);
return ret < 0 ? 0 : base;
}
--
2.15.0
From 1316aae0c862240ff58b1cf38c92cd8cefd02a91 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Tue, 17 Apr 2018 22:08:48 -0500
Subject: [PATCH 7/7] abort: raise SIGABRT again if signal is ignored
POSIX requires that abort() gives the SIGABRT status to waitpid(3) and
friends. If a signal handler is installed, and erroneously returns,
then the status given to waitpid(3) is SIGSEGV instead of SIGABRT.
This change gives another opportunity for the proper SIGABRT status to
be given to any process monitoring this one's process, before we fall
back to a_crash(), which should be sufficient.
---
src/exit/abort.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/exit/abort.c b/src/exit/abort.c
index ecc0f735..5e5a87c3 100644
--- a/src/exit/abort.c
+++ b/src/exit/abort.c
@@ -1,13 +1,31 @@
#include <stdlib.h>
#include <signal.h>
+#include <string.h>
#include "syscall.h"
#include "pthread_impl.h"
#include "atomic.h"
_Noreturn void abort(void)
{
+ struct sigaction abrtaction;
+ sigset_t abrtset;
+
raise(SIGABRT);
__block_all_sigs(0);
+
+ /* Unblock just SIGABRT, and set default handler */
+ sigemptyset(&abrtset);
+ sigaddset(&abrtset, SIGABRT);
+ sigprocmask(SIG_UNBLOCK, &abrtset, 0);
+
+ memset(&abrtaction, 0, sizeof(struct sigaction));
+ abrtaction.sa_handler = SIG_DFL;
+
+ sigaction(SIGABRT, &abrtaction, NULL);
+
+ raise(SIGABRT);
+
+ /* Ok, give up. */
a_crash();
raise(SIGKILL);
_Exit(127);
--
2.15.0
......@@ -2,7 +2,7 @@
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=musl
pkgver=1.1.19
pkgrel=3
pkgrel=4
pkgdesc="the musl c library (libc) implementation"
url="http://www.musl-libc.org/"
arch="all"
......@@ -21,6 +21,10 @@ source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz
0001-sysconf-Add-_SC_XOPEN_UUCP.patch
0002-confstr-Add-_CS_POSIX_V7_THREADS_.patch
0003-pathconf-add-_PC_TIMESTAMP_RESOLUTION.patch
0004-stdlib-Move-mkostemp-to-_GNU_SOURCE-_BSD_SOURCE.patch
0005-stdlib-Ensure-C11-fns-are-only-visible-in-C11.patch
0006-time-C11-visibility-fixes.patch
0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch
2000-pthread-internals-increase-DEFAULT_GUARD_SIZE-to-2-p.patch
complex-math.patch
......@@ -146,9 +150,13 @@ compat() {
}
sha512sums="abee52d53af4b3c14c9088866c911a24d2b6ef67dc494f38a7a09dfe77250026f77528c24c52469c89cffa8ced2f0fa95badbdcf8d4460c90faba47e3927bcc5 musl-1.1.19.tar.gz
f274b1c3fff40494e44e68d5385d6f117bac43a10272e1415ed11d65f937e8c34639128860cff451357614a417bb9535a1c676be65a50dd33225c34f249dd4ff 0001-sysconf-Add-_SC_XOPEN_UUCP.patch
e6d7ba709a53cfefb9b5fbb4ede3bde6926504e24d5111691e4a63d15085c0e6e896a3d2df84026fad9520e08b2d98a3be901f29ee47df0bd8c58f6a34ebc49f 0002-confstr-Add-_CS_POSIX_V7_THREADS_.patch
7981521fd3aed5c6b4d6798717945ebe30de83ef327c8c6da135e6e7793f4be533833b1ff87cb25c8646c019da127e73da9adccdc7cf1f91a1ba1b60387a9e91 0003-pathconf-add-_PC_TIMESTAMP_RESOLUTION.patch
801e0d8adf1ca3bec1c35ce4fe319be7ce7776967630ec27fea39c896dd0e26f047cae34d1b2702e730815789cdc6bd4df526e9078bf68294bcef35a94c498b1 0001-sysconf-Add-_SC_XOPEN_UUCP.patch
5b648ebfdff20f56c6b82b19361a0045a59be8dfef08f8c37f44e0f780ced5e7f3c4fcee12bb25b0cee62edf8c939bc60530550b4a8fcc2c3b1f40c1744f6307 0002-confstr-Add-_CS_POSIX_V7_THREADS_.patch
4ddfdc5ca9d2f86b0ac278e70155c5fd64ba5b012423de89f8c7e07be42ad02a0a965e915c6ce4e139345c981f0103bdd0145f7d732508aba7e8bddd42541c66 0003-pathconf-add-_PC_TIMESTAMP_RESOLUTION.patch
fb7ea456de9cd7cf36be8bc9fdd4e142c999758b1cf4ee93720724985f256ae80f4f426ced3ac5f732d1d9f4048993a017469b6755807da0231f08d5e0e8a467 0004-stdlib-Move-mkostemp-to-_GNU_SOURCE-_BSD_SOURCE.patch
e99dab95932c0c03d67da0248d63b71581050efed40c5e58b28e226925f6f436b6e7ddfbf03dc83ef4cabead2c9a6bd55a30e09c7ee250ef3482ac5206eb309b 0005-stdlib-Ensure-C11-fns-are-only-visible-in-C11.patch
d0d0817a4e1d57b74cb442a3bf8d8efe39a23a387275b75cba1b2fa354d8a7dc2fd843b5b67584aac86ec97ea394d602ec013c6e8a65da309915b0a80b4a8f98 0006-time-C11-visibility-fixes.patch
6f5f9b5fb5eba638b0d98c68c280dbcc2bdae58d94d9f6966f5de55f6dd5d7f3cdddd9ca758e8861e30841b80ba616a945fb2b885a31481707d578293b187ff0 0007-abort-raise-SIGABRT-again-if-signal-is-ignored.patch
2c8e1dde1834238097b2ee8a7bfb53471a0d9cff4a5e38b55f048b567deff1cdd47c170d0578a67b1a039f95a6c5fbb8cff369c75b6a3e4d7ed171e8e86ebb8c 2000-pthread-internals-increase-DEFAULT_GUARD_SIZE-to-2-p.patch
8909dc260968770ace8f3ffdc04c6c7d20933ff115b4fa3e512fb7460860a8216c73ca7a7ad54f59cb5988ef011f02bf18aa13cc2287cc64ffdb8db84ef69d47 complex-math.patch
6a7ff16d95b5d1be77e0a0fbb245491817db192176496a57b22ab037637d97a185ea0b0d19da687da66c2a2f5578e4343d230f399d49fe377d8f008410974238 handle-aux-at_base.patch
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment