[PATCH 35/94] dev-libs/elfutils: port to Hurd
Sam James <[email protected]>
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <fa8f9e1ca7285e8a6354185292044b2512ea4185.1774994316.git.sam@gentoo.org> |
Bug: https://sourceware.org/PR33974 Signed-off-by: Sam James <[email protected]> --- ...s-9999.ebuild => elfutils-0.194-r2.ebuild} | 10 +- .../elfutils/files/elfutils-0.194-hurd.patch | 101 ++++++++++++++++++ 2 files changed, 108 insertions(+), 3 deletions(-) copy dev-libs/elfutils/{elfutils-9999.ebuild => elfutils-0.194-r2.ebuild} (94%) create mode 100644 dev-libs/elfutils/files/elfutils-0.194-hurd.patch diff --git a/dev-libs/elfutils/elfutils-9999.ebuild b/dev-libs/elfutils/elfutils-0.194-r2.ebuild similarity index 94% copy from dev-libs/elfutils/elfutils-9999.ebuild copy to dev-libs/elfutils/elfutils-0.194-r2.ebuild index 0a0a771b81b2a..a97f8bc8fc037 100644 --- a/dev-libs/elfutils/elfutils-9999.ebuild +++ b/dev-libs/elfutils/elfutils-0.194-r2.ebuild @@ -38,9 +38,9 @@ RDEPEND=" bzip2? ( >=app-arch/bzip2-1.0.6-r4[static-libs?,${MULTILIB_USEDEP}] ) debuginfod? ( dev-db/sqlite:3= - >=dev-libs/json-c-0.11:=[${MULTILIB_USEDEP}] + >=dev-libs/json-c-0.11:= >=net-libs/libmicrohttpd-0.9.33:= - >=net-misc/curl-7.29.0[static-libs?,${MULTILIB_USEDEP}] + >=net-misc/curl-7.29.0[static-libs?] ) libarchive? ( >=app-arch/libarchive-3.1.2:= ) lzma? ( >=app-arch/xz-utils-5.0.5-r1[static-libs?,${MULTILIB_USEDEP}] ) @@ -66,6 +66,8 @@ BDEPEND+=" PATCHES=( "${FILESDIR}"/${PN}-0.189-musl-aarch64-regs.patch "${FILESDIR}"/${PN}-0.191-musl-macros.patch + "${FILESDIR}"/${P}-tests.patch + "${FILESDIR}"/${PN}-0.194-hurd.patch ) src_prepare() { @@ -99,6 +101,8 @@ src_configure() { # bug 660738 filter-flags -fno-asynchronous-unwind-tables + use debuginfod && MULTILIB_WRAPPED_HEADERS+=( /usr/include/elfutils/debuginfod.h ) + multilib-minimal_src_configure } @@ -110,7 +114,7 @@ multilib_src_configure() { $(multilib_native_use_enable debuginfod) # Could do dummy if needed? We could also split libdebuginfod # (client support) into its own USE if required. - $(use_enable debuginfod libdebuginfod) + $(multilib_native_use_enable debuginfod libdebuginfod) $(multilib_native_use_enable stacktrace) $(use_enable valgrind valgrind-annotations) diff --git a/dev-libs/elfutils/files/elfutils-0.194-hurd.patch b/dev-libs/elfutils/files/elfutils-0.194-hurd.patch new file mode 100644 index 0000000000000..9c90380be6575 --- /dev/null +++ b/dev-libs/elfutils/files/elfutils-0.194-hurd.patch @@ -0,0 +1,101 @@ +https://inbox.sourceware.org/elfutils-devel/[email protected]/ + +From: Serhei Makarov <[email protected]> +To: [email protected] +Cc: Serhei Makarov <[email protected]> +Subject: [PATCH v3] libdwfl/linux-pid-attach.c PR33974: __libdwfl_set_initial_registers_thread on non-Linux +Date: Mon, 16 Mar 2026 10:48:17 -0400 +Message-ID: <[email protected]> +X-Mailer: git-send-email 2.52.0 +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,JMQ_SPF_NEUTRAL,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_PASS,SPF_PASS,TXREP,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 +X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org +List-Id: <elfutils-devel.sourceware.org> + +libdwfl_stacktrace uses __libdwfl_set_initial_registers_thread but it +is wrapped by #ifdef __linux__, causing build errors on non-Linux +platforms. + +* linux-pid-attach.c (__libdwfl_set_initial_registers_thread): + Remove from inside the '#ifdef __linux__'. +* dwfl_frame_regs.c (__libdwfl_set_initial_registers_thread): + Move here. +--- + libdwfl/dwfl_frame_regs.c | 27 +++++++++++++++++++++++++++ + libdwfl/linux-pid-attach.c | 25 ------------------------- + 2 files changed, 27 insertions(+), 25 deletions(-) + +diff --git a/libdwfl/dwfl_frame_regs.c b/libdwfl/dwfl_frame_regs.c +index 572ac676..99de3c22 100644 +--- a/libdwfl/dwfl_frame_regs.c ++++ b/libdwfl/dwfl_frame_regs.c +@@ -77,3 +77,30 @@ dwfl_frame_reg (Dwfl_Frame *state, unsigned regno, Dwarf_Word *val) + return res; + } + INTDEF(dwfl_frame_reg) ++ ++/* Implement the ebl_set_initial_registers_tid setfunc callback. */ ++ ++bool ++/* Not internal_function, since that allows calling-convention changes ++ e.g. on i386, and stable ABI is needed to use this as an ++ ebl_tid_registers_t * callback in linux-pid-attach.c and ++ libdwfl_stacktrace. */ ++__libdwfl_set_initial_registers_thread (int firstreg, unsigned nregs, ++ const Dwarf_Word *regs, void *arg) ++{ ++ Dwfl_Thread *thread = (Dwfl_Thread *) arg; ++ if (firstreg == -1) ++ { ++ assert (nregs == 1); ++ INTUSE(dwfl_thread_state_register_pc) (thread, *regs); ++ return true; ++ } ++ else if (firstreg == -2) ++ { ++ assert (nregs == 1); ++ INTUSE(dwfl_thread_state_registers) (thread, firstreg, nregs, regs); ++ return true; ++ } ++ assert (nregs > 0); ++ return INTUSE(dwfl_thread_state_registers) (thread, firstreg, nregs, regs); ++} +diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c +index a6e4e41a..9472b041 100644 +--- a/libdwfl/linux-pid-attach.c ++++ b/libdwfl/linux-pid-attach.c +@@ -302,31 +302,6 @@ pid_getthread (Dwfl *dwfl __attribute__ ((unused)), pid_t tid, + return true; + } + +-/* Implement the ebl_set_initial_registers_tid setfunc callback. */ +- +-bool +-/* XXX No internal_function annotation, +- as this function gets passed as ebl_tid_registers_t *. */ +-__libdwfl_set_initial_registers_thread (int firstreg, unsigned nregs, +- const Dwarf_Word *regs, void *arg) +-{ +- Dwfl_Thread *thread = (Dwfl_Thread *) arg; +- if (firstreg == -1) +- { +- assert (nregs == 1); +- INTUSE(dwfl_thread_state_register_pc) (thread, *regs); +- return true; +- } +- else if (firstreg == -2) +- { +- assert (nregs == 1); +- INTUSE(dwfl_thread_state_registers) (thread, firstreg, nregs, regs); +- return true; +- } +- assert (nregs > 0); +- return INTUSE(dwfl_thread_state_registers) (thread, firstreg, nregs, regs); +-} +- + static bool + pid_set_initial_registers (Dwfl_Thread *thread, void *thread_arg) + { +-- +2.52.0 -- 2.53.0