9 Commits

Author SHA1 Message Date
ecd1367c6d build: Add -j to make install to speed compilation 2025-04-02 00:07:26 +03:00
e899d51568 fixup! build: install musl toolchains in the dockerfile 2025-04-01 23:59:55 +03:00
01e60acff0 build: Use musl-based compiler by default 2025-04-01 22:03:11 +03:00
24491576ef build: install musl toolchains in the dockerfile 2025-03-29 12:52:32 +03:00
56eef2a483 Merge pull request #44 from guyush1/fix-gdb-auto-load
Fix gdb auto load
2025-02-10 23:56:42 +02:00
fb1c8c064b Updated README and compilation to gdb-16 2025-02-10 00:25:35 +02:00
0aef35466f Fix gdb debug script auto-load via explicit data&debug configuration
The problem was that our default gdb datadir and debugdir had
non-standard paths, due to some unknown configuration detection.

In order to fix it, we now pass the standard paths via the --with-gdb-datadir & --with-separate-debug-dir variables.
I also set --with-jit-reader-dir, --with-system-gdbinit and --with-system-gdbinit-dir path to be the standard path as well.
2025-02-10 00:24:32 +02:00
a67de84e98 Merge pull request #43 from guyush1/fix-python-modules-on-init
Initializing gdb modules on Python init #41
2025-02-07 15:41:52 +02:00
6332ea0b03 Merge pull request #42 from guyush1/update-to-gdb-16.2
Update binutils to our static branch for gdb-16.2
2025-02-07 15:39:16 +02:00
6 changed files with 60 additions and 18 deletions

View File

@ -30,4 +30,9 @@ RUN apt update && apt install -y \
wget \
xz-utils
# Install musl-based toolchains.
ENV MUSL_INSTALL_DIR="/usr/"
COPY src/compilation/install_musl_toolchains.sh .
RUN ./install_musl_toolchains.sh
WORKDIR /app/gdb

View File

@ -59,7 +59,7 @@ $(PYTHON_TARGETS): build-with-python-%:
_build-%: symlink-git-packages download-packages build-docker-image
mkdir -p build
docker run --user $(shell id -u):$(shell id -g) \
docker run -it --user $(shell id -u):$(shell id -g) \
--rm --volume .:/app/gdb gdb-static env TERM=xterm-256color \
/app/gdb/src/compilation/build.sh $* /app/gdb/build/ /app/gdb/src $(WITH_PYTHON)

View File

@ -20,7 +20,7 @@
<img src="https://img.shields.io/github/contributors-anon/guyush1/gdb-static?color=yellow&style=flat-square" alt="contributors" style="height: 20px;">
</a>
<br>
<img src="https://img.shields.io/badge/GDB-v15.2-orange?logo=gnu&logoColor=white&style=flat-square" alt="gdb" style="height: 20px;">
<img src="https://img.shields.io/badge/GDB-v16.2-orange?logo=gnu&logoColor=white&style=flat-square" alt="gdb" style="height: 20px;">
<img src="https://img.shields.io/badge/Python-built--in-blue?logo=python&logoColor=white&style=flat-square" alt="python" style="height: 20px;">
</h4>

View File

@ -1,7 +1,7 @@
# Notes about this file - read before proceeding!
While we have already provided the gdb/gdbserver-15 statically compiled binaries for you, some people might want to compile it without our build scripts, or compile a newer version of gdb in the future :).
This rest of the file contains a documentation of the compilation process, in order to help you out.
While we have already provided the gdb/gdbserver statically compiled binaries for you, some people might want to compile it without our build scripts, or compile a newer version of gdb in the future :).
The rest of the file contains a documentation of the compilation process, in order to help you out.
NOTE: The compilation guide describes the compilation process in order to create a minimal-working version of gdb. Our build-scripts also provides further capabilites to gdb, such as python and xml support, which are not documented in this file.
@ -20,7 +20,7 @@ Examples to the <VARIABLES> throughout the script:
- <COMPILATION_DIR_PATH> - /home/username/projects/libgmp-x.y.z/build-arm/
Environment info:
- glibc version: 2.39-0ubuntu8.3 (NOTE: When i compiled gdb-15 using an older glibc, such as the one i had in my ubuntu-20.04 machine, i received a segfault in gdb, so the libc version is important!).
- glibc version: 2.39-0ubuntu8.3 (NOTE: When i compiled gdb using an older glibc, such as the one i had in my ubuntu-20.04 machine, i received a segfault in gdb, so the libc version is important!).
# Compiling gdb statically to the host platform

View File

@ -28,23 +28,23 @@ function set_compliation_variables() {
>&2 fancy_title "Setting compilation variables for $target_arch"
if [[ "$target_arch" == "arm" ]]; then
CROSS=arm-linux-gnueabi-
export HOST=arm-linux-gnueabi
CROSS=arm-linux-musleabi-
export HOST=arm-linux-musleabi
elif [[ "$target_arch" == "aarch64" ]]; then
CROSS=aarch64-linux-gnu-
export HOST=aarch64-linux-gnu
CROSS=aarch64-linux-musl-
export HOST=aarch64-linux-musl
elif [[ "$target_arch" == "powerpc" ]]; then
CROSS=powerpc-linux-gnu-
export HOST=powerpc-linux-gnu
CROSS=powerpc-linux-musl-
export HOST=powerpc-linux-musl
elif [[ "$target_arch" == "mips" ]]; then
CROSS=mips-linux-gnu-
export HOST=mips-linux-gnu
CROSS=mips-linux-musl-
export HOST=mips-linux-musl
elif [[ "$target_arch" == "mipsel" ]]; then
CROSS=mipsel-linux-gnu-
export HOST=mipsel-linux-gnu
CROSS=mipsel-linux-musl-
export HOST=mipsel-linux-musl
elif [[ "$target_arch" == "x86_64" ]]; then
CROSS=x86_64-linux-gnu-
export HOST=x86_64-linux-gnu
CROSS=x86_64-linux-musl-
export HOST=x86_64-linux-musl
fi
export CC="${CROSS}gcc"
@ -442,6 +442,9 @@ function build_gdb() {
../configure -C --enable-static --with-static-standard-libraries --disable-inprocess-agent \
--enable-tui "$python_flag" \
--with-expat --with-libexpat-type="static" \
--with-gdb-datadir="/usr/share/gdb" --with-separate-debug-dir="/usr/lib/debug" \
--with-system-gdbinit="/etc/gdb/gdbinit" --with-system-gdbinit-dir="/etc/gdb/gdbinit.d" \
--with-jit-reader-dir="/usr/lib/gdb" \
"--with-libiconv-prefix=$libiconv_prefix" --with-libiconv-type=static \
"--with-gmp=$libgmp_prefix" \
"--with-mpfr=$libmpfr_prefix" \
@ -494,7 +497,7 @@ function install_gdb() {
mkdir -p "$artifacts_location"
make -C "$gdb_build_dir" install "DESTDIR=$temp_artifacts_dir" 1>&2
make -j$(nproc) -C "$gdb_build_dir" install "DESTDIR=$temp_artifacts_dir" 1>&2
if [[ $? -ne 0 ]]; then
rm -rf "$temp_artifacts_dir"
return 1

View File

@ -0,0 +1,34 @@
#!/bin/bash
set -e
# Define architectures and their respective musl toolchain URLs.
ARCHS=("x86_64" "arm" "aarch64" "powerpc" "mips" "mipsel")
BASE_URL="https://musl.cc"
if [[ -z "$MUSL_INSTALL_DIR" ]]; then
echo "MUSL_INSTALL_DIR variable has not been set!"
exit 1
fi
# Create install directory.
mkdir -p "$MUSL_INSTALL_DIR"
cd "$MUSL_INSTALL_DIR"
# Download and extract each toolchain.
for ARCH in "${ARCHS[@]}"; do
TOOLCHAIN_TAR="${ARCH}-linux-musl-cross.tgz"
# Arm has a non-generic special toolchain name :(.
if [[ "$ARCH" == "arm" ]]; then
TOOLCHAIN_TAR="arm-linux-musleabi-cross.tgz"
fi
URL="$BASE_URL/$TOOLCHAIN_TAR"
echo "Downloading $URL..."
wget -q --show-progress "$URL"
echo "Extracting $TOOLCHAIN_TAR..."
tar -xzf "$TOOLCHAIN_TAR" --strip-components=1
rm "$TOOLCHAIN_TAR"
done