mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-17 04:37:19 +00:00
63a5292025
The upstream crash Makefile CONF_TARGET_ARCH mapping (used when
CROSS_COMPILE is set) enumerates most of OE supported arches
but omits 32-bit arm. Building with CROSS_COMPILE=arm-*
therefore aborts at Makefile parse time:
Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop.
ARM is already a valid crash target (defs.h/configure.c), so add a patch
mapping the normalized "arm" arch to CONF_TARGET_ARCH=ARM like every
other supported arch.
Verified by cross building crash for qemuarm (arm-yoe-linux-gnueabi-):
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Cc: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
132 lines
5.2 KiB
PHP
132 lines
5.2 KiB
PHP
SUMMARY = "Kernel analysis utility for live systems and core dumpfiles"
|
|
DESCRIPTION = "The core analysis suite is a self-contained tool that can be used to \
|
|
investigate either live systems, kernel core dumps created from kdump, or mcore dumpfiles."
|
|
HOMEPAGE = "https://crash-utility.github.io/"
|
|
SECTION = "devel"
|
|
|
|
LICENSE = "GPL-3.0-only"
|
|
LIC_FILES_CHKSUM = "file://${UNPACKDIR}/${BP}/COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
|
|
file://${UNPACKDIR}/gdb/gdb-16.2/COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
|
|
"
|
|
|
|
DEPENDS = "zlib readline ncurses gmp mpfr"
|
|
# Use append for cross-canadian on native packages
|
|
DEPENDS:append = " coreutils-native bison-native flex-native"
|
|
|
|
SRC_URI = "git://github.com/crash-utility/${BPN}.git;branch=master;protocol=https;destsuffix=${BP} \
|
|
${GNU_MIRROR}/gdb/gdb-16.2.tar.gz;name=gdb;subdir=gdb \
|
|
file://7003cross_ranlib.patch \
|
|
file://gdb_build_jobs_and_not_write_crash_target.patch \
|
|
file://0001-symbol-fix-S-cannot-work-with-kaslr-detection.patch \
|
|
file://0001-Use-CC-env-var-to-get-compiler-version.patch \
|
|
file://0001-Makefile-support-cross-compiling-for-32-bit-arm.patch \
|
|
"
|
|
# 0001-Use-CC-env-var-to-get-compiler-version.patch:
|
|
# to get the right compiler info into ./crash --buildinfo
|
|
|
|
SRCREV = "61fe107ff96a22e7df0029877529b7ce6da36850"
|
|
#PV = "9.0.2"
|
|
SRC_URI[gdb.sha256sum] = "bdc1da4a033280ac752e7d34b0418efaa45bed093235cb88e62ea961752a37f8"
|
|
|
|
|
|
UPSTREAM_CHECK_URI = "https://github.com/crash-utility/crash/releases"
|
|
|
|
inherit gettext
|
|
|
|
TARGET_CC_ARCH:append = " ${SELECTED_OPTIMIZATION}"
|
|
|
|
# Target machine constraints preserved from your original layout
|
|
COMPATIBLE_HOST:riscv64 = "null"
|
|
COMPATIBLE_HOST:riscv32 = "null"
|
|
COMPATIBLE_HOST:mipsarchn64 = "null"
|
|
COMPATIBLE_HOST:mipsarchn32 = "null"
|
|
COMPATIBLE_HOST:libc-musl = 'null'
|
|
|
|
# add gdb autoconf overrides
|
|
EXTRA_OEMAKE = ' \
|
|
RPMPKG="${PV}" \
|
|
CROSS_COMPILE="${TARGET_PREFIX}" \
|
|
HOSTCC="gcc" \
|
|
CFLAGS="${CFLAGS} -fcommon --sysroot=${STAGING_DIR_TARGET}" \
|
|
CXXFLAGS="${CXXFLAGS} -fcommon --sysroot=${STAGING_DIR_TARGET}" \
|
|
LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}" \
|
|
AR="${AR}" \
|
|
RANLIB="${RANLIB}" \
|
|
GDB_TARGET="${TARGET_SYS}" \
|
|
GDB_HOST="${BUILD_SYS}" \
|
|
GDB_MAKE_JOBS="${PARALLEL_MAKE}" \
|
|
GDB_CONF_FLAGS="--host=${HOST_SYS} \
|
|
--target=${TARGET_SYS} \
|
|
--disable-gdbserver \
|
|
--disable-gprofng \
|
|
--with-sysroot=/ \
|
|
ac_cv_type_gregset_t=yes \
|
|
ac_cv_type_fpregset_t=yes \
|
|
ac_cv_header_sys_procfs_h=yes" \
|
|
'
|
|
|
|
TARGET_CFLAGS:append = " -fcommon -fpermissive"
|
|
TARGET_CXXFLAGS:append = " -fcommon -fpermissive"
|
|
|
|
do_configure() {
|
|
:
|
|
}
|
|
|
|
do_compile:prepend() {
|
|
# 1. Map Yocto architecture strings to the strict naming convention expected by crash
|
|
case ${TARGET_ARCH} in
|
|
aarch64*) ARCH_UPPER=ARM64 ;;
|
|
arm*) ARCH_UPPER=ARM ;;
|
|
i*86*) ARCH_UPPER=X86 ;;
|
|
x86_64*) ARCH_UPPER=X86_64 ;;
|
|
powerpc64*) ARCH_UPPER=PPC64 ;;
|
|
powerpc*) ARCH_UPPER=PPC ;;
|
|
mips*) ARCH_UPPER=MIPS ;;
|
|
*) ARCH_UPPER=$(echo "${TARGET_ARCH}" | tr '[:lower:]' '[:upper:]') ;;
|
|
esac
|
|
|
|
bbnote "Staging pre-unpacked GDB 16.2 source tree into active build workspace layout..."
|
|
rm -rf ${B}/gdb-16.2
|
|
|
|
# 2. Copy the official clean GNU tarball source footprint into the active workspace mapping
|
|
cp -rf ${UNPACKDIR}/gdb/gdb-16.2 ${B}/gdb-16.2
|
|
|
|
bbnote "Writing dynamic target layout architecture context: ${ARCH_UPPER}"
|
|
echo "${ARCH_UPPER}" > ${B}/gdb-16.2/crash.target
|
|
|
|
# 4. Apply your original configuration text manipulations natively
|
|
sed -i s/FORCE_DEFINE_ARCH/"${ARCH_UPPER}"/g ${S}/configure.c
|
|
sed -i -e 's/#define TARGET_CFLAGS_ARM_ON_X86_64.*/#define TARGET_CFLAGS_ARM_ON_X86_64\t\"TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64\"/g' ${S}/configure.c
|
|
sed -i -e 's/#define TARGET_CFLAGS_MIPS_ON_X86_64.*/#define TARGET_CFLAGS_MIPS_ON_X86_64\t\"TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64\"/g' ${S}/configure.c
|
|
sed -i 's/>/>/g' ${S}/Makefile
|
|
|
|
# The crash gdb merge step re-enters the top-level crash Makefile from gdb's
|
|
# link rule ("make -C ../.. ... library") without passing the compiler, so
|
|
# crash's own objects fall back to the Makefile default $(CROSS_COMPILE)gcc.
|
|
# That only happens to work when a ${cross}-gcc exists; on clang toolchains
|
|
# (and any gcc-less SDK) it fails. Forward CC/CXX through that recursion.
|
|
sed -i 's|GDB_FLAGS=-DGDB_16_2 library|GDB_FLAGS=-DGDB_16_2 CC="$(CC)" CXX="$(CXX)" library|' ${S}/gdb-16.2.patch
|
|
|
|
# 5. Return to the active workspace build root to merge downstream additions
|
|
cd ${B}
|
|
bbnote "Applying the native upstream crash integration patch onto the GDB source tree..."
|
|
patch -p0 --fuzz=3 < gdb-16.2.patch
|
|
}
|
|
|
|
do_compile() {
|
|
oe_runmake ${EXTRA_OEMAKE} CC="${CC}" CXX="${CXX}" RECIPE_SYSROOT=${RECIPE_SYSROOT}
|
|
}
|
|
|
|
do_install:prepend () {
|
|
install -d ${D}${bindir}
|
|
install -d ${D}/${mandir}/man8
|
|
install -d ${D}${includedir}/crash
|
|
|
|
install -m 0644 ${S}/crash.8 ${D}/${mandir}/man8/
|
|
install -m 0644 ${S}/defs.h ${D}${includedir}/crash
|
|
}
|
|
|
|
RDEPENDS:${PN} += "liblzma"
|
|
|
|
ARM_INSTRUCTION_SET = "arm"
|