Restart CI for New Technology and UBSAN hunting

Continuous Integration (via runit and runitd) is now re-enabled on win7
and win10. The `make test` command, which runs the tests on all systems
is now the fastest and most stable it's been since the project started.

UBSAN is now enabled in MODE=dbg in addition to ASAN. Many instances of
undefined behavior have been removed. Mostly things like passing a NULL
argument to memcpy(), which works fine with Cosmopolitan Libc, but that
doesn't prevents the compiler from being unhappy. There was an issue w/
GNU make where static analysis claims a sprintf() call can overflow. We
also now have nicer looking crash reports on Windows since uname should
now be supported and msys64 addr2line works reliably.
This commit is contained in:
Justine Tunney 2022-03-21 03:46:16 -07:00
parent d5ff2c3fb9
commit 5e8ae2d5bc
80 changed files with 506 additions and 249 deletions

View file

@ -40,7 +40,7 @@
*/
int main(int argc, char *argv[]) {
showcrashreports();
ShowCrashReports();
asm("int3"); /* cf. __die(), perror("msg"), abort(), exit(1), _Exit(1) */
return 0;
}

View file

@ -14,7 +14,7 @@
#include "libc/stdio/stdio.h"
int main(int argc, char *argv[]) {
showcrashreports();
ShowCrashReports();
if (IsDebuggerPresent(false)) {
printf("debugger found!\r\n");
DebugBreak();

View file

@ -24,6 +24,6 @@
int main(int argc, char *argv[]) {
volatile int64_t x;
showcrashreports();
ShowCrashReports();
return 1 / (x = 0);
}

View file

@ -121,7 +121,7 @@ static wontreturn void PrintUsage(FILE *f, int rc) {
}
int main(int argc, char *argv[]) {
if (!NoDebug()) showcrashreports();
if (!NoDebug()) ShowCrashReports();
/*
* Read flags.

View file

@ -43,7 +43,7 @@ void PrintUri(const char *path) {
}
int main(int argc, char *argv[]) {
showcrashreports();
ShowCrashReports();
int i;
while ((i = getopt(argc, argv, "?h")) != -1) {
switch (i) {

View file

@ -67,7 +67,7 @@ void PrintImg(const char *path) {
}
int main(int argc, char *argv[]) {
showcrashreports();
ShowCrashReports();
int i;
while ((i = getopt(argc, argv, "?huas01234")) != -1) {
switch (i) {

View file

@ -153,7 +153,7 @@ void LoadWords(void) {
}
int main(int argc, char *argv[]) {
showcrashreports();
ShowCrashReports();
LoadWords();
SpellChecker();
return 0;

View file

@ -152,7 +152,7 @@ void Draw(void) {
int main(int argc, char *argv[]) {
struct sigaction sa[2] = {{.sa_handler = OnShutdown},
{.sa_handler = OnInvalidate}};
showcrashreports();
ShowCrashReports();
Setup();
Enter();
GetTtySize();

24
examples/uname.c Normal file
View file

@ -0,0 +1,24 @@
#if 0
/*─────────────────────────────────────────────────────────────────╗
To the extent possible under law, Justine Tunney has waived
all copyright and related or neighboring rights to this file,
as it is written in the following disclaimers:
http://unlicense.org/ │
http://creativecommons.org/publicdomain/zero/1.0/ │
*/
#endif
#include "libc/calls/calls.h"
#include "libc/calls/struct/utsname.h"
#include "libc/stdio/stdio.h"
int main(int argc, char *argv[]) {
struct utsname names;
if (uname(&names)) return 1;
printf("%-10s %s\n", "sysname", names.sysname);
printf("%-10s %s\n", "nodename", names.nodename);
printf("%-10s %s\n", "release", names.release);
printf("%-10s %s\n", "version", names.version);
printf("%-10s %s\n", "machine", names.machine);
printf("%-10s %s\n", "domainname", names.domainname);
return 0;
}