projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Makefile.am (libbfd.h): Add "Extracted from.." comment.
[deliverable/binutils-gdb.git]
/
bfd
/
ptrace-core.c
diff --git
a/bfd/ptrace-core.c
b/bfd/ptrace-core.c
index 0969dce4c0548e6cf6698d45ebbff23616721a66..f8db927ea860312721f5939aa36485ba2c0c2147 100644
(file)
--- a/
bfd/ptrace-core.c
+++ b/
bfd/ptrace-core.c
@@
-1,5
+1,6
@@
/* BFD backend for core files which use the ptrace_user structure
/* BFD backend for core files which use the ptrace_user structure
- Copyright 1993, 94, 95, 96, 1998 Free Software Foundation, Inc.
+ Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002
+ Free Software Foundation, Inc.
The structure of this file is based on trad-core.c written by John Gilmore
of Cygnus Support.
Modified to work with the ptrace_user structure by Kevin A. Buettner.
The structure of this file is based on trad-core.c written by John Gilmore
of Cygnus Support.
Modified to work with the ptrace_user structure by Kevin A. Buettner.
@@
-32,7
+33,6
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <signal.h>
#include <sys/ptrace.h>
#include <signal.h>
#include <sys/ptrace.h>
-
struct trad_core_struct
{
asection *data_section;
struct trad_core_struct
{
asection *data_section;
@@
-64,9
+64,10
@@
ptrace_unix_core_file_p (abfd)
int val;
struct ptrace_user u;
struct trad_core_struct *rawptr;
int val;
struct ptrace_user u;
struct trad_core_struct *rawptr;
+ bfd_size_type amt;
- val = bfd_
read ((void *)&u, 1,
sizeof u, abfd);
- if (val != sizeof u || u.pt_magic != _BCS_PTRACE_MAGIC
+ val = bfd_
bread ((void *)&u, (bfd_size_type)
sizeof u, abfd);
+ if (val != sizeof u || u.pt_magic != _BCS_PTRACE_MAGIC
|| u.pt_rev != _BCS_PTRACE_REV)
{
/* Too small to be a core file */
|| u.pt_rev != _BCS_PTRACE_REV)
{
/* Too small to be a core file */
@@
-78,37
+79,31
@@
ptrace_unix_core_file_p (abfd)
/* Allocate both the upage and the struct core_data at once, so
a single free() will free them both. */
/* Allocate both the upage and the struct core_data at once, so
a single free() will free them both. */
- rawptr = (struct trad_core_struct *)
-
bfd_zalloc (abfd, sizeof (struct trad_core_struct)
);
+ amt = sizeof (struct trad_core_struct);
+
rawptr = (struct trad_core_struct *) bfd_zalloc (abfd, amt
);
if (rawptr == NULL)
return 0;
if (rawptr == NULL)
return 0;
-
+
abfd->tdata.trad_core_data = rawptr;
rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
abfd->tdata.trad_core_data = rawptr;
rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
- /* Create the sections. This is raunchy, but bfd_close wants to free
- them separately. */
+ /* Create the sections. */
- core_stacksec (abfd) =
(asection *) bfd_zalloc (abfd, sizeof (asection)
);
+ core_stacksec (abfd) =
bfd_make_section_anyway (abfd, ".stack"
);
if (core_stacksec (abfd) == NULL)
if (core_stacksec (abfd) == NULL)
-
return NULL
;
- core_datasec (abfd) =
(asection *) bfd_zalloc (abfd, sizeof (asection)
);
+
goto fail
;
+ core_datasec (abfd) =
bfd_make_section_anyway (abfd, ".data"
);
if (core_datasec (abfd) == NULL)
if (core_datasec (abfd) == NULL)
-
return NULL
;
- core_regsec (abfd) =
(asection *) bfd_zalloc (abfd, sizeof (asection)
);
+
goto fail
;
+ core_regsec (abfd) =
bfd_make_section_anyway (abfd, ".reg"
);
if (core_regsec (abfd) == NULL)
if (core_regsec (abfd) == NULL)
- return NULL;
-
- core_stacksec (abfd)->name = ".stack";
- core_datasec (abfd)->name = ".data";
- core_regsec (abfd)->name = ".reg";
+ goto fail;
/* FIXME: Need to worry about shared memory, library data, and library
text. I don't think that any of these things are supported on the
/* FIXME: Need to worry about shared memory, library data, and library
text. I don't think that any of these things are supported on the
- system on which I am developing this for though. */
-
+ system on which I am developing this for though. */
core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
@@
-116,11
+111,11
@@
ptrace_unix_core_file_p (abfd)
core_datasec (abfd)->_raw_size = u.pt_dsize;
core_stacksec (abfd)->_raw_size = u.pt_ssize;
core_datasec (abfd)->_raw_size = u.pt_dsize;
core_stacksec (abfd)->_raw_size = u.pt_ssize;
- core_regsec (abfd)->_raw_size = sizeof(u);
+ core_regsec (abfd)->_raw_size = sizeof
(u);
core_datasec (abfd)->vma = u.pt_o_data_start;
core_stacksec (abfd)->vma = USRSTACK - u.pt_ssize;
core_datasec (abfd)->vma = u.pt_o_data_start;
core_stacksec (abfd)->vma = USRSTACK - u.pt_ssize;
- core_regsec (abfd)->vma = 0 - sizeof
(u);
/* see trad-core.c */
+ core_regsec (abfd)->vma = 0 - sizeof
(u);
/* see trad-core.c */
core_datasec (abfd)->filepos = (int) u.pt_dataptr;
core_stacksec (abfd)->filepos = (int) (u.pt_dataptr + u.pt_dsize);
core_datasec (abfd)->filepos = (int) u.pt_dataptr;
core_stacksec (abfd)->filepos = (int) (u.pt_dataptr + u.pt_dsize);
@@
-131,12
+126,13
@@
ptrace_unix_core_file_p (abfd)
core_datasec (abfd)->alignment_power = 2;
core_regsec (abfd)->alignment_power = 2;
core_datasec (abfd)->alignment_power = 2;
core_regsec (abfd)->alignment_power = 2;
- abfd->sections = core_stacksec (abfd);
- core_stacksec (abfd)->next = core_datasec (abfd);
- core_datasec (abfd)->next = core_regsec (abfd);
- abfd->section_count = 3;
-
return abfd->xvec;
return abfd->xvec;
+
+ fail:
+ bfd_release (abfd, abfd->tdata.any);
+ abfd->tdata.any = NULL;
+ bfd_section_list_clear (abfd);
+ return NULL;
}
char *
}
char *
@@
-163,16
+159,16
@@
boolean
ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
{
ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
{
- /* FIXME: Use pt_timdat field of the ptrace_user structure to match
+ /* FIXME: Use pt_timdat field of the ptrace_user structure to match
the date of the executable */
return true;
}
\f
/* If somebody calls any byte-swapping routines, shoot them. */
static void
the date of the executable */
return true;
}
\f
/* If somebody calls any byte-swapping routines, shoot them. */
static void
-swap_abort()
+swap_abort
()
{
{
- abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+ abort
(); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@
-213,7
+209,7
@@
const bfd_target ptrace_core_vec =
bfd_false, bfd_false,
bfd_false, bfd_false
},
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (ptrace_unix),
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (ptrace_unix),
@@
-225,7
+221,7
@@
const bfd_target ptrace_core_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
(PTR) 0 /* backend_data */
};
This page took
0.039559 seconds
and
4
git commands to generate.