#!/bin/bash # We can rewrite this bash script in Go if a dependency on bash and coreutils # is a problem during development. goroot=$(go env GOROOT) go_version=$(go env GOVERSION) # not "go version", to exclude GOOS/GOARCH runtime_and_deps=$(go list -deps runtime) # All packages that the runtime linknames to, except runtime and its dependencies. # This resulting list is what we need to "go list" when obfuscating the runtime, # as they are the packages that we may be missing. runtime_linknamed=$(comm -23 <( sed -rn 's@//go:linkname .* ([^.]*)\.[^.]*@\1@p' "${goroot}"/src/runtime/*.go | grep -vE '^main|^runtime\.|_test$' | sort -u ) <( # Note that we assume this is constant across platforms. go list -deps runtime | sort -u )) compiler_intrinsics_table="$(sed -rn 's@.*\b(addF|alias)\("([^"]*)", "([^"]*)",.*@\2 \3@p' "${goroot}"/src/cmd/compile/internal/ssagen/ssa.go | sort -u)" compiler_intrinsics_paths="$(while read path name; do echo ${path} done <<<"${compiler_intrinsics_table}" | sort -u)" gofmt >go_std_tables.go <