2003-09-19 Andrew Cagney <cagney@redhat.com>
* config/pa/nm-hppah.h (NEED_TEXT_START_END): Delete. (DEPRECATED_HPUX_TEXT_END): Define. (deprecated_hpux_text_end): Declare. (struct target_ops): Declare opaque. * hppah-nat.c (text_end): Make static. (deprecated_hpux_text_end): New function. * exec.c (text_end): Delete global variable. (NEED_TEXT_START_END): Do not define. (exec_file_attach): Replace code computing "text_end" code with call to DEPRECATED_HPUX_TEXT_END. 2003-09-19 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Delete documentation for NEED_TEXT_START_END.
This commit is contained in:
parent
f6f87075ea
commit
b9fbf4340a
6 changed files with 49 additions and 41 deletions
|
@ -1,3 +1,16 @@
|
|||
2003-09-19 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* config/pa/nm-hppah.h (NEED_TEXT_START_END): Delete.
|
||||
(DEPRECATED_HPUX_TEXT_END): Define.
|
||||
(deprecated_hpux_text_end): Declare.
|
||||
(struct target_ops): Declare opaque.
|
||||
* hppah-nat.c (text_end): Make static.
|
||||
(deprecated_hpux_text_end): New function.
|
||||
* exec.c (text_end): Delete global variable.
|
||||
(NEED_TEXT_START_END): Do not define.
|
||||
(exec_file_attach): Replace code computing "text_end" code with
|
||||
call to DEPRECATED_HPUX_TEXT_END.
|
||||
|
||||
2003-09-19 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* utils.c (align_up, align_down): New functions.
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
struct target_ops;
|
||||
|
||||
#define U_REGS_OFFSET 0
|
||||
|
||||
#define KERNEL_U_ADDR 0
|
||||
|
@ -44,9 +46,10 @@
|
|||
#define FIVE_ARG_PTRACE
|
||||
|
||||
/* We need to figure out where the text region is so that we use the
|
||||
appropriate ptrace operator to manipulate text. Simply reading/writing
|
||||
user space will crap out HPUX. */
|
||||
#define NEED_TEXT_START_END 1
|
||||
appropriate ptrace operator to manipulate text. Simply
|
||||
reading/writing user space will crap out HPUX. */
|
||||
#define DEPRECATED_HPUX_TEXT_END deprecated_hpux_text_end
|
||||
extern void deprecated_hpux_text_end (struct target_ops *exec_ops);
|
||||
|
||||
/* In hppah-nat.c: */
|
||||
#define FETCH_INFERIOR_REGISTERS
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2003-09-19 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* gdbint.texinfo (Target Architecture Definition): Delete
|
||||
documentation for NEED_TEXT_START_END.
|
||||
|
||||
2003-09-18 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* gdbint.texinfo (Target Architecture Definition): Delete
|
||||
|
|
|
@ -3483,11 +3483,6 @@ method like @code{INTEGER_TO_ADDRESS} certainly makes it possible for
|
|||
@xref{Target Architecture Definition, , Pointers Are Not Always
|
||||
Addresses}.
|
||||
|
||||
@item NEED_TEXT_START_END
|
||||
@findex NEED_TEXT_START_END
|
||||
Define this if @value{GDBN} should determine the start and end addresses of the
|
||||
text section. (Seems dubious.)
|
||||
|
||||
@item NO_HIF_SUPPORT
|
||||
@findex NO_HIF_SUPPORT
|
||||
(Specific to the a29k.)
|
||||
|
|
34
gdb/exec.c
34
gdb/exec.c
|
@ -85,13 +85,6 @@ bfd *exec_bfd = NULL;
|
|||
|
||||
int write_files = 0;
|
||||
|
||||
/* Text start and end addresses (KLUDGE) if needed */
|
||||
|
||||
#ifndef NEED_TEXT_START_END
|
||||
#define NEED_TEXT_START_END (0)
|
||||
#endif
|
||||
CORE_ADDR text_end = 0;
|
||||
|
||||
struct vmap *vmap;
|
||||
|
||||
void
|
||||
|
@ -266,30 +259,9 @@ exec_file_attach (char *filename, int from_tty)
|
|||
scratch_pathname, bfd_errmsg (bfd_get_error ()));
|
||||
}
|
||||
|
||||
/* text_end is sometimes used for where to put call dummies. A
|
||||
few ports use these for other purposes too. */
|
||||
if (NEED_TEXT_START_END)
|
||||
{
|
||||
struct section_table *p;
|
||||
|
||||
/* Set text_start to the lowest address of the start of any
|
||||
readonly code section and set text_end to the highest
|
||||
address of the end of any readonly code section. */
|
||||
/* FIXME: The comment above does not match the code. The
|
||||
code checks for sections with are either code *or*
|
||||
readonly. */
|
||||
CORE_ADDR text_start = ~(CORE_ADDR) 0;
|
||||
text_end = (CORE_ADDR) 0;
|
||||
for (p = exec_ops.to_sections; p < exec_ops.to_sections_end; p++)
|
||||
if (bfd_get_section_flags (p->bfd, p->the_bfd_section)
|
||||
& (SEC_CODE | SEC_READONLY))
|
||||
{
|
||||
if (text_start > p->addr)
|
||||
text_start = p->addr;
|
||||
if (text_end < p->endaddr)
|
||||
text_end = p->endaddr;
|
||||
}
|
||||
}
|
||||
#ifdef DEPRECATED_HPUX_TEXT_END
|
||||
DEPRECATED_HPUX_TEXT_END (&exec_ops);
|
||||
#endif
|
||||
|
||||
validate_files ();
|
||||
|
||||
|
|
|
@ -34,14 +34,34 @@
|
|||
#include "gdb_string.h"
|
||||
#include <signal.h>
|
||||
|
||||
extern CORE_ADDR text_end;
|
||||
|
||||
extern int hpux_has_forked (int pid, int *childpid);
|
||||
extern int hpux_has_vforked (int pid, int *childpid);
|
||||
extern int hpux_has_execd (int pid, char **execd_pathname);
|
||||
extern int hpux_has_syscall_event (int pid, enum target_waitkind *kind,
|
||||
int *syscall_id);
|
||||
|
||||
static CORE_ADDR text_end;
|
||||
|
||||
void
|
||||
deprecated_hpux_text_end (struct target_ops *exec_ops)
|
||||
{
|
||||
struct section_table *p;
|
||||
|
||||
/* Set text_end to the highest address of the end of any readonly
|
||||
code section. */
|
||||
/* FIXME: The comment above does not match the code. The code
|
||||
checks for sections with are either code *or* readonly. */
|
||||
text_end = (CORE_ADDR) 0;
|
||||
for (p = exec_ops->to_sections; p < exec_ops->to_sections_end; p++)
|
||||
if (bfd_get_section_flags (p->bfd, p->the_bfd_section)
|
||||
& (SEC_CODE | SEC_READONLY))
|
||||
{
|
||||
if (text_end < p->endaddr)
|
||||
text_end = p->endaddr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void fetch_register (int);
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue