From 97e9c24c38513a69db81fe4c8206785c3a7050af Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 14 Mar 2024 21:28:44 +0100 Subject: [gdb/build] Fix build on postmarketos I tried building gdbserver on postmarketos (which is based on alpine linux, which uses musl libc), and ran into: ... gdbserver/linux-low.cc: In lambda function: gdbserver/linux-low.cc:1907:41: error: \ 'W_EXITCODE' was not declared in this scope 1907 | mark_lwp_dead (leader_lp, W_EXITCODE (0, 0), true); | ^~~~~~~~~~ ... The macro W_EXITCODE is not defined in gdbsupport/gdb_wait.h. OTOH, WSETEXIT is defined there, but unused: ... /* These are not defined in POSIX, but are used by our programs. */ #ifndef WSETEXIT # ifdef W_EXITCODE #define WSETEXIT(w,status) ((w) = W_EXITCODE(status,0)) # else #define WSETEXIT(w,status) ((w) = (0 | ((status) << 8))) # endif #endif ... Fix this by dropping the WSETEXIT definition, and instead defining W_EXITCODE. Tested on x86_64-linux, in combination with an "#undef W_EXITCODE" to make sure the definition is exercised. Approved-By: Tom Tromey PR build/31483 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31483 --- gdbsupport/gdb_wait.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gdbsupport/gdb_wait.h b/gdbsupport/gdb_wait.h index e9e3958..c6348db 100644 --- a/gdbsupport/gdb_wait.h +++ b/gdbsupport/gdb_wait.h @@ -99,12 +99,8 @@ extern int windows_status_to_termsig (unsigned long); /* These are not defined in POSIX, but are used by our programs. */ -#ifndef WSETEXIT -# ifdef W_EXITCODE -#define WSETEXIT(w,status) ((w) = W_EXITCODE(status,0)) -# else -#define WSETEXIT(w,status) ((w) = (0 | ((status) << 8))) -# endif +#ifndef W_EXITCODE +#define W_EXITCODE(status, sig) ((status) << 8 | (sig)) #endif #ifndef W_STOPCODE -- cgit v1.1