#!/bin/sh COSMO=${COSMO:-/opt/cosmo} set -- -apifCe "$@" if [ -n "$ADDR2LINE" ]; then exec "$ADDR2LINE" "$@" fi find_addr2line() { if [ -x o/third_party/gcc/bin/$1-linux-cosmo-addr2line ]; then ADDR2LINE=o/third_party/gcc/bin/$1-linux-cosmo-addr2line elif [ -x o/third_party/gcc/bin/$1-linux-musl-addr2line ]; then ADDR2LINE=o/third_party/gcc/bin/$1-linux-musl-addr2line elif [ -x "$COSMO/o/third_party/gcc/bin/$1-linux-cosmo-addr2line" ]; then ADDR2LINE="$COSMO/o/third_party/gcc/bin/$1-linux-cosmo-addr2line" elif [ -x "$COSMO/o/third_party/gcc/bin/$1-linux-musl-addr2line" ]; then ADDR2LINE="$COSMO/o/third_party/gcc/bin/$1-linux-musl-addr2line" else echo "error: toolchain not found (try running 'cosmocc --update' or 'make' in the cosmo monorepo)" >&2 exit 1 fi } for ARCH in x86_64 aarch64; do find_addr2line $ARCH "$ADDR2LINE" "$@" 2>/dev/null && exit done echo "error: addr2line failed" >&2 exit 1