41 #define MAX_SPE_FD 1024
44 #define spu_standalone_p() \
45 (symfile_objfile && symfile_objfile->obfd \
46 && bfd_get_arch (symfile_objfile->obfd) == bfd_arch_spu)
109 if (ocl_program_addr_base != NULL)
111 enum bfd_endian byte_order = bfd_big_endian (objfile->
obfd)?
112 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
124 newobj = XCNEW (
struct so_list);
133 link_ptr = &newobj->
next;
169 for (link_ptr = &head; *link_ptr; link_ptr = &(*link_ptr)->
next)
195 for (i = 0; i <
size; i += 4)
200 unsigned long long addr;
201 char annex[32],
id[100];
207 xsnprintf (annex,
sizeof annex,
"%d/object-id", fd);
210 if (len <= 0 || len >=
sizeof id)
213 if (sscanf (
id,
"0x%llx", &addr) != 1 || !addr)
217 newobj = XCNEW (
struct so_list);
226 link_ptr = &newobj->
next;
252 unsigned long long addr;
293 file_ptr nbytes, file_ptr
offset)
301 bfd_set_error (bfd_error_invalid_operation);
316 memset (sb, 0,
sizeof (
struct stat));
327 *open_closure = addr;
336 if (!bfd_check_format (nbfd, bfd_object))
349 char *original_name = strrchr (pathname,
'@');
352 unsigned long long addr;
360 if (sscanf (original_name,
"@0x%llx <%d>", &addr, &fd) != 2)
366 error (
_(
"Cannot read SPE executable at %s"), original_name);
369 spu_name = bfd_get_section_by_name (abfd,
".note.spu_name");
372 int sect_size = bfd_section_size (abfd, spu_name);
376 char *buf = alloca (sect_size - 20 + strlen (original_name) + 1);
378 bfd_get_section_contents (abfd, spu_name, buf, 20, sect_size - 20);
379 buf[sect_size - 20] =
'\0';
381 strcat (buf, original_name);
383 xfree ((
char *)abfd->filename);
384 abfd->filename = xstrdup (buf);
397 if (bfd_get_arch (objfile->
obfd) == bfd_arch_spu)
417 if (spe_event_sym.minsym)
446 if (event_sym.minsym && addr_sym.
minsym)
462 ocl_program_addr_base);
539 if (strstr (so->
so_name,
"CLRuntimeAccelCellSPU@") != NULL)
struct gdbarch * target_gdbarch(void)
struct symbol *(* lookup_lib_global_symbol)(struct objfile *objfile, const char *name, const domain_enum domain)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
char * hex_string(LONGEST num)
static void ocl_enable_break(struct objfile *objfile)
static void spu_relocate_main_executable(int spufs_fd)
#define SPUADDR(spu, addr)
#define OBSTACK_CALLOC(OBSTACK, NUMBER, TYPE)
void enable_breakpoints_after_startup(void)
void disable_breakpoints_before_startup(void)
struct breakpoint * create_solib_event_breakpoint(struct gdbarch *gdbarch, CORE_ADDR address)
static void * spu_bfd_iovec_open(bfd *nbfd, void *open_closure)
static const struct objfile_data * ocl_program_data_key
void set_solib_ops(struct gdbarch *gdbarch, const struct target_so_ops *new_ops)
#define BMSYMBOL_VALUE_ADDRESS(symbol)
static void spu_solib_loaded(struct so_list *so)
static void append_ocl_sos(struct so_list **link_ptr)
#define SPUADDR_SPU(addr)
initialize_file_ftype _initialize_spu_solib
enum domain_enum_tag domain_enum
void(* relocate_section_addresses)(struct so_list *so, struct target_section *)
#define spu_standalone_p()
void internal_error(const char *file, int line, const char *fmt,...)
struct thread_info * inferior_thread(void)
void(* solib_create_inferior_hook)(int from_tty)
struct so_list *(* current_sos)(void)
void objfile_relocate(struct objfile *objfile, const struct section_offsets *new_offsets)
bfd *(* bfd_open)(char *pathname)
static int spu_bfd_iovec_stat(bfd *abfd, void *stream, struct stat *sb)
static struct so_list * spu_current_sos(void)
struct symbol * lookup_global_symbol_from_objfile(struct objfile *main_objfile, const char *name, const domain_enum domain)
struct obstack objfile_obstack
#define ALL_OBJFILES(obj)
static void spu_solib_create_inferior_hook(int from_tty)
#define CATCH(EXCEPTION, MASK)
static void spu_relocate_section_addresses(struct so_list *so, struct target_section *sec)
struct target_ops current_target
void gdb_bfd_unref(struct bfd *abfd)
void initialize_file_ftype(void)
CORE_ADDR gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
void target_resume(ptid_t ptid, int step, enum gdb_signal signal)
static void spu_skip_standalone_loader(void)
char so_original_name[SO_NAME_MAX_PATH_SIZE]
int solib_read_symbols(struct so_list *so, int flags)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
static int spu_enable_break(struct objfile *objfile)
struct obj_section * sections
char so_name[SO_NAME_MAX_PATH_SIZE]
struct thread_control_state control
bfd * gdb_bfd_openr_iovec(const char *filename, const char *target, void *(*open_func)(struct bfd *nbfd, void *open_closure), void *open_closure, file_ptr(*pread_func)(struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), int(*close_func)(struct bfd *nbfd, void *stream), int(*stat_func)(struct bfd *abfd, void *stream, struct stat *sb))
static bfd * spu_bfd_open(char *pathname)
#define target_has_execution
ptid_t target_wait(ptid_t ptid, struct target_waitstatus *status, int options)
struct bfd_section * the_bfd_section
void set_spu_solib_ops(struct gdbarch *gdbarch)
void throw_exception(struct gdb_exception exception)
struct target_so_ops svr4_so_ops
int xsnprintf(char *str, size_t size, const char *format,...)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
struct obj_section * sections_end
struct minimal_symbol * minsym
void(* free_so)(struct so_list *so)
static struct symbol * spu_lookup_lib_symbol(struct objfile *objfile, const char *name, const domain_enum domain)
static int spu_bfd_iovec_close(bfd *nbfd, void *stream)
static bfd * spu_bfd_fopen(char *name, CORE_ADDR addr)
struct inferior * current_inferior(void)
LONGEST target_read(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *buf, ULONGEST offset, LONGEST len)
static void spu_free_so(struct so_list *so)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
void set_executing(ptid_t ptid, int executing)
static file_ptr spu_bfd_iovec_pread(bfd *abfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset)
void error(const char *fmt,...)
struct observer * observer_attach_solib_loaded(observer_solib_loaded_ftype *f)
__extension__ enum domain_enum_tag domain
const ULONGEST const LONGEST len