Compare commits

...

3 Commits

Author SHA1 Message Date
13b4127521 Revert: remove -fno-stack-protector from CFLAGS_TARGET
Was not the root cause of the __aeabi_read_tp linker error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 11:48:20 +03:00
39ea36dfc2 Disable stack protector for target CFLAGS
Stack protector on ARM reads the canary via TLS (__aeabi_read_tp), which
is unavailable since the toolchain is built with --disable-tls and uClibc
runs on uClinux without TLS support. This caused linker errors in d3des.c.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 11:42:38 +03:00
a0b70bd271 Make --register accept install root instead of bin directory
env.sh now appends /bin internally, so callers pass the install root
(e.g. build/install) consistently, both when using the default path
and when specifying it explicitly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 10:10:52 +03:00
2 changed files with 11 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ INSTALL_DIR="${TOP}/build/install"
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
# Запускаем предварительно для того чтобы подтянуть переменные
. ./env.sh --register "${INSTALL_BIN_DIR}"
. ./env.sh --register "${INSTALL_DIR}"
# Сбрасываем CFLAGS/CXXFLAGS — все флаги уже встроены в CC/CXX
export CFLAGS=""
@@ -78,7 +78,7 @@ echo "== Распаковка завершена =="
# ==================================================================
cd ${TOP}
. ./env.sh --register "${INSTALL_BIN_DIR}" "rc"
. ./env.sh --register "${INSTALL_DIR}" "rc"
export CFLAGS=""
export CXXFLAGS=""
@@ -90,7 +90,7 @@ make install
# ==================================================================
cd ${TOP}
. ./env.sh --register "${INSTALL_BIN_DIR}"
. ./env.sh --register "${INSTALL_DIR}"
export CFLAGS=""
export CXXFLAGS=""

16
env.sh
View File

@@ -2,27 +2,27 @@
# env.sh — окружение для сборки под arm-uclinuxfdpiceabi (FDPIC, thumb)
#
# Использование:
# . ./env.sh --register /path/to/bin [arflags]
# . ./env.sh --register /path/to/install [arflags]
# . ./env.sh --unregister
_env_usage() {
echo "Использование:"
echo " . ./env.sh --register /path/to/bin [arflags]"
echo " . ./env.sh --register /path/to/install [arflags]"
echo " . ./env.sh --unregister"
}
_env_register() {
local toolchain_path="${1:-}"
local install_root="${1:-}"
local arflags_target="${2:-}"
# Если путь не указан — пробуем найти локальную папку тулчейна
if [ -z "$toolchain_path" ]; then
local default_path="$(pwd)/arm-uclinuxfdpiceabi/bin"
if [ -z "$install_root" ]; then
local default_path="$(pwd)/arm-uclinuxfdpiceabi"
if [ -d "$default_path" ]; then
toolchain_path="$default_path"
install_root="$default_path"
echo "Путь не указан, используется: ${default_path}"
else
echo "Ошибка: не указан путь к тулчейну и папка arm-uclinuxfdpiceabi/bin не найдена"
echo "Ошибка: не указан путь к тулчейну и папка arm-uclinuxfdpiceabi не найдена"
_env_usage
return 1
fi
@@ -31,7 +31,7 @@ _env_register() {
TOP="$(pwd)"
TARGET=arm-uclinuxfdpiceabi
TOOLCHAIN=arm-uclinuxfdpiceabi
TOOLCHAIN_PATH="$toolchain_path"
TOOLCHAIN_PATH="${install_root}/bin"
SYSROOT="${TOOLCHAIN_ROOT}/sysroot"
PREFIX="${SYSROOT}/usr"