/* nto-tdep.c - general QNX Neutrino target functionality.
- Copyright (C) 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by QNX Software Systems Ltd.
#define PATH_FMT "%s/lib:%s/usr/lib:%s/usr/photon/lib:%s/usr/photon/dll:%s/lib/dll"
nto_root = nto_target ();
- if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, "i386") == 0)
+ if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "i386") == 0)
{
arch = "x86";
endian = "";
}
- else if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name,
+ else if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name,
"rs6000") == 0
- || strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name,
+ || strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name,
"powerpc") == 0)
{
arch = "ppc";
}
else
{
- arch = gdbarch_bfd_arch_info (current_gdbarch)->arch_name;
- endian = gdbarch_byte_order (current_gdbarch)
+ arch = gdbarch_bfd_arch_info (target_gdbarch)->arch_name;
+ endian = gdbarch_byte_order (target_gdbarch)
== BFD_ENDIAN_BIG ? "be" : "le";
}
else
base++; /* Skip over '/'. */
- ret = openp (buf, 1, base, o_flags, 0, temp_pathname);
+ ret = openp (buf, 1, base, o_flags, temp_pathname);
if (ret < 0 && base != solib)
{
sprintf (arch_path, "/%s", solib);
const char *arch;
nto_root = nto_target ();
- if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, "i386") == 0)
+ if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "i386") == 0)
{
arch = "x86";
endian = "";
}
- else if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name,
+ else if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name,
"rs6000") == 0
- || strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name,
+ || strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name,
"powerpc") == 0)
{
arch = "ppc";
}
else
{
- arch = gdbarch_bfd_arch_info (current_gdbarch)->arch_name;
- endian = gdbarch_byte_order (current_gdbarch)
+ arch = gdbarch_bfd_arch_info (target_gdbarch)->arch_name;
+ endian = gdbarch_byte_order (target_gdbarch)
== BFD_ENDIAN_BIG ? "be" : "le";
}
if (so->lm_info->l_addr == (CORE_ADDR)-1)
{
struct link_map_offsets *lmo = nto_fetch_link_map_offsets ();
+ struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
so->lm_info->l_addr =
- extract_typed_address (so->lm_info->lm + lmo->l_addr_offset,
- builtin_type_void_data_ptr);
+ extract_typed_address (so->lm_info->lm + lmo->l_addr_offset, ptr_type);
}
return so->lm_info->l_addr;
}
static CORE_ADDR
nto_truncate_ptr (CORE_ADDR addr)
{
- if (gdbarch_ptr_bit (current_gdbarch) == sizeof (CORE_ADDR) * 8)
+ if (gdbarch_ptr_bit (target_gdbarch) == sizeof (CORE_ADDR) * 8)
/* We don't need to truncate anything, and the bit twiddling below
will fail due to overflow problems. */
return addr;
else
- return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (current_gdbarch)) - 1);
+ return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (target_gdbarch)) - 1);
}
-Elf_Internal_Phdr *
+static Elf_Internal_Phdr *
find_load_phdr (bfd *abfd)
{
Elf_Internal_Phdr *phdr;
}
void
-nto_relocate_section_addresses (struct so_list *so, struct section_table *sec)
+nto_relocate_section_addresses (struct so_list *so, struct target_section *sec)
{
/* Neutrino treats the l_addr base address field in link.h as different than
the base address in the System V ABI and so the offset needs to be
#endif
}
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_nto_tdep;
+
void
_initialize_nto_tdep (void)
{