Skip to content

Instantly share code, notes, and snippets.

Andrew Kelley andrewrk

Block or report user

Report or block andrewrk

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
andrewrk / errno.h
Created May 19, 2019
windows ucrt libc errno.h
View errno.h
// errno.h
// Copyright (c) Microsoft Corporation. All rights reserved.
// System error numbers for use with errno and errno_t.
#pragma once
#ifndef _INC_ERRNO // include guard for 3rd party interop
#define _INC_ERRNO
andrewrk / 1-brute-force.c
Created May 1, 2019
cleanup code techniques
View 1-brute-force.c
int main(int argc, char **argv) {
struct SoundIo *soundio = soundio_create();
if (!soundio) {
fprintf(stderr, "out of memory\n");
return 1;
int err;
if ((err = soundio_connect(soundio))) {
fprintf(stderr, "unable to connect: %s\n", soundio_strerror(err));
andrewrk / debug.zig
Created Apr 11, 2019
demo of using Zig's standard library from C code
View debug.zig
const std = @import("std");
const builtin = @import("builtin");
export fn captureStackTrace(addresses: [*]usize, len: usize, first_addr: usize) void {
var trace = builtin.StackTrace{
.instruction_addresses = addresses[0..len],
.index = 0,
std.debug.captureStackTrace(if (first_addr == 0) null else first_addr, &trace);
andrewrk / libc.txt
Created Apr 8, 2019
example of `zig libc` on windows
View libc.txt
c:\msys64\home\andy\dev\zig\build-release-llvm8>bin\zig.exe libc
# The directory that contains `stdlib.h`.
# On POSIX-like systems, include directories be found with: `cc -E -Wp,-v -xc /dev/null`
include_dir=C:\Program Files (x86)\Windows Kits\10\\Include\10.0.17134.0\ucrt
# The system-specific include directory. May be the same as `include_dir`.
# On Windows it's the directory that includes `vcruntime.h`.
# On POSIX it's the directory that includes `sys/errno.h`.
sys_include_dir=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\lib\x64\\..\..\include
# The directory that contains `crt1.o`.
andrewrk / git.txt
Created Mar 13, 2019
files in linux headers that have same names with different casing
View git.txt
modified: libc/include/generic-musl/linux/netfilter/xt_CONNMARK.h
modified: libc/include/generic-musl/linux/netfilter/xt_DSCP.h
modified: libc/include/generic-musl/linux/netfilter/xt_MARK.h
modified: libc/include/generic-musl/linux/netfilter/xt_RATEEST.h
modified: libc/include/generic-musl/linux/netfilter/xt_TCPMSS.h
modified: libc/include/generic-musl/linux/netfilter_ipv4/ipt_ECN.h
modified: libc/include/generic-musl/linux/netfilter_ipv4/ipt_TTL.h
modified: libc/include/generic-musl/linux/netfilter_ipv6/ip6t_HL.h
andrewrk / multibuild.zig
Created Mar 6, 2019
using zig instead of bash template
View multibuild.zig
const std = @import("std");
const os = std.os;
const src = "/home/andy/downloads/glibc";
const j_arg = "-j2";
const configure = src ++ "/configure";
const Target = struct {
glibc_name: []const u8,
andrewrk / cmds.txt
Last active Mar 4, 2019
how to build glibc 2.29 startup files
View cmds.txt
start.os: gcc ../sysdeps/x86_64/start.S -c -I../include -I/home/andy/downloads/glibc/build/csu -I/home/andy/downloads/glibc/build -I../sysdeps/unix/sysv/linux/x86_64/64 -I../sysdeps/unix/sysv/linux/x86_64 -I../sysdeps/unix/sysv/linux/x86/include -I../sysdeps/unix/sysv/linux/x86 -I../sysdeps/x86/nptl -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/x86_64/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/x86_64/64 -I../sysdeps/x86_64/fpu/multiarch -I../sysdeps/x86_64/fpu -I../sysdeps/x86/fpu/include -I../sysdeps/x86/fpu -I../sysdeps/x86_64/multiarch -I../sysdeps/x86_64 -I../sysdeps/x86 -I../sysdeps/ieee754/float128 -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I..
andrewrk / output.strace
Created Mar 2, 2019
naive segfault handler with dumping a stack trace
View output.strace
# with dumpCurrentStackTrace commented out
execve("./test", ["./test"], 0x7ffc4946bd00 /* 131 vars */) = 0
rt_sigaction(SIGSEGV, {sa_handler=0x2030b0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESETHAND, sa_restorer=0x223d10}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x1} ---
rt_sigreturn({mask=[]}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x1} ---
+++ killed by SIGSEGV +++
Segmentation fault
andrewrk / bench.zig
Created Feb 9, 2019
testing performance of safety-checked vector addition
View bench.zig
const std = @import("std");
const Timer = std.os.time.Timer;
const IntType = i32;
const vector_size = 4;
const total_vectors = 100000000;
const total_integers = total_vectors * vector_size;
test "bench" {
const bytes = @sizeOf(IntType) * total_integers;
andrewrk / example.zig
Created Nov 21, 2018
wip proposal I didn't even want to put on the issue tracker
View example.zig
const S = struct {
a: usize,
b: usize,
fn foo() S {
var result: S return = undefined;
result.a = 1234;
result.b = 5678;
// returning the return var is specially detected
You can’t perform that action at this time.