projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix gdb build on 32-bit hosts w/ --enable-64-bit-bfd
[deliverable/binutils-gdb.git]
/
gdb
/
corelow.c
diff --git
a/gdb/corelow.c
b/gdb/corelow.c
index a81639542b91e99af450af1fcd380cd41c8a490e..7cc177c9d619e01fcaa66fa606191a207825019c 100644
(file)
--- a/
gdb/corelow.c
+++ b/
gdb/corelow.c
@@
-31,6
+31,7
@@
#include "command.h"
#include "bfd.h"
#include "target.h"
#include "command.h"
#include "bfd.h"
#include "target.h"
+#include "process-stratum-target.h"
#include "gdbcore.h"
#include "gdbthread.h"
#include "regcache.h"
#include "gdbcore.h"
#include "gdbthread.h"
#include "regcache.h"
@@
-61,7
+62,7
@@
static const target_info core_target_info = {
N_("Use a core file as a target. Specify the filename of the core file.")
};
N_("Use a core file as a target. Specify the filename of the core file.")
};
-class core_target final : public
target_ops
+class core_target final : public
process_stratum_target
{
public:
core_target ();
{
public:
core_target ();
@@
-89,9
+90,12
@@
public:
const char *thread_name (struct thread_info *) override;
const char *thread_name (struct thread_info *) override;
+ bool has_all_memory () override { return false; }
bool has_memory () override;
bool has_stack () override;
bool has_registers () override;
bool has_memory () override;
bool has_stack () override;
bool has_registers () override;
+ bool has_execution (ptid_t) override { return false; }
+
bool info_proc (const char *, enum info_proc_what) override;
/* A few helpers. */
bool info_proc (const char *, enum info_proc_what) override;
/* A few helpers. */
@@
-106,7
+110,7
@@
public:
void get_core_register_section (struct regcache *regcache,
const struct regset *regset,
const char *name,
void get_core_register_section (struct regcache *regcache,
const struct regset *regset,
const char *name,
- int min_size,
+ int
section_
min_size,
int which,
const char *human_name,
bool required);
int which,
const char *human_name,
bool required);
@@
-132,8
+136,6
@@
private: /* per-core data */
core_target::core_target ()
{
core_target::core_target ()
{
- to_stratum = process_stratum;
-
m_core_gdbarch = gdbarch_from_bfd (core_bfd);
/* Find a suitable core file handler to munch on core_bfd */
m_core_gdbarch = gdbarch_from_bfd (core_bfd);
/* Find a suitable core file handler to munch on core_bfd */
@@
-260,11
+262,9
@@
core_target::close ()
{
if (core_bfd)
{
{
if (core_bfd)
{
- int pid = ptid_get_pid (inferior_ptid);
inferior_ptid = null_ptid; /* Avoid confusion from thread
stuff. */
inferior_ptid = null_ptid; /* Avoid confusion from thread
stuff. */
- if (pid != 0)
- exit_inferior_silent (pid);
+ exit_inferior_silent (current_inferior ());
/* Clear out solib state while the bfd is still open. See
comments in clear_solib in solib.c. */
/* Clear out solib state while the bfd is still open. See
comments in clear_solib in solib.c. */
@@
-312,7
+312,7
@@
add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
inf->fake_pid_p = fake_pid_p;
}
inf->fake_pid_p = fake_pid_p;
}
- ptid = ptid_
build
(pid, lwpid, 0);
+ ptid = ptid_
t
(pid, lwpid, 0);
add_thread (ptid);
add_thread (ptid);
@@
-360,7
+360,6
@@
core_target_open (const char *arg, int from_tty)
{
const char *p;
int siggy;
{
const char *p;
int siggy;
- struct cleanup *old_chain;
int scratch_chan;
int flags;
int scratch_chan;
int flags;
@@
-424,12
+423,6
@@
core_target_open (const char *arg, int from_tty)
push_target (target);
target_holder.release ();
push_target (target);
target_holder.release ();
- /* Do this before acknowledging the inferior, so if
- post_create_inferior throws (can happen easilly if you're loading
- a core file with the wrong exec), we aren't left with threads
- from the previous inferior. */
- init_thread_list ();
-
inferior_ptid = null_ptid;
/* Need to flush the register cache (and the frame cache) from a
inferior_ptid = null_ptid;
/* Need to flush the register cache (and the frame cache) from a
@@
-446,7
+439,7
@@
core_target_open (const char *arg, int from_tty)
bfd_map_over_sections (core_bfd, add_to_thread_list,
bfd_get_section_by_name (core_bfd, ".reg"));
bfd_map_over_sections (core_bfd, add_to_thread_list,
bfd_get_section_by_name (core_bfd, ".reg"));
- if (
ptid_equal (inferior_ptid, null_ptid)
)
+ if (
inferior_ptid == null_ptid
)
{
/* Either we found no .reg/NN section, and hence we have a
non-threaded core (single-threaded, from gdb's perspective),
{
/* Either we found no .reg/NN section, and hence we have a
non-threaded core (single-threaded, from gdb's perspective),
@@
-454,16
+447,16
@@
core_target_open (const char *arg, int from_tty)
which was the "main" thread. The latter case shouldn't
usually happen, but we're dealing with input here, which can
always be broken in different ways. */
which was the "main" thread. The latter case shouldn't
usually happen, but we're dealing with input here, which can
always be broken in different ways. */
-
struct thread_info *thread = first_thread_of_process (-1
);
+
thread_info *thread = first_thread_of_inferior (current_inferior ()
);
if (thread == NULL)
{
inferior_appeared (current_inferior (), CORELOW_PID);
if (thread == NULL)
{
inferior_appeared (current_inferior (), CORELOW_PID);
- inferior_ptid = p
id_to_ptid
(CORELOW_PID);
+ inferior_ptid = p
tid_t
(CORELOW_PID);
add_thread_silent (inferior_ptid);
}
else
add_thread_silent (inferior_ptid);
}
else
- switch_to_thread (thread
->ptid
);
+ switch_to_thread (thread);
}
post_create_inferior (target, from_tty);
}
post_create_inferior (target, from_tty);
@@
-572,7
+565,7
@@
void
core_target::get_core_register_section (struct regcache *regcache,
const struct regset *regset,
const char *name,
core_target::get_core_register_section (struct regcache *regcache,
const struct regset *regset,
const char *name,
- int min_size,
+ int
section_
min_size,
int which,
const char *human_name,
bool required)
int which,
const char *human_name,
bool required)
@@
-595,13
+588,13
@@
core_target::get_core_register_section (struct regcache *regcache,
}
size = bfd_section_size (core_bfd, section);
}
size = bfd_section_size (core_bfd, section);
- if (size < min_size)
+ if (size <
section_
min_size)
{
warning (_("Section `%s' in core file too small."),
section_name.c_str ());
return;
}
{
warning (_("Section `%s' in core file too small."),
section_name.c_str ());
return;
}
- if (size != min_size && !variable_size_section)
+ if (size !=
section_
min_size && !variable_size_section)
{
warning (_("Unexpected size of section `%s' in core file."),
section_name.c_str ());
{
warning (_("Unexpected size of section `%s' in core file."),
section_name.c_str ());
@@
-639,12
+632,17
@@
struct get_core_registers_cb_data
register note section. */
static void
register note section. */
static void
-get_core_registers_cb (const char *sect_name, int size,
+get_core_registers_cb (const char *sect_name, int s
upply_size, int collect_s
ize,
const struct regset *regset,
const char *human_name, void *cb_data)
{
auto *data = (get_core_registers_cb_data *) cb_data;
bool required = false;
const struct regset *regset,
const char *human_name, void *cb_data)
{
auto *data = (get_core_registers_cb_data *) cb_data;
bool required = false;
+ bool variable_size_section = (regset != NULL
+ && regset->flags & REGSET_VARIABLE_SIZE);
+
+ if (!variable_size_section)
+ gdb_assert (supply_size == collect_size);
if (strcmp (sect_name, ".reg") == 0)
{
if (strcmp (sect_name, ".reg") == 0)
{
@@
-661,7
+659,8
@@
get_core_registers_cb (const char *sect_name, int size,
/* The 'which' parameter is only used when no regset is provided.
Thus we just set it to -1. */
data->target->get_core_register_section (data->regcache, regset, sect_name,
/* The 'which' parameter is only used when no regset is provided.
Thus we just set it to -1. */
data->target->get_core_register_section (data->regcache, regset, sect_name,
- size, -1, human_name, required);
+ supply_size, -1, human_name,
+ required);
}
/* Get the registers out of a core file. This is the machine-
}
/* Get the registers out of a core file. This is the machine-
@@
-950,9
+949,9
@@
core_target::xfer_partial (enum target_object object, const char *annex,
return TARGET_XFER_E_IO;
default:
return TARGET_XFER_E_IO;
default:
- return this->beneath->xfer_partial (object, annex, readbuf,
- writebuf, offset, len,
- xfered_len);
+ return this->beneath
()
->xfer_partial (object, annex, readbuf,
+
writebuf, offset, len,
+
xfered_len);
}
}
}
}
@@
-987,7
+986,7
@@
core_target::read_description ()
return result;
}
return result;
}
- return this->beneath->read_description ();
+ return this->beneath
()
->read_description ();
}
const char *
}
const char *
@@
-1007,9
+1006,9
@@
core_target::pid_to_str (ptid_t ptid)
"process", with normal_pid_to_str. */
/* Try the LWPID field first. */
"process", with normal_pid_to_str. */
/* Try the LWPID field first. */
- pid = ptid
_get_lwp (ptid
);
+ pid = ptid
.lwp (
);
if (pid != 0)
if (pid != 0)
- return normal_pid_to_str (p
id_to_ptid
(pid));
+ return normal_pid_to_str (p
tid_t
(pid));
/* Otherwise, this isn't a "threaded" core -- use the PID field, but
only if it isn't a fake PID. */
/* Otherwise, this isn't a "threaded" core -- use the PID field, but
only if it isn't a fake PID. */
This page took
0.032462 seconds
and
4
git commands to generate.