20#include "gdbsupport/common-defs.h"
24#define GDB_SI_SIZE 128
62 int _pad[((128 /
sizeof (int)) - 4)];
150 int _pad[((128 /
sizeof (int)) - 3)];
217 int _pad[((128 /
sizeof (int)) - 3)];
248 compat_x32_clock_t _utime;
249 compat_x32_clock_t _stime;
256 unsigned int _addr_lsb;
270#define cpt_si_pid _sifields._kill._pid
271#define cpt_si_uid _sifields._kill._uid
272#define cpt_si_timerid _sifields._timer._tid
273#define cpt_si_overrun _sifields._timer._overrun
274#define cpt_si_status _sifields._sigchld._status
275#define cpt_si_utime _sifields._sigchld._utime
276#define cpt_si_stime _sifields._sigchld._stime
277#define cpt_si_ptr _sifields._rt._sigval.sival_ptr
278#define cpt_si_addr _sifields._sigfault._addr
279#define cpt_si_addr_lsb _sifields._sigfault._addr_lsb
280#define cpt_si_lower _sifields._sigfault.si_addr_bnd._lower
281#define cpt_si_upper _sifields._sigfault.si_addr_bnd._upper
282#define cpt_si_band _sifields._sigpoll._band
283#define cpt_si_fd _sifields._sigpoll._fd
289#define si_timerid si_timer1
292#define si_overrun si_timer2
315 memcpy (&from_ptrace, from,
sizeof (from_ptrace));
316 memset (to, 0,
sizeof (*to));
324 to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
325 to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
326 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
328 else if (to->
si_code == SI_USER)
330 to->cpt_si_pid = from_ptrace.cpt_si_pid;
331 to->cpt_si_uid = from_ptrace.cpt_si_uid;
339 to->cpt_si_addr = from_ptrace.cpt_si_addr;
340 to->cpt_si_lower = from_ptrace.cpt_si_lower;
341 to->cpt_si_upper = from_ptrace.cpt_si_upper;
346 to->cpt_si_pid = from_ptrace.cpt_si_pid;
347 to->cpt_si_uid = from_ptrace.cpt_si_uid;
348 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
355 to->cpt_si_pid = from_ptrace.cpt_si_pid;
356 to->cpt_si_uid = from_ptrace.cpt_si_uid;
357 to->cpt_si_status = from_ptrace.cpt_si_status;
358 to->cpt_si_utime = from_ptrace.cpt_si_utime;
359 to->cpt_si_stime = from_ptrace.cpt_si_stime;
365 to->cpt_si_addr = from_ptrace.cpt_si_addr;
368 to->cpt_si_band = from_ptrace.cpt_si_band;
369 to->cpt_si_fd = from_ptrace.cpt_si_fd;
372 to->cpt_si_pid = from_ptrace.cpt_si_pid;
373 to->cpt_si_uid = from_ptrace.cpt_si_uid;
374 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
387 memset (&to_ptrace, 0,
sizeof (to_ptrace));
393 if (to_ptrace.
si_code == SI_TIMER)
395 to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
396 to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
397 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
399 else if (to_ptrace.
si_code == SI_USER)
401 to_ptrace.cpt_si_pid = from->cpt_si_pid;
402 to_ptrace.cpt_si_uid = from->cpt_si_uid;
406 to_ptrace.cpt_si_pid = from->cpt_si_pid;
407 to_ptrace.cpt_si_uid = from->cpt_si_uid;
408 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
415 to_ptrace.cpt_si_pid = from->cpt_si_pid;
416 to_ptrace.cpt_si_uid = from->cpt_si_uid;
417 to_ptrace.cpt_si_status = from->cpt_si_status;
418 to_ptrace.cpt_si_utime = from->cpt_si_utime;
419 to_ptrace.cpt_si_stime = from->cpt_si_stime;
425 to_ptrace.cpt_si_addr = from->cpt_si_addr;
426 to_ptrace.cpt_si_addr_lsb = from->cpt_si_addr_lsb;
429 to_ptrace.cpt_si_band = from->cpt_si_band;
430 to_ptrace.cpt_si_fd = from->cpt_si_fd;
433 to_ptrace.cpt_si_pid = from->cpt_si_pid;
434 to_ptrace.cpt_si_uid = from->cpt_si_uid;
435 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
439 memcpy (to, &to_ptrace,
sizeof (to_ptrace));
446 const siginfo_t *from)
450 memcpy (&from_ptrace, from,
sizeof (from_ptrace));
451 memset (to, 0,
sizeof (*to));
453 to->si_signo = from_ptrace.
si_signo;
454 to->si_errno = from_ptrace.
si_errno;
455 to->si_code = from_ptrace.
si_code;
457 if (to->si_code == SI_TIMER)
459 to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
460 to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
461 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
463 else if (to->si_code == SI_USER)
465 to->cpt_si_pid = from_ptrace.cpt_si_pid;
466 to->cpt_si_uid = from_ptrace.cpt_si_uid;
468 else if (to->si_code < 0)
470 to->cpt_si_pid = from_ptrace.cpt_si_pid;
471 to->cpt_si_uid = from_ptrace.cpt_si_uid;
472 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
476 switch (to->si_signo)
479 to->cpt_si_pid = from_ptrace.cpt_si_pid;
480 to->cpt_si_uid = from_ptrace.cpt_si_uid;
481 to->cpt_si_status = from_ptrace.cpt_si_status;
482 memcpy (&to->cpt_si_utime, &from_ptrace.cpt_si_utime,
483 sizeof (to->cpt_si_utime));
484 memcpy (&to->cpt_si_stime, &from_ptrace.cpt_si_stime,
485 sizeof (to->cpt_si_stime));
491 to->cpt_si_addr = from_ptrace.cpt_si_addr;
494 to->cpt_si_band = from_ptrace.cpt_si_band;
495 to->cpt_si_fd = from_ptrace.cpt_si_fd;
498 to->cpt_si_pid = from_ptrace.cpt_si_pid;
499 to->cpt_si_uid = from_ptrace.cpt_si_uid;
500 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
512 const compat_x32_siginfo_t *from)
516 memset (&to_ptrace, 0,
sizeof (to_ptrace));
517 to_ptrace.
si_signo = from->si_signo;
518 to_ptrace.
si_errno = from->si_errno;
519 to_ptrace.
si_code = from->si_code;
521 if (to_ptrace.
si_code == SI_TIMER)
523 to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
524 to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
525 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
527 else if (to_ptrace.
si_code == SI_USER)
529 to_ptrace.cpt_si_pid = from->cpt_si_pid;
530 to_ptrace.cpt_si_uid = from->cpt_si_uid;
534 to_ptrace.cpt_si_pid = from->cpt_si_pid;
535 to_ptrace.cpt_si_uid = from->cpt_si_uid;
536 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
543 to_ptrace.cpt_si_pid = from->cpt_si_pid;
544 to_ptrace.cpt_si_uid = from->cpt_si_uid;
545 to_ptrace.cpt_si_status = from->cpt_si_status;
546 memcpy (&to_ptrace.cpt_si_utime, &from->cpt_si_utime,
547 sizeof (to_ptrace.cpt_si_utime));
548 memcpy (&to_ptrace.cpt_si_stime, &from->cpt_si_stime,
549 sizeof (to_ptrace.cpt_si_stime));
555 to_ptrace.cpt_si_addr = from->cpt_si_addr;
558 to_ptrace.cpt_si_band = from->cpt_si_band;
559 to_ptrace.cpt_si_fd = from->cpt_si_fd;
562 to_ptrace.cpt_si_pid = from->cpt_si_pid;
563 to_ptrace.cpt_si_uid = from->cpt_si_uid;
564 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
568 memcpy (to, &to_ptrace,
sizeof (to_ptrace));
598 (compat_x32_siginfo_t *) inf);
static void siginfo_from_compat_siginfo(siginfo_t *to, const compat_siginfo_t *from)
static void compat_x32_siginfo_from_siginfo(compat_x32_siginfo_t *to, const siginfo_t *from)
int amd64_linux_siginfo_fixup_common(siginfo_t *ptrace, gdb_byte *inf, int direction, enum amd64_siginfo_fixup_mode mode)
nat_siginfo_t ptrace_siginfo_t
gdb_static_assert(sizeof(siginfo_t)==GDB_SI_SIZE)
long __attribute__((__aligned__(4)))
static void siginfo_from_compat_x32_siginfo(siginfo_t *to, const compat_x32_siginfo_t *from)
static void compat_siginfo_from_siginfo(compat_siginfo_t *to, const siginfo_t *from)
unsigned int compat_uptr_t
#define ptrace(request, pid, addr, data)
int _pad[((128/sizeof(int)) - 3)]
struct compat_siginfo_t::@15::@20::@22 si_addr_bnd
union compat_siginfo_t::@15 _sifields
struct compat_siginfo_t::@15::@21 _sigpoll
struct compat_siginfo_t::@15::@16 _kill
struct compat_siginfo_t::@15::@20 _sigfault
struct compat_siginfo_t::@15::@19 _sigchld
struct compat_siginfo_t::@15::@18 _rt
struct compat_siginfo_t::@15::@17 _timer
struct nat_siginfo_t::@7::@12 _sigfault
struct nat_siginfo_t::@7::@13 _sigpoll
struct nat_siginfo_t::@7::@11 _sigchld
int _pad[((128/sizeof(int)) - 4)]
union nat_siginfo_t::@7 _sifields
struct nat_siginfo_t::@7::@12::@14 si_addr_bnd
struct nat_siginfo_t::@7::@8 _kill
struct nat_siginfo_t::@7::@9 _timer
struct nat_siginfo_t::@7::@10 _rt