#!/bin/sh # Build the fdguard LD_PRELOAD shim and its self-test program. # ./build.sh -> libfdguard.so, fdguard_test set -e cd "$(dirname "$0")" CC=${CC:-gcc} $CC -O2 -g -fPIC -shared -Wall -Wextra -Wno-unused-parameter -fvisibility=default \ -o libfdguard.so.tmp fdguard.c -ldl -lpthread # rename, never overwrite in place: a running process may have the old one mapped mv -f libfdguard.so.tmp libfdguard.so # the test program keeps its symbols (no -rdynamic on purpose: like dragonxd, # owner detection must work from .symtab alone) and frame pointers for clarity $CC -O1 -g -fno-omit-frame-pointer -fno-inline -Wall -o fdguard_test.tmp fdguard_test.c -lpthread mv -f fdguard_test.tmp fdguard_test echo "built: $(pwd)/libfdguard.so $(pwd)/fdguard_test"