| /* Copyright (C) 2009-2018 Free Software Foundation, Inc. | |
| Contributed by ARM Ltd. | |
| This file is part of GDB. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 3 of the License, or | |
| (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
| #ifndef AARCH64_LINUX_H | |
| #define AARCH64_LINUX_H 1 | |
| #include <signal.h> | |
| /* Defines ps_err_e, struct ps_prochandle. */ | |
| #include "gdb_proc_service.h" | |
| typedef int compat_int_t; | |
| typedef unsigned int compat_uptr_t; | |
| typedef int compat_time_t; | |
| typedef int compat_timer_t; | |
| typedef int compat_clock_t; | |
| struct compat_timeval | |
| { | |
| compat_time_t tv_sec; | |
| int tv_usec; | |
| }; | |
| typedef union compat_sigval | |
| { | |
| compat_int_t sival_int; | |
| compat_uptr_t sival_ptr; | |
| } compat_sigval_t; | |
| typedef struct compat_siginfo | |
| { | |
| int si_signo; | |
| int si_errno; | |
| int si_code; | |
| union | |
| { | |
| int _pad[((128 / sizeof (int)) - 3)]; | |
| /* kill() */ | |
| struct | |
| { | |
| unsigned int _pid; | |
| unsigned int _uid; | |
| } _kill; | |
| /* POSIX.1b timers */ | |
| struct | |
| { | |
| compat_timer_t _tid; | |
| int _overrun; | |
| compat_sigval_t _sigval; | |
| } _timer; | |
| /* POSIX.1b signals */ | |
| struct | |
| { | |
| unsigned int _pid; | |
| unsigned int _uid; | |
| compat_sigval_t _sigval; | |
| } _rt; | |
| /* SIGCHLD */ | |
| struct | |
| { | |
| unsigned int _pid; | |
| unsigned int _uid; | |
| int _status; | |
| compat_clock_t _utime; | |
| compat_clock_t _stime; | |
| } _sigchld; | |
| /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | |
| struct | |
| { | |
| unsigned int _addr; | |
| } _sigfault; | |
| /* SIGPOLL */ | |
| struct | |
| { | |
| int _band; | |
| int _fd; | |
| } _sigpoll; | |
| } _sifields; | |
| } compat_siginfo_t; | |
| #define cpt_si_pid _sifields._kill._pid | |
| #define cpt_si_uid _sifields._kill._uid | |
| #define cpt_si_timerid _sifields._timer._tid | |
| #define cpt_si_overrun _sifields._timer._overrun | |
| #define cpt_si_status _sifields._sigchld._status | |
| #define cpt_si_utime _sifields._sigchld._utime | |
| #define cpt_si_stime _sifields._sigchld._stime | |
| #define cpt_si_ptr _sifields._rt._sigval.sival_ptr | |
| #define cpt_si_addr _sifields._sigfault._addr | |
| #define cpt_si_band _sifields._sigpoll._band | |
| #define cpt_si_fd _sifields._sigpoll._fd | |
| void aarch64_siginfo_from_compat_siginfo (siginfo_t *to, | |
| compat_siginfo_t *from); | |
| void aarch64_compat_siginfo_from_siginfo (compat_siginfo_t *to, | |
| siginfo_t *from); | |
| void aarch64_linux_prepare_to_resume (struct lwp_info *lwp); | |
| void aarch64_linux_new_thread (struct lwp_info *lwp); | |
| /* Function to call when a thread is being deleted. */ | |
| void aarch64_linux_delete_thread (struct arch_lwp_info *arch_lwp); | |
| ps_err_e aarch64_ps_get_thread_area (struct ps_prochandle *ph, | |
| lwpid_t lwpid, int idx, void **base, | |
| int is_64bit_p); | |
| #endif /* AARCH64_LINUX_H */ |