From: Tom Jones Date: Fri, 26 Jan 2024 15:16:57 +0000 (+0000) Subject: vppinfra: Make program counter printing more portable X-Git-Tag: v24.10-rc0~260 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F68%2F40268%2F2;p=vpp.git vppinfra: Make program counter printing more portable Finding the program counter in the ucontext struct is platform and architecture specific, place the Linux checks inside an #ifdef and add a look up for the FreeBSD amd64 specific naming. Type: improvement Change-Id: I42fcef5f20227c23d84acee336e37c4870146bb4 Signed-off-by: Tom Jones --- diff --git a/src/vppinfra/unix-formats.c b/src/vppinfra/unix-formats.c index d46b00a450c..297a3fdb8c2 100644 --- a/src/vppinfra/unix-formats.c +++ b/src/vppinfra/unix-formats.c @@ -432,6 +432,7 @@ u8 * format_ucontext_pc (u8 * s, va_list * args) uc = va_arg (*args, ucontext_t *); +#ifdef __linux__ #if defined (powerpc) regs = &uc->uc_mcontext.uc_regs->gregs[0]; #elif defined (powerpc64) @@ -454,6 +455,13 @@ u8 * format_ucontext_pc (u8 * s, va_list * args) reg_no = 0; regs = 0; #endif +#elif __FreeBSD__ +#if defined(__amd64__) + reg_no = 0; + regs = (void *) &uc->uc_mcontext.mc_rip; +#else +#endif /* __amd64__ */ +#endif /* __linux__ */ if (! regs) return format (s, "unsupported");