24 #define GDB_SI_SIZE 128 62 int _pad[((128 /
sizeof (int)) - 4)];
150 int _pad[((128 /
sizeof (int)) - 3)];
209 typedef struct compat_x32_siginfo
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_band _sifields._sigpoll._band 281 #define cpt_si_fd _sifields._sigpoll._fd 287 #define si_timerid si_timer1 290 #define si_overrun si_timer2 309 memcpy (&from_ptrace, from,
sizeof (from_ptrace));
310 memset (to, 0,
sizeof (*to));
318 to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
319 to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
320 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
322 else if (to->
si_code == SI_USER)
324 to->cpt_si_pid = from_ptrace.cpt_si_pid;
325 to->cpt_si_uid = from_ptrace.cpt_si_uid;
329 to->cpt_si_pid = from_ptrace.cpt_si_pid;
330 to->cpt_si_uid = from_ptrace.cpt_si_uid;
331 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
338 to->cpt_si_pid = from_ptrace.cpt_si_pid;
339 to->cpt_si_uid = from_ptrace.cpt_si_uid;
340 to->cpt_si_status = from_ptrace.cpt_si_status;
341 to->cpt_si_utime = from_ptrace.cpt_si_utime;
342 to->cpt_si_stime = from_ptrace.cpt_si_stime;
348 to->cpt_si_addr = from_ptrace.cpt_si_addr;
351 to->cpt_si_band = from_ptrace.cpt_si_band;
352 to->cpt_si_fd = from_ptrace.cpt_si_fd;
355 to->cpt_si_pid = from_ptrace.cpt_si_pid;
356 to->cpt_si_uid = from_ptrace.cpt_si_uid;
357 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
370 memset (&to_ptrace, 0,
sizeof (to_ptrace));
376 if (to_ptrace.
si_code == SI_TIMER)
378 to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
379 to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
380 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
382 else if (to_ptrace.
si_code == SI_USER)
384 to_ptrace.cpt_si_pid = from->cpt_si_pid;
385 to_ptrace.cpt_si_uid = from->cpt_si_uid;
389 to_ptrace.cpt_si_pid = from->cpt_si_pid;
390 to_ptrace.cpt_si_uid = from->cpt_si_uid;
391 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
398 to_ptrace.cpt_si_pid = from->cpt_si_pid;
399 to_ptrace.cpt_si_uid = from->cpt_si_uid;
400 to_ptrace.cpt_si_status = from->cpt_si_status;
401 to_ptrace.cpt_si_utime = from->cpt_si_utime;
402 to_ptrace.cpt_si_stime = from->cpt_si_stime;
408 to_ptrace.cpt_si_addr = from->cpt_si_addr;
409 to_ptrace.cpt_si_addr_lsb = from->cpt_si_addr_lsb;
412 to_ptrace.cpt_si_band = from->cpt_si_band;
413 to_ptrace.cpt_si_fd = from->cpt_si_fd;
416 to_ptrace.cpt_si_pid = from->cpt_si_pid;
417 to_ptrace.cpt_si_uid = from->cpt_si_uid;
418 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
422 memcpy (to, &to_ptrace,
sizeof (to_ptrace));
429 const siginfo_t *from)
433 memcpy (&from_ptrace, from,
sizeof (from_ptrace));
434 memset (to, 0,
sizeof (*to));
436 to->si_signo = from_ptrace.
si_signo;
437 to->si_errno = from_ptrace.
si_errno;
438 to->si_code = from_ptrace.
si_code;
440 if (to->si_code == SI_TIMER)
442 to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
443 to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
444 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
446 else if (to->si_code == SI_USER)
448 to->cpt_si_pid = from_ptrace.cpt_si_pid;
449 to->cpt_si_uid = from_ptrace.cpt_si_uid;
451 else if (to->si_code < 0)
453 to->cpt_si_pid = from_ptrace.cpt_si_pid;
454 to->cpt_si_uid = from_ptrace.cpt_si_uid;
455 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
459 switch (to->si_signo)
462 to->cpt_si_pid = from_ptrace.cpt_si_pid;
463 to->cpt_si_uid = from_ptrace.cpt_si_uid;
464 to->cpt_si_status = from_ptrace.cpt_si_status;
465 memcpy (&to->cpt_si_utime, &from_ptrace.cpt_si_utime,
466 sizeof (to->cpt_si_utime));
467 memcpy (&to->cpt_si_stime, &from_ptrace.cpt_si_stime,
468 sizeof (to->cpt_si_stime));
474 to->cpt_si_addr = from_ptrace.cpt_si_addr;
477 to->cpt_si_band = from_ptrace.cpt_si_band;
478 to->cpt_si_fd = from_ptrace.cpt_si_fd;
481 to->cpt_si_pid = from_ptrace.cpt_si_pid;
482 to->cpt_si_uid = from_ptrace.cpt_si_uid;
483 to->cpt_si_ptr = from_ptrace.cpt_si_ptr;
495 const compat_x32_siginfo_t *from)
499 memset (&to_ptrace, 0,
sizeof (to_ptrace));
500 to_ptrace.
si_signo = from->si_signo;
501 to_ptrace.
si_errno = from->si_errno;
502 to_ptrace.
si_code = from->si_code;
504 if (to_ptrace.
si_code == SI_TIMER)
506 to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
507 to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
508 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
510 else if (to_ptrace.
si_code == SI_USER)
512 to_ptrace.cpt_si_pid = from->cpt_si_pid;
513 to_ptrace.cpt_si_uid = from->cpt_si_uid;
517 to_ptrace.cpt_si_pid = from->cpt_si_pid;
518 to_ptrace.cpt_si_uid = from->cpt_si_uid;
519 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
526 to_ptrace.cpt_si_pid = from->cpt_si_pid;
527 to_ptrace.cpt_si_uid = from->cpt_si_uid;
528 to_ptrace.cpt_si_status = from->cpt_si_status;
529 memcpy (&to_ptrace.cpt_si_utime, &from->cpt_si_utime,
530 sizeof (to_ptrace.cpt_si_utime));
531 memcpy (&to_ptrace.cpt_si_stime, &from->cpt_si_stime,
532 sizeof (to_ptrace.cpt_si_stime));
538 to_ptrace.cpt_si_addr = from->cpt_si_addr;
541 to_ptrace.cpt_si_band = from->cpt_si_band;
542 to_ptrace.cpt_si_fd = from->cpt_si_fd;
545 to_ptrace.cpt_si_pid = from->cpt_si_pid;
546 to_ptrace.cpt_si_uid = from->cpt_si_uid;
547 to_ptrace.cpt_si_ptr = from->cpt_si_ptr;
551 memcpy (to, &to_ptrace,
sizeof (to_ptrace));
581 (
struct compat_x32_siginfo *) inf);
struct nat_siginfo::@21::@25 _sigchld
struct compat_siginfo::@14::@16 _timer
struct compat_siginfo compat_siginfo_t
gdb_static_assert(sizeof(siginfo_t)==GDB_SI_SIZE)
void * memset(T *s, int c, size_t n)=delete
struct nat_siginfo::@21::@26::@28 si_addr_bnd
static void compat_siginfo_from_siginfo(compat_siginfo_t *to, const siginfo_t *from)
union compat_siginfo::@14 _sifields
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
int _pad[((128/sizeof(int)) - 3)]
struct compat_siginfo::@14::@15 _kill
struct nat_siginfo::@21::@22 _kill
struct compat_siginfo::@14::@19 _sigfault
struct nat_siginfo::@21::@26 _sigfault
long __attribute__((__aligned__(4)))
struct nat_siginfo::@21::@23 _timer
unsigned int compat_uptr_t
struct nat_siginfo::@21::@24 _rt
struct compat_siginfo::@14::@17 _rt
struct compat_siginfo::@14::@20 _sigpoll
static void compat_x32_siginfo_from_siginfo(compat_x32_siginfo_t *to, const siginfo_t *from)
static void siginfo_from_compat_x32_siginfo(siginfo_t *to, const compat_x32_siginfo_t *from)
union nat_sigval nat_sigval_t
struct nat_siginfo::@21::@27 _sigpoll
struct compat_siginfo::@29::@34::@36 si_addr_bnd
union compat_sigval compat_sigval_t
struct nat_siginfo nat_siginfo_t
int _pad[((128/sizeof(int)) - 4)]
union nat_siginfo::@21 _sifields
unsigned int compat_uptr_t
struct compat_siginfo::@14::@18 _sigchld
static void siginfo_from_compat_siginfo(siginfo_t *to, const compat_siginfo_t *from)