mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 14:58:30 +00:00
Make improvements
- Introduce portable sched_getcpu() api - Support GCC's __target_clones__ feature - Make fma() go faster on x86 in default mode - Remove some asan checks from core libraries - WinMain() now ensures $HOME and $USER are defined
This commit is contained in:
parent
d5225a693b
commit
2ab9e9f7fd
192 changed files with 2809 additions and 932 deletions
|
@ -20,6 +20,7 @@
|
|||
#include "libc/dce.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/sysv/consts/auxv.h"
|
||||
#include "libc/sysv/consts/madv.h"
|
||||
#include "libc/sysv/consts/map.h"
|
||||
#include "libc/sysv/consts/o.h"
|
||||
|
@ -63,7 +64,9 @@ TEST(madvise, subPages) {
|
|||
char *p;
|
||||
ASSERT_NE(MAP_FAILED, (p = mmap(0, FRAMESIZE, PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
ASSERT_SYS(0, 0, madvise(p + 4096, FRAMESIZE - 4096, MADV_WILLNEED));
|
||||
ASSERT_SYS(0, 0,
|
||||
madvise(p + getauxval(AT_PAGESZ), FRAMESIZE - getauxval(AT_PAGESZ),
|
||||
MADV_WILLNEED));
|
||||
ASSERT_SYS(0, 0, munmap(p, FRAMESIZE));
|
||||
}
|
||||
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
#include "libc/calls/calls.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/serialize.h"
|
||||
#include "libc/limits.h"
|
||||
#include "libc/log/libfatal.internal.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/runtime/memtrack.internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/runtime/symbols.internal.h"
|
||||
#include "libc/serialize.h"
|
||||
#include "libc/stdio/rand.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
|
|
|
@ -96,6 +96,10 @@ TEST(gc, torture) {
|
|||
for (i = 0; i < n; ++i) EXPECT_SYS(0, 0, pthread_join(t[i], 0));
|
||||
}
|
||||
|
||||
#if defined(__GNUC__) && __GNUC__ >= 12
|
||||
#pragma GCC diagnostic ignored "-Winfinite-recursion"
|
||||
#endif
|
||||
|
||||
void crawl2(jmp_buf jb, const char *path) {
|
||||
if (!strcmp(path, "/") || !strcmp(path, ".")) gclongjmp(jb, 1);
|
||||
crawl2(jb, gc(xdirname(path)));
|
||||
|
|
|
@ -31,6 +31,8 @@ _Thread_local long y[1] = {40};
|
|||
_Alignas(A) _Thread_local long a;
|
||||
|
||||
dontubsan void *Worker(void *arg) {
|
||||
ASSERT_EQ(A, _Alignof(a));
|
||||
ASSERT_EQ(0, (uintptr_t)&a & (_Alignof(a) - 1));
|
||||
ASSERT_EQ(42, x + y[0] + z);
|
||||
ASSERT_EQ(0, (intptr_t)&a & (A - 1));
|
||||
if (IsAsan()) {
|
||||
|
@ -41,6 +43,7 @@ dontubsan void *Worker(void *arg) {
|
|||
|
||||
TEST(tls, test) {
|
||||
ASSERT_EQ(A, _Alignof(a));
|
||||
ASSERT_EQ(0, (uintptr_t)&a & (_Alignof(a) - 1));
|
||||
ASSERT_EQ(0, sizeof(struct CosmoTib) % A);
|
||||
ASSERT_EQ(0, (intptr_t)__get_tls() & (A - 1));
|
||||
EXPECT_EQ(2, z);
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "libc/errno.h"
|
||||
#include "libc/limits.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/runtime/zipos.internal.h"
|
||||
|
|
|
@ -35,6 +35,10 @@ TEST(xstrcat, pointerAbuse) {
|
|||
EXPECT_STREQ("hi there\n", gc(xstrcat("hi", ' ', "there", '\n')));
|
||||
}
|
||||
|
||||
#if defined(__GNUC__) && __GNUC__ >= 12
|
||||
#pragma GCC diagnostic ignored "-Wuse-after-free"
|
||||
#endif
|
||||
|
||||
int hard_static(void) {
|
||||
char *b, *p;
|
||||
p = b = malloc(16);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue