35 #define QNX_NOTE_NAME "QNX" 36 #define QNX_INFO_SECT_NAME "QNX_info" 39 #include <sys/cygwin.h> 44 #elif defined(__sun__) || defined(linux) 57 char *p = getenv (
"QNX_TARGET");
60 static char buf[PATH_MAX];
62 cygwin_conv_path (CCP_WIN_A_TO_POSIX, p, buf, PATH_MAX);
76 if (!strcmp (arch,
"i386") || !strcmp (arch,
"x86"))
78 if (!strcmp (arch,
"rs6000") || !strcmp (arch,
"powerpc"))
80 if (!strcmp (arch,
"mips"))
82 if (!strcmp (arch,
"arm"))
84 if (!strcmp (arch,
"sh"))
93 char *buf, *arch_path, *nto_root;
97 int arch_len, len, ret;
99 "%s/lib:%s/usr/lib:%s/usr/photon/lib:%s/usr/photon/dll:%s/lib/dll" 119 == BFD_ENDIAN_BIG ?
"be" :
"le";
125 arch_len = (strlen (nto_root) + strlen (arch) + strlen (endian) + 2
127 arch_path = (
char *) alloca (arch_len);
128 xsnprintf (arch_path, arch_len,
"%s/%s%s", nto_root, arch, endian);
130 len = strlen (
PATH_FMT) + strlen (arch_path) * 5 + 1;
131 buf = (
char *) alloca (len);
135 base = lbasename (solib);
138 if (ret < 0 && base != solib)
140 xsnprintf (arch_path, arch_len,
"/%s", solib);
141 ret = open (arch_path, o_flags, 0);
147 *temp_pathname = NULL;
156 char buf[PATH_MAX * 2], arch_path[PATH_MAX];
179 == BFD_ENDIAN_BIG ?
"be" :
"le";
182 xsnprintf (arch_path,
sizeof (arch_path),
"%s/%s%s", nto_root, arch, endian);
184 xsnprintf (buf,
sizeof (buf),
"set solib-absolute-prefix %s", arch_path);
193 const char *in, *out, *
err, *p;
196 for (n = 0; pargv[n]; n++);
205 for (i = 0, n = 0; n < argc; n++)
224 else if (*p++ ==
'2' && *p++ ==
'>')
226 if (*p ==
'&' && *(p + 1) ==
'1')
234 argv[i++] = pargv[n];
261 static Elf_Internal_Phdr *
264 Elf_Internal_Phdr *phdr;
267 if (!elf_tdata (abfd))
270 phdr = elf_tdata (abfd)->phdr;
271 for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++)
273 if (phdr->p_type == PT_LOAD && (phdr->p_flags & PF_X))
286 unsigned vaddr = phdr ? phdr->p_vaddr : 0;
311 const char *sectname;
312 unsigned int sectsize;
315 unsigned int namelen;
317 const unsigned sizeof_Elf_Nhdr = 12;
319 sectname = bfd_get_section_name (abfd, sect);
320 sectsize = bfd_section_size (abfd, sect);
327 else if (sectname != NULL && strstr (sectname,
"note") != NULL
328 && sectsize > sizeof_Elf_Nhdr)
330 note =
XNEWVEC (
char, sectsize);
331 bfd_get_section_contents (abfd, sect, note, 0, sectsize);
332 namelen = (
unsigned int) bfd_h_get_32 (abfd, note);
333 name = note + sizeof_Elf_Nhdr;
334 if (sectsize >= namelen + sizeof_Elf_Nhdr
348 bfd_map_over_sections (abfd,
383 if (ti != NULL && ti->
priv != NULL)
403 #if defined(SIGSELECT) 409 #if defined(SIGPHOTON) 419 LONGEST len,
size_t sizeof_auxv_t)
427 enum bfd_endian byte_order;
430 if (sizeof_auxv_t == 16)
460 data_ofs += (anint + 2) * ptr_size;
473 data_ofs += ptr_size;
475 initial_stack += data_ofs;
479 while (len_read <= len-sizeof_auxv_t)
488 if (a_type == AT_NULL)
490 buff += sizeof_auxv_t;
491 len_read += sizeof_auxv_t;
531 if (inf_data == NULL)
struct gdbarch * target_gdbarch(void)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t err
static CORE_ADDR nto_truncate_ptr(CORE_ADDR addr)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
static char default_nto_target[]
void _initialize_nto_tdep(void)
void * memset(T *s, int c, size_t n)=delete
static struct nto_inferior_data * nto_new_inferior_data(void)
static const char * nto_thread_state_str[]
gdb::unique_xmalloc_ptr< char > gdb_realpath(const char *filename)
static CORE_ADDR lm_addr(struct so_list *so)
LONGEST nto_read_auxv_from_initial_stack(CORE_ADDR initial_stack, gdb_byte *readbuf, LONGEST len, size_t sizeof_auxv_t)
#define QNX_INFO_SECT_NAME
struct nto_inferior_data * nto_inferior_data(struct inferior *const inferior)
void execute_command(const char *, int)
int nto_find_and_open_solib(const char *solib, unsigned o_flags, char **temp_pathname)
#define OPF_TRY_CWD_FIRST
struct nto_target_ops current_nto_target
void nto_initialize_signals(void)
int openp(const char *, int, const char *, int, char **)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
int signal_pass_update(int signo, int state)
int nto_map_arch_to_cputype(const char *arch)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static Elf_Internal_Phdr * find_load_phdr(bfd *abfd)
static const struct inferior_data * nto_inferior_data_reg
char ** nto_parse_redirection(char *pargv[], const char **pin, const char **pout, const char **perr)
int nto_in_dynsym_resolve_code(CORE_ADDR pc)
enum gdb_osabi nto_elf_osabi_sniffer(bfd *abfd)
void nto_init_solib_absolute_prefix(void)
struct bfd_section * the_bfd_section
enum gdb_signal gdb_signal_from_name(const char *)
static char * nto_target(void)
std::unique_ptr< private_thread_info > priv
static void nto_inferior_data_cleanup(struct inferior *const inf, void *const dat)
int xsnprintf(char *str, size_t size, const char *format,...)
void nto_relocate_section_addresses(struct so_list *so, struct target_section *sec)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static int in_plt_section(CORE_ADDR pc)
static void nto_sniff_abi_note_section(bfd *abfd, asection *sect, void *obj)
const char * nto_extra_thread_info(struct target_ops *self, struct thread_info *ti)
#define OPF_RETURN_REALPATH
struct inferior * current_inferior(void)
unsigned long long ULONGEST
static nto_thread_info * get_nto_thread_info(thread_info *thread)
const struct bfd_arch_info * gdbarch_bfd_arch_info(struct gdbarch *gdbarch)
int signal_print_update(int signo, int state)
void nto_dummy_supply_regset(struct regcache *regcache, char *regs)
int signal_stop_update(int signo, int state)