#include "gdbcore.h"
#include "gdbthread.h"
#include "regcache.h"
+#include "symfile.h"
#ifndef O_BINARY
#define O_BINARY 0
static int ignore (CORE_ADDR, char *);
-static int core_file_thread_alive (int tid);
+static int core_file_thread_alive (ptid_t tid);
static void init_core_ops (void);
{
if (cf->check_format (abfd))
{
- return (true);
+ return (1);
}
}
- return (false);
+ return (0);
}
/* Discard all vestiges of any previous core file and mark data and stack
if (core_bfd)
{
- inferior_pid = 0; /* Avoid confusion from thread stuff */
+ inferior_ptid = null_ptid; /* Avoid confusion from thread stuff */
/* Clear out solib state while the bfd is still open. See
comments in clear_solib in solib.c. */
static int
solib_add_stub (PTR from_ttyp)
{
- SOLIB_ADD (NULL, *(int *) from_ttyp, ¤t_target);
+ SOLIB_ADD (NULL, *(int *) from_ttyp, ¤t_target, auto_solib_add);
re_enable_breakpoints_in_shlibs ();
return 0;
}
thread_id = atoi (bfd_section_name (abfd, asect) + 5);
- add_thread (thread_id);
+ add_thread (pid_to_ptid (thread_id));
/* Warning, Will Robinson, looking at BFD private data! */
if (reg_sect != NULL
&& asect->filepos == reg_sect->filepos) /* Did we find .reg? */
- inferior_pid = thread_id; /* Yes, make it current */
+ inferior_ptid = pid_to_ptid (thread_id); /* Yes, make it current */
}
/* This routine opens and sets up the core file bfd. */
error ("\"%s\": Can't find sections: %s",
bfd_get_filename (core_bfd), bfd_errmsg (bfd_get_error ()));
- set_gdbarch_from_file (core_bfd);
+ /* If we have no exec file, try to set the architecture from the
+ core file. We don't do this unconditionally since an exec file
+ typically contains more information that helps us determine the
+ architecture than a core file. */
+ if (!exec_bfd)
+ set_gdbarch_from_file (core_bfd);
ontop = !push_target (&core_ops);
discard_cleanups (old_chain);
/* Now, set up the frame cache, and print the top of stack. */
flush_cached_frames ();
- select_frame (get_current_frame (), 0);
- print_stack_frame (selected_frame, selected_frame_level, 1);
+ select_frame (get_current_frame ());
+ print_stack_frame (deprecated_selected_frame,
+ frame_relative_level (deprecated_selected_frame), 1);
}
else
{
them to core_vec->core_read_registers, as the register set numbered
WHICH.
- If inferior_pid is zero, do the single-threaded thing: look for a
- section named NAME. If inferior_pid is non-zero, do the
+ If inferior_ptid is zero, do the single-threaded thing: look for a
+ section named NAME. If inferior_ptid is non-zero, do the
multi-threaded thing: look for a section named "NAME/PID", where
- PID is the shortest ASCII decimal representation of inferior_pid.
+ PID is the shortest ASCII decimal representation of inferior_ptid.
HUMAN_NAME is a human-readable name for the kind of registers the
NAME section contains, for use in error messages.
bfd_size_type size;
char *contents;
- if (inferior_pid)
- sprintf (section_name, "%s/%d", name, inferior_pid);
+ if (PIDGET (inferior_ptid))
+ sprintf (section_name, "%s/%d", name, PIDGET (inferior_ptid));
else
strcpy (section_name, name);
get_core_register_section (".reg2", 2, "floating-point", 0);
get_core_register_section (".reg-xfp", 3, "extended floating-point", 0);
- registers_fetched ();
+ deprecated_registers_fetched ();
}
static void
behaviour.
*/
static int
-core_file_thread_alive (int tid)
+core_file_thread_alive (ptid_t tid)
{
return 1;
}
core_ops.to_insert_breakpoint = ignore;
core_ops.to_remove_breakpoint = ignore;
core_ops.to_create_inferior = find_default_create_inferior;
- core_ops.to_clone_and_follow_inferior = find_default_clone_and_follow_inferior;
core_ops.to_thread_alive = core_file_thread_alive;
core_ops.to_stratum = core_stratum;
core_ops.to_has_memory = 1;