diff --git a/docs/compile/builder-linux/build_deps.sh b/docs/compile/builder-linux/build_deps.sh index 308a3de..05694f0 100755 --- a/docs/compile/builder-linux/build_deps.sh +++ b/docs/compile/builder-linux/build_deps.sh @@ -64,7 +64,7 @@ build_luajit() ( cd luajit2-* make clean - make BUILDMODE=static XCFLAGS=-DLUAJIT_DISABLE_FFI HOST_CC="$HOSTCC" CROSS= CC="$CC" TARGET_AR="$AR rcus" TARGET_STRIP=$STRIP TARGET_CFLAGS="$OPTIMIZE $MINSIZE $CFLAGS" TARGET_LDFLAGS="$LDMINSIZE $LDFLAGS" + make BUILDMODE=static XCFLAGS="-DLUAJIT_DISABLE_FFI $CFLAGS_PIC" HOST_CC="$HOSTCC" CROSS= CC="$CC" TARGET_AR="$AR rcus" TARGET_STRIP=$STRIP TARGET_CFLAGS="$OPTIMIZE $MINSIZE $CFLAGS" TARGET_LDFLAGS="$LDMINSIZE $LDFLAGS" make install PREFIX= DESTDIR="$STAGING_DIR" ) } @@ -89,6 +89,7 @@ dl_deps check_toolchains ask_target +CFLAGS="$CFLAGS $CFLAGS_PIC" for t in $TGT; do buildenv $t pushd "$DEPS" diff --git a/docs/compile/builder-linux/build_zapret1.sh b/docs/compile/builder-linux/build_zapret1.sh index 470d07a..08cc9cc 100755 --- a/docs/compile/builder-linux/build_zapret1.sh +++ b/docs/compile/builder-linux/build_zapret1.sh @@ -48,8 +48,8 @@ for t in $TGT; do make clean OPTIMIZE=$OPTIMIZE \ - CFLAGS="-static-libgcc -static -I$STAGING_DIR/include $MINSIZE $CFLAGS" \ - LDFLAGS="-L$STAGING_DIR/lib $LDMINSIZE $LDFLAGS" \ + CFLAGS="-static-libgcc -I$STAGING_DIR/include $MINSIZE $CFLAGS_PIC $CFLAGS" \ + LDFLAGS="-L$STAGING_DIR/lib $LDMINSIZE $LDFLAGS_PIE $LDFLAGS" \ make [ -d "$ZBIN/$ZBINTARGET" ] || mkdir "$ZBIN/$ZBINTARGET" diff --git a/docs/compile/builder-linux/build_zapret2.sh b/docs/compile/builder-linux/build_zapret2.sh index 528c4f2..c812f51 100755 --- a/docs/compile/builder-linux/build_zapret2.sh +++ b/docs/compile/builder-linux/build_zapret2.sh @@ -59,9 +59,9 @@ for t in $TGT; do LUA_JIT=$LUA_JIT LUA_VER=$LUA_VER LUAJIT_LUA_VER=$LUAJIT_LUA_VER \ OPTIMIZE=$OPTIMIZE \ MINSIZE=$MINSIZE \ - CFLAGS="-static-libgcc -static -I$STAGING_DIR/include $CFLAGS" \ + CFLAGS="-static-libgcc -I$STAGING_DIR/include $CFLAGS" \ LDFLAGS="-L$STAGING_DIR/lib $LDFLAGS" \ - make LUA_JIT=$LJIT LUA_CFLAGS="$LCFLAGS" LUA_LIB="$LLIB" + make CFLAGS_PIC=$CFLAGS_PIC LDFLAGS_PIE=$LDFLAGS_PIE LUA_JIT=$LJIT LUA_CFLAGS="$LCFLAGS" LUA_LIB="$LLIB" [ -d "$ZBIN/$ZBINTARGET" ] || mkdir "$ZBIN/$ZBINTARGET" cp -f binaries/my/* "$ZBIN/$ZBINTARGET" diff --git a/docs/compile/builder-linux/common.inc b/docs/compile/builder-linux/common.inc index 527ba26..32e50c0 100644 --- a/docs/compile/builder-linux/common.inc +++ b/docs/compile/builder-linux/common.inc @@ -9,6 +9,8 @@ MINSIZE="${MINSIZE:--flto=auto -ffunction-sections -fdata-sections}" LDMINSIZE="${LDMINSIZE:--Wl,--gc-sections -flto=auto}" #CFLAGS="" LDFLAGS="-lgcc_eh $LDFLAGS" +# PIE makes ASLR working but adds 5% to size +PIE=${PIE:-0} HOSTCC=${HOSTCC:-cc} LUA_VER=${LUA_VER:-5.5} LUA_RELEASE=${LUA_RELEASE:-5.5.0} @@ -17,6 +19,13 @@ LUAJIT_RELEASE=${LUAJIT_RELEASE:-2.1-20250826} LUAJIT_LUA_VER=${LUAJIT_LUA_VER:-5.1} nproc=$(nproc) +CFLAGS_PIC= +LDFLAGS_PIE=-static +[ "$PIE" = 1 ] && { + CFLAGS_PIC=-fPIC + LDFLAGS_PIE=-static-pie +} + TARGETS="\ aarch64-unknown-linux-musl \ arm-unknown-linux-musleabi \