From fe74892eda4264c1c1839144460a0c41ee88aafe Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Tue, 23 Jul 2024 16:56:25 -0600 Subject: meta-microblaze: gdb: Fix target GDB compilation for Linux native Add patch for Linux native issue Add library linkage to libatomic to address: ld: /usr/include/c++/13.3.0/bits/atomic_base.h:1015:(.text+0x16d0c): undefined reference to `__atomic_compare_exchange_1' Also remove extra files no longer required. Signed-off-by: Mark Hatle --- .../recipes-devtools/gdb/gdb-cross-canadian.inc | 44 ---------------------- meta-microblaze/recipes-devtools/gdb/gdb-cross.inc | 31 --------------- .../recipes-devtools/gdb/gdb-microblaze.inc | 3 ++ .../gdb/gdb/0055-fix-microblaze-linux-nat.patch | 26 +++++++++++++ 4 files changed, 29 insertions(+), 75 deletions(-) delete mode 100644 meta-microblaze/recipes-devtools/gdb/gdb-cross-canadian.inc delete mode 100644 meta-microblaze/recipes-devtools/gdb/gdb-cross.inc create mode 100644 meta-microblaze/recipes-devtools/gdb/gdb/0055-fix-microblaze-linux-nat.patch diff --git a/meta-microblaze/recipes-devtools/gdb/gdb-cross-canadian.inc b/meta-microblaze/recipes-devtools/gdb/gdb-cross-canadian.inc deleted file mode 100644 index c463574b..00000000 --- a/meta-microblaze/recipes-devtools/gdb/gdb-cross-canadian.inc +++ /dev/null @@ -1,44 +0,0 @@ -inherit cross-canadian -inherit python3-dir -inherit pkgconfig - -SUMMARY = "GNU debugger (cross-canadian gdb for ${TARGET_ARCH} target)" -PN = "gdb-cross-canadian-${TRANSLATED_TARGET_ARCH}" -BPN = "gdb" - -DEPENDS = "nativesdk-ncurses nativesdk-expat nativesdk-gettext nativesdk-gmp \ - virtual/${HOST_PREFIX}gcc virtual/${HOST_PREFIX}binutils virtual/nativesdk-libc" - -GDBPROPREFIX = "--program-prefix='${TARGET_PREFIX}'" - -# Overrides PACKAGECONFIG variables in gdb-common.inc -PACKAGECONFIG ??= "readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" -PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,nativesdk-python3, \ - nativesdk-python3-core \ - nativesdk-python3-codecs nativesdk-python3-netclient \ - " -PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,nativesdk-readline" -PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, nativesdk-elfutils" - -SSTATE_ALLOW_OVERLAP_FILES += "${STAGING_DATADIR}/gdb" - -do_configure:prepend() { -cat > ${WORKDIR}/python << EOF -#! /bin/sh -case "\$2" in - --includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}/" ;; - --ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}" ;; - --exec-prefix) echo "${exec_prefix}" ;; - *) exit 1 ;; -esac -exit 0 -EOF - chmod +x ${WORKDIR}/python -} - -# we don't want gdb to provide bfd/iberty/opcodes, which instead will override the -# right bits installed by binutils. -do_install:append() { - rm -rf ${D}${exec_prefix}/lib - cross_canadian_bindirlinks -} diff --git a/meta-microblaze/recipes-devtools/gdb/gdb-cross.inc b/meta-microblaze/recipes-devtools/gdb/gdb-cross.inc deleted file mode 100644 index b418f3a3..00000000 --- a/meta-microblaze/recipes-devtools/gdb/gdb-cross.inc +++ /dev/null @@ -1,31 +0,0 @@ -require gdb-common.inc - -DEPENDS = "expat-native gmp-native ncurses-native flex-native bison-native" - -inherit python3native pkgconfig - -# Overrides PACKAGECONFIG variables in gdb-common.inc -PACKAGECONFIG ??= "readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" -PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3-native" -PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline-native" -PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils-native" - -do_compile:prepend() { - export STAGING_LIBDIR="${STAGING_LIBDIR_NATIVE}" - export STAGING_INCDIR="${STAGING_INCDIR_NATIVE}" -} - -#EXTRA_OEMAKE += "LDFLAGS='${BUILD_LDFLAGS}'" - -GDBPROPREFIX = "" - -PN = "gdb-cross-${TARGET_ARCH}" -BPN = "gdb" - -# Ignore how TARGET_ARCH is computed. -TARGET_ARCH[vardepvalue] = "${TARGET_ARCH}" - -inherit cross -inherit gettext - -datadir .= "/gdb-${TARGET_SYS}${TARGET_VENDOR}-${TARGET_OS}" diff --git a/meta-microblaze/recipes-devtools/gdb/gdb-microblaze.inc b/meta-microblaze/recipes-devtools/gdb/gdb-microblaze.inc index 151e7c25..4e8993c4 100644 --- a/meta-microblaze/recipes-devtools/gdb/gdb-microblaze.inc +++ b/meta-microblaze/recipes-devtools/gdb/gdb-microblaze.inc @@ -7,6 +7,8 @@ FILESEXTRAPATHS:append := ":${THISDIR}/gdb" # Our changes are all local, no real patch-status ERROR_QA:remove = "patch-status" +LDFLAGS:append:class-target:microblaze = " -latomic" + SRC_URI:append:microblaze = " \ file://0001-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch \ file://0002-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch \ @@ -51,4 +53,5 @@ SRC_URI:append:microblaze = " \ file://0052-Wrong-target-description-accepted-by-microblaze-arch.patch \ file://0053-Merge-gdb-microblaze-linux-tdep.c-to-gdb-14-and-fix-.patch \ file://0054-Roll-back-an-improvement-which-inlines-target_gdbarc.patch \ + file://0055-fix-microblaze-linux-nat.patch \ " diff --git a/meta-microblaze/recipes-devtools/gdb/gdb/0055-fix-microblaze-linux-nat.patch b/meta-microblaze/recipes-devtools/gdb/gdb/0055-fix-microblaze-linux-nat.patch new file mode 100644 index 00000000..a0ac4d39 --- /dev/null +++ b/meta-microblaze/recipes-devtools/gdb/gdb/0055-fix-microblaze-linux-nat.patch @@ -0,0 +1,26 @@ +Fix compilation error on Linux native GDB + +Signed-off-by: Mark Hatle + +Index: gdb-14.2/gdb/microblaze-linux-nat.c +=================================================================== +--- gdb-14.2.orig/gdb/microblaze-linux-nat.c ++++ gdb-14.2/gdb/microblaze-linux-nat.c +@@ -96,7 +96,7 @@ static int + microblaze_register_u_addr (struct gdbarch *gdbarch, int regno) + { + int u_addr = -1; +- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); ++ microblaze_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + /* NOTE: cagney/2003-11-25: This is the word size used by the ptrace + * interface, and not the wordsize of the program's ABI. */ + int wordsize = sizeof (long); +@@ -191,7 +192,7 @@ static void + fetch_register (struct regcache *regcache, int tid, int regno) + { + struct gdbarch *gdbarch = regcache->arch (); +- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); ++ microblaze_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + /* This isn't really an address. But ptrace thinks of it as one. */ + CORE_ADDR regaddr = microblaze_register_u_addr (gdbarch, regno); + int bytes_transferred; -- cgit v1.2.3-54-g00ecf