projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* section.c (bfd_section_init): Remove unnecessary initialisations.
[deliverable/binutils-gdb.git]
/
bfd
/
lynx-core.c
diff --git
a/bfd/lynx-core.c
b/bfd/lynx-core.c
index 2358177dbc62c5ff63ea09087fe1a8372a173d5b..af513aca75c0ce4ef0b43ef39295f59ede919ee0 100644
(file)
--- a/
bfd/lynx-core.c
+++ b/
bfd/lynx-core.c
@@
-1,5
+1,5
@@
/* BFD back end for Lynx core files
/* BFD back end for Lynx core files
- Copyright 1993 Free Software Foundation, Inc.
+ Copyright 1993
, 1994, 1995, 2001, 2002
Free Software Foundation, Inc.
Written by Stu Grossman of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
Written by Stu Grossman of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@
-26,7
+26,7
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/conf.h>
#include <sys/kernel.h>
-/* sys/kernel.h should define this, but doesn't always, sigh. */
+/* sys/kernel.h should define this, but doesn't always, sigh.
*/
#ifndef __LYNXOS
#define __LYNXOS
#endif
#ifndef __LYNXOS
#define __LYNXOS
#endif
@@
-40,7
+40,7
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* These are stored in the bfd's tdata */
/* These are stored in the bfd's tdata */
-struct lynx_core_struct
+struct lynx_core_struct
{
int sig;
char cmd[PNMLEN + 1];
{
int sig;
char cmd[PNMLEN + 1];
@@
-55,7
+55,7
@@
struct lynx_core_struct
static asection *
make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
bfd *abfd;
static asection *
make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
bfd *abfd;
-
CONST
char *name;
+
const
char *name;
flagword flags;
bfd_size_type _raw_size;
bfd_vma vma;
flagword flags;
bfd_size_type _raw_size;
bfd_vma vma;
@@
-64,7
+64,7
@@
make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
asection *asect;
char *newname;
asection *asect;
char *newname;
- newname = bfd_alloc (abfd, strlen (name) + 1);
+ newname = bfd_alloc (abfd,
(bfd_size_type)
strlen (name) + 1);
if (!newname)
return NULL;
if (!newname)
return NULL;
@@
-83,18
+83,17
@@
make_bfd_asection (abfd, name, flags, _raw_size, vma, filepos)
return asect;
}
return asect;
}
-/* ARGSUSED */
const bfd_target *
lynx_core_file_p (abfd)
bfd *abfd;
{
const bfd_target *
lynx_core_file_p (abfd)
bfd *abfd;
{
- int val;
int secnum;
struct pssentry pss;
int secnum;
struct pssentry pss;
-
size_t
tcontext_size;
+
bfd_size_type
tcontext_size;
core_st_t *threadp;
int pagesize;
asection *newsect;
core_st_t *threadp;
int pagesize;
asection *newsect;
+ bfd_size_type amt;
pagesize = getpagesize (); /* Serious cross-target issue here... This
really needs to come from a system-specific
pagesize = getpagesize (); /* Serious cross-target issue here... This
really needs to come from a system-specific
@@
-102,11
+101,11
@@
lynx_core_file_p (abfd)
/* Get the pss entry from the core file */
/* Get the pss entry from the core file */
- if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+ if (bfd_seek (abfd,
(file_ptr)
0, SEEK_SET) != 0)
return NULL;
return NULL;
-
val = bfd_read ((void *)&pss, 1, sizeof pss, abfd)
;
- if (
val != sizeof pss
)
+
amt = sizeof pss
;
+ if (
bfd_bread ((void *) &pss, amt, abfd) != amt
)
{
/* Too small to be a core file */
if (bfd_get_error () != bfd_error_system_call)
{
/* Too small to be a core file */
if (bfd_get_error () != bfd_error_system_call)
@@
-114,8
+113,8
@@
lynx_core_file_p (abfd)
return NULL;
}
return NULL;
}
- core_hdr (abfd) = (struct lynx_core_struct *)
-
bfd_zalloc (abfd, sizeof (struct lynx_core_struct)
);
+ amt = sizeof (struct lynx_core_struct);
+
core_hdr (abfd) = (struct lynx_core_struct *) bfd_zalloc (abfd, amt
);
if (!core_hdr (abfd))
return NULL;
if (!core_hdr (abfd))
return NULL;
@@
-128,25
+127,23
@@
lynx_core_file_p (abfd)
/* Allocate space for the thread contexts */
/* Allocate space for the thread contexts */
- threadp = (core_st_t *)bfd_alloc (abfd, tcontext_size);
+ threadp = (core_st_t *)
bfd_alloc (abfd, tcontext_size);
if (!threadp)
if (!threadp)
-
return NULL
;
+
goto fail
;
/* Save thread contexts */
/* Save thread contexts */
- if (bfd_seek (abfd, pagesize, SEEK_SET) != 0)
- return NULL;
-
- val = bfd_read ((void *)threadp, pss.threadcnt, sizeof (core_st_t), abfd);
+ if (bfd_seek (abfd, (file_ptr) pagesize, SEEK_SET) != 0)
+ goto fail;
- if (
val
!= tcontext_size)
+ if (
bfd_bread ((void *) threadp, tcontext_size, abfd)
!= tcontext_size)
{
/* Probably too small to be a core file */
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
{
/* Probably too small to be a core file */
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
-
return NULL
;
+
goto fail
;
}
}
-
+
core_signal (abfd) = threadp->currsig;
newsect = make_bfd_asection (abfd, ".stack",
core_signal (abfd) = threadp->currsig;
newsect = make_bfd_asection (abfd, ".stack",
@@
-155,7
+152,7
@@
lynx_core_file_p (abfd)
pss.slimit,
pagesize + tcontext_size);
if (!newsect)
pss.slimit,
pagesize + tcontext_size);
if (!newsect)
-
return NULL
;
+
goto fail
;
newsect = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
newsect = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
@@
-173,7
+170,7
@@
lynx_core_file_p (abfd)
#endif
);
if (!newsect)
#endif
);
if (!newsect)
-
return NULL
;
+
goto fail
;
/* And, now for the .reg/XXX pseudo sections. Each thread has it's own
.reg/XXX section, where XXX is the thread id (without leading zeros). The
/* And, now for the .reg/XXX pseudo sections. Each thread has it's own
.reg/XXX section, where XXX is the thread id (without leading zeros). The
@@
-188,7
+185,7
@@
lynx_core_file_p (abfd)
0,
pagesize);
if (!newsect)
0,
pagesize);
if (!newsect)
-
return NULL
;
+
goto fail
;
for (secnum = 0; secnum < pss.threadcnt; secnum++)
{
for (secnum = 0; secnum < pss.threadcnt; secnum++)
{
@@
-201,10
+198,16
@@
lynx_core_file_p (abfd)
0,
pagesize + secnum * sizeof (core_st_t));
if (!newsect)
0,
pagesize + secnum * sizeof (core_st_t));
if (!newsect)
-
return NULL
;
+
goto fail
;
}
return abfd->xvec;
}
return abfd->xvec;
+
+ fail:
+ bfd_release (abfd, core_hdr (abfd));
+ core_hdr (abfd) = NULL;
+ bfd_section_list_clear (abfd);
+ return NULL;
}
char *
}
char *
@@
-214,7
+217,6
@@
lynx_core_file_failing_command (abfd)
return core_command (abfd);
}
return core_command (abfd);
}
-/* ARGSUSED */
int
lynx_core_file_failing_signal (abfd)
bfd *abfd;
int
lynx_core_file_failing_signal (abfd)
bfd *abfd;
@@
-222,7
+224,6
@@
lynx_core_file_failing_signal (abfd)
return core_signal (abfd);
}
return core_signal (abfd);
}
-/* ARGSUSED */
boolean
lynx_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
boolean
lynx_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
This page took
0.030614 seconds
and
4
git commands to generate.