mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-01 08:48:29 +00:00
Fix bugs and make improvements
- Get clone() working on FreeBSD - Increase some Python build quotas - Add more atomic builtins to chibicc - Fix ASAN poisoning of alloca() memory - Make MODE= mandatory link path tinier - Improve the examples folder a little bit - Start working on some more resource limits - Make the linenoise auto-complete UI as good as GNU readline - Update compile.com, avoiding AVX codegen on non-AVX systems - Make sure empty path to syscalls like opendir raises ENOENT - Correctly polyfill ENOENT vs. ENOTDIR on the New Technology - Port bestline's paredit features to //third_party/linenoise - Remove workarounds for RHEL 5.0 bugs that were fixed in 5.1
This commit is contained in:
parent
c3fb624647
commit
ae638c0850
181 changed files with 2994 additions and 1367 deletions
|
@ -64,8 +64,6 @@ relegated static void ShowFunctionCalls(ucontext_t *ctx) {
|
|||
struct StackFrame goodframe;
|
||||
if (!ctx->uc_mcontext.rip) {
|
||||
kprintf("%s is NULL can't show backtrace%n", "RIP");
|
||||
} else if (!ctx->uc_mcontext.rbp) {
|
||||
kprintf("%s is NULL can't show backtrace%n", "RBP");
|
||||
} else {
|
||||
goodframe.next = (struct StackFrame *)ctx->uc_mcontext.rbp;
|
||||
goodframe.addr = ctx->uc_mcontext.rip;
|
||||
|
@ -142,7 +140,7 @@ relegated static void ShowGeneralRegisters(ucontext_t *ctx) {
|
|||
}
|
||||
}
|
||||
DescribeCpuFlags(
|
||||
p, ctx->uc_mcontext.gregs[REG_EFL],
|
||||
p, ctx->uc_mcontext.eflags,
|
||||
ctx->uc_mcontext.fpregs ? ctx->uc_mcontext.fpregs->swd : 0,
|
||||
ctx->uc_mcontext.fpregs ? ctx->uc_mcontext.fpregs->mxcsr : 0);
|
||||
kprintf("%s%n", buf);
|
||||
|
|
|
@ -45,11 +45,12 @@ static struct timespec vflogf_ts;
|
|||
*/
|
||||
void vflogf_onfail(FILE *f) {
|
||||
errno_t err;
|
||||
struct stat st;
|
||||
int64_t size;
|
||||
if (IsTiny()) return;
|
||||
err = ferror(f);
|
||||
if (fileno(f) != -1 && (err == ENOSPC || err == EDQUOT || err == EFBIG) &&
|
||||
(fstat(fileno(f), &st) == -1 || st.st_size > kNontrivialSize)) {
|
||||
((size = getfiledescriptorsize(fileno(f))) == -1 ||
|
||||
size > kNontrivialSize)) {
|
||||
ftruncate(fileno(f), 0);
|
||||
fseek(f, SEEK_SET, 0);
|
||||
f->beg = f->end = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue