X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fnto-tdep.h;h=2410a03a4a689a96c066cf53d8cd29edb77840e2;hb=873de05c85f79a385863b39b1de2a7add9d15a07;hp=8d91b48de9b22b3d50c7e240fd038c1a1b6839bb;hpb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/nto-tdep.h b/gdb/nto-tdep.h index 8d91b48de9..2410a03a4a 100644 --- a/gdb/nto-tdep.h +++ b/gdb/nto-tdep.h @@ -1,6 +1,6 @@ /* nto-tdep.h - QNX Neutrino target header. - Copyright (C) 2003, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. Contributed by QNX Software Systems Ltd. @@ -19,21 +19,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef _NTO_TDEP_H -#define _NTO_TDEP_H +#ifndef NTO_TDEP_H +#define NTO_TDEP_H -#include "defs.h" #include "solist.h" #include "osabi.h" #include "regset.h" +#include "gdbthread.h" /* Target operations defined for Neutrino targets (-nto-tdep.c). */ struct nto_target_ops { -/* For 'maintenance debug nto-debug' command. */ - int internal_debugging; - /* The CPUINFO flags from the remote. Currently used by i386 for fxsave but future proofing other hosts. This is initialized in procfs_attach or nto_start_remote @@ -62,9 +59,9 @@ struct nto_target_ops and stuff it into the last argument. If regno is -1, calculate the size of the entire regset. Returns length of data, -1 if unknown regset, 0 if unknown register. */ - int (*register_area) (int, int, unsigned *); + int (*register_area) (struct gdbarch *, int, int, unsigned *); -/* Build the Neutrino register set info into the data buffer. +/* Build the Neutrino register set info into the data buffer. Return -1 if unknown regset, 0 otherwise. */ int (*regset_fill) (const struct regcache *, int, char *); @@ -79,8 +76,6 @@ struct nto_target_ops extern struct nto_target_ops current_nto_target; -#define nto_internal_debugging (current_nto_target.internal_debugging) - #define nto_cpuinfo_flags (current_nto_target.cpuinfo_flags) #define nto_cpuinfo_valid (current_nto_target.cpuinfo_valid) @@ -122,7 +117,7 @@ enum OSTYPE_NTO }; -/* These correspond to the DSMSG_* versions in dsmsgs.h. */ +/* These correspond to the DSMSG_* versions in dsmsgs.h. */ enum { NTO_REG_GENERAL, @@ -139,41 +134,61 @@ typedef struct _debug_regs qnx_reg64 padding[1024]; } nto_regset_t; -/* Generic functions in nto-tdep.c. */ +struct nto_thread_info : public private_thread_info +{ + short tid = 0; + unsigned char state = 0; + unsigned char flags = 0; + std::string name; +}; -void nto_init_solib_absolute_prefix (void); +static inline nto_thread_info * +get_nto_thread_info (thread_info *thread) +{ + return static_cast (thread->priv.get ()); +} -void nto_set_target(struct nto_target_ops *); +/* Per-inferior data, common for both procfs and remote. */ +struct nto_inferior_data +{ + /* Last stopped flags result from wait function */ + unsigned int stopped_flags = 0; -char **nto_parse_redirection (char *start_argv[], char **in, - char **out, char **err); + /* Last known stopped PC */ + CORE_ADDR stopped_pc = 0; +}; -int proc_iterate_over_mappings (int (*func) (int, CORE_ADDR)); +/* Generic functions in nto-tdep.c. */ + +void nto_init_solib_absolute_prefix (void); + +char **nto_parse_redirection (char *start_argv[], const char **in, + const char **out, const char **err); void nto_relocate_section_addresses (struct so_list *, - struct section_table *); + struct target_section *); int nto_map_arch_to_cputype (const char *); -int nto_find_and_open_solib (char *, unsigned, char **); +int nto_find_and_open_solib (const char *, unsigned, + gdb::unique_xmalloc_ptr *); enum gdb_osabi nto_elf_osabi_sniffer (bfd *abfd); void nto_initialize_signals (void); -void nto_generic_supply_gpregset (const struct regset *, struct regcache *, - int, const void *, size_t); - -void nto_generic_supply_fpregset (const struct regset *, struct regcache *, - int, const void *, size_t); - -void nto_generic_supply_altregset (const struct regset *, struct regcache *, - int, const void *, size_t); - /* Dummy function for initializing nto_target_ops on targets which do not define a particular regset. */ void nto_dummy_supply_regset (struct regcache *regcache, char *regs); int nto_in_dynsym_resolve_code (CORE_ADDR pc); -#endif +const char *nto_extra_thread_info (struct target_ops *self, struct thread_info *); + +LONGEST nto_read_auxv_from_initial_stack (CORE_ADDR inital_stack, + gdb_byte *readbuf, + LONGEST len, size_t sizeof_auxv_t); + +struct nto_inferior_data *nto_inferior_data (struct inferior *inf); + +#endif /* NTO_TDEP_H */