projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2001-07-12 H.J. Lu <hjl@gnu.org>
[deliverable/binutils-gdb.git]
/
bfd
/
i386lynx.c
diff --git
a/bfd/i386lynx.c
b/bfd/i386lynx.c
index fde6ad37dfea79be74a5e4eafa841c1f02fe50f8..c35d24af4232c77c9b3c476033093de1cda2d843 100644
(file)
--- a/
bfd/i386lynx.c
+++ b/
bfd/i386lynx.c
@@
-1,5
+1,6
@@
/* BFD back-end for i386 a.out binaries under LynxOS.
/* BFD back-end for i386 a.out binaries under LynxOS.
- Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996
+ Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This file is part of BFD, the Binary File Descriptor library.
@@
-15,15
+16,14
@@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139
, USA. */
+Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307
, USA. */
#define BYTES_IN_WORD 4
#define BYTES_IN_WORD 4
-#define ARCH 32
#define N_SHARED_LIB(x) 0
#define TEXT_START_ADDR 0
#define N_SHARED_LIB(x) 0
#define TEXT_START_ADDR 0
-#define PAGE_SIZE 4096
-#define SEGMENT_SIZE PAGE_SIZE
+#define
TARGET_
PAGE_SIZE 4096
+#define SEGMENT_SIZE
TARGET_
PAGE_SIZE
#define DEFAULT_ARCH bfd_arch_i386
#define MY(OP) CAT(i386lynx_aout_,OP)
#define DEFAULT_ARCH bfd_arch_i386
#define MY(OP) CAT(i386lynx_aout_,OP)
@@
-50,22
+50,32
@@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
obj_reloc_entry_size (abfd)); \
NAME(aout,swap_exec_header_out) (abfd, execp, &exec_bytes); \
\
obj_reloc_entry_size (abfd)); \
NAME(aout,swap_exec_header_out) (abfd, execp, &exec_bytes); \
\
- bfd_seek (abfd, (file_ptr) 0, SEEK_SET); \
- bfd_write ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd); \
+ if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return false; \
+ if (bfd_write ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd) \
+ != EXEC_BYTES_SIZE) \
+ return false; \
/* Now write out reloc info, followed by syms and strings */ \
\
if (bfd_get_symcount (abfd) != 0) \
{ \
/* Now write out reloc info, followed by syms and strings */ \
\
if (bfd_get_symcount (abfd) != 0) \
{ \
- bfd_seek (abfd, (file_ptr)(N_SYMOFF(*execp)), SEEK_SET); \
+ if (bfd_seek (abfd, (file_ptr)(N_SYMOFF(*execp)), SEEK_SET) \
+ != 0) \
+ return false; \
\
if (! NAME(aout,write_syms)(abfd)) return false; \
\
\
if (! NAME(aout,write_syms)(abfd)) return false; \
\
- bfd_seek (abfd, (file_ptr)(N_TRELOFF(*execp)), SEEK_SET); \
+ if (bfd_seek (abfd, (file_ptr)(N_TRELOFF(*execp)), SEEK_SET) \
+ != 0) \
+ return false; \
\
\
- if (!NAME(lynx,squirt_out_relocs) (abfd, obj_textsec (abfd))) return false; \
- bfd_seek (abfd, (file_ptr)(N_DRELOFF(*execp)), SEEK_SET); \
+ if (!NAME(lynx,squirt_out_relocs) (abfd, obj_textsec (abfd))) \
+ return false; \
+ if (bfd_seek (abfd, (file_ptr)(N_DRELOFF(*execp)), SEEK_SET) \
+ != 0) \
+ return 0; \
\
\
- if (!NAME(lynx,squirt_out_relocs)(abfd, obj_datasec (abfd))) return false; \
+ if (!NAME(lynx,squirt_out_relocs)(abfd, obj_datasec (abfd))) \
+ return false; \
} \
}
#endif
} \
}
#endif
@@
-73,22
+83,22
@@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "libaout.h"
#include "aout/aout64.h"
#include "libaout.h"
#include "aout/aout64.h"
-#ifdef
HOST_LYNX
+#ifdef
LYNX_CORE
char *lynx_core_file_failing_command ();
int lynx_core_file_failing_signal ();
boolean lynx_core_file_matches_executable_p ();
char *lynx_core_file_failing_command ();
int lynx_core_file_failing_signal ();
boolean lynx_core_file_matches_executable_p ();
-bfd_target *lynx_core_file_p ();
+
const
bfd_target *lynx_core_file_p ();
#define MY_core_file_failing_command lynx_core_file_failing_command
#define MY_core_file_failing_signal lynx_core_file_failing_signal
#define MY_core_file_matches_executable_p lynx_core_file_matches_executable_p
#define MY_core_file_p lynx_core_file_p
#define MY_core_file_failing_command lynx_core_file_failing_command
#define MY_core_file_failing_signal lynx_core_file_failing_signal
#define MY_core_file_matches_executable_p lynx_core_file_matches_executable_p
#define MY_core_file_p lynx_core_file_p
-#endif /*
HOST_LYNX
*/
+#endif /*
LYNX_CORE
*/
\f
\f
-#define KEEPIT
flags
+#define KEEPIT
udata.i
extern reloc_howto_type aout_32_ext_howto_table[];
extern reloc_howto_type aout_32_std_howto_table[];
extern reloc_howto_type aout_32_ext_howto_table[];
extern reloc_howto_type aout_32_std_howto_table[];
@@
-97,7
+107,7
@@
extern reloc_howto_type aout_32_std_howto_table[];
/* Output standard relocation information to a file in target byte order. */
void
/* Output standard relocation information to a file in target byte order. */
void
-NAME
(lynx,
swap_std_reloc_out) (abfd, g, natptr)
+NAME
(lynx,
swap_std_reloc_out) (abfd, g, natptr)
bfd *abfd;
arelent *g;
struct reloc_std_external *natptr;
bfd *abfd;
arelent *g;
struct reloc_std_external *natptr;
@@
-134,10
+144,10
@@
NAME (lynx, swap_std_reloc_out) (abfd, g, natptr)
if (bfd_is_com_section (output_section)
if (bfd_is_com_section (output_section)
- ||
output_section == &bfd_abs_section
- ||
output_section == &bfd_und_section
)
+ ||
bfd_is_abs_section (output_section)
+ ||
bfd_is_und_section (output_section)
)
{
{
- if (bfd_abs_section
.
symbol == sym)
+ if (bfd_abs_section
_ptr->
symbol == sym)
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
@@
-148,8
+158,7
@@
NAME (lynx, swap_std_reloc_out) (abfd, g, natptr)
{
/* Fill in symbol */
r_extern = 1;
{
/* Fill in symbol */
r_extern = 1;
- r_index = stoi ((*(g->sym_ptr_ptr))->KEEPIT);
-
+ r_index = (*g->sym_ptr_ptr)->KEEPIT;
}
}
else
}
}
else
@@
-160,7
+169,7
@@
NAME (lynx, swap_std_reloc_out) (abfd, g, natptr)
}
/* now the fun stuff */
}
/* now the fun stuff */
- if (
abfd->xvec->header_byteorder_big_p != false
)
+ if (
bfd_header_big_endian (abfd)
)
{
natptr->r_index[0] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
{
natptr->r_index[0] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
@@
-193,7
+202,7
@@
NAME (lynx, swap_std_reloc_out) (abfd, g, natptr)
/* Output extended relocation information to a file in target byte order. */
void
/* Output extended relocation information to a file in target byte order. */
void
-NAME
(lynx,
swap_ext_reloc_out) (abfd, g, natptr)
+NAME
(lynx,
swap_ext_reloc_out) (abfd, g, natptr)
bfd *abfd;
arelent *g;
register struct reloc_ext_external *natptr;
bfd *abfd;
arelent *g;
register struct reloc_ext_external *natptr;
@@
-221,10
+230,10
@@
NAME (lynx, swap_ext_reloc_out) (abfd, g, natptr)
*/
if (bfd_is_com_section (output_section)
*/
if (bfd_is_com_section (output_section)
- ||
output_section == &bfd_abs_section
- ||
output_section == &bfd_und_section
)
+ ||
bfd_is_abs_section (output_section)
+ ||
bfd_is_und_section (output_section)
)
{
{
- if (bfd_abs_section
.
symbol == sym)
+ if (bfd_abs_section
_ptr->
symbol == sym)
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
@@
-234,7
+243,7
@@
NAME (lynx, swap_ext_reloc_out) (abfd, g, natptr)
else
{
r_extern = 1;
else
{
r_extern = 1;
- r_index =
stoi ((*(g->sym_ptr_ptr))->KEEPIT)
;
+ r_index =
(*g->sym_ptr_ptr)->KEEPIT
;
}
}
else
}
}
else
@@
-246,7
+255,7
@@
NAME (lynx, swap_ext_reloc_out) (abfd, g, natptr)
/* now the fun stuff */
/* now the fun stuff */
- if (
abfd->xvec->header_byteorder_big_p != false
)
+ if (
bfd_header_big_endian (abfd)
)
{
natptr->r_index[0] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
{
natptr->r_index[0] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
@@
-304,18
+313,19
@@
NAME (lynx, swap_ext_reloc_out) (abfd, g, natptr)
default: \
case N_ABS: \
case N_ABS | N_EXT: \
default: \
case N_ABS: \
case N_ABS | N_EXT: \
- cache_ptr->sym_ptr_ptr = bfd_abs_section
.symbol_ptr_ptr;
\
+ cache_ptr->sym_ptr_ptr = bfd_abs_section
_ptr->symbol_ptr_ptr;
\
cache_ptr->addend = ad; \
break; \
} \
} \
void
cache_ptr->addend = ad; \
break; \
} \
} \
void
-NAME
(lynx, swap_ext_reloc_in) (abfd, bytes, cache_ptr, symbols
)
+NAME
(lynx,swap_ext_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount
)
bfd *abfd;
struct reloc_ext_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
bfd *abfd;
struct reloc_ext_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
+ bfd_size_type symcount ATTRIBUTE_UNUSED;
{
int r_index;
int r_extern;
{
int r_index;
int r_extern;
@@
-334,11
+344,12
@@
NAME (lynx, swap_ext_reloc_in) (abfd, bytes, cache_ptr, symbols)
}
void
}
void
-NAME
(lynx, swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols
)
+NAME
(lynx,swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount
)
bfd *abfd;
struct reloc_std_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
bfd *abfd;
struct reloc_std_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
+ bfd_size_type symcount ATTRIBUTE_UNUSED;
{
int r_index;
int r_extern;
{
int r_index;
int r_extern;
@@
-367,7
+378,7
@@
NAME (lynx, swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols)
/* Reloc hackery */
boolean
/* Reloc hackery */
boolean
-NAME
(lynx,
slurp_reloc_table) (abfd, asect, symbols)
+NAME
(lynx,
slurp_reloc_table) (abfd, asect, symbols)
bfd *abfd;
sec_ptr asect;
asymbol **symbols;
bfd *abfd;
sec_ptr asect;
asymbol **symbols;
@@
-400,32
+411,29
@@
NAME (lynx, slurp_reloc_table) (abfd, asect, symbols)
return false;
doit:
return false;
doit:
- bfd_seek (abfd, asect->rel_filepos, SEEK_SET);
+ if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
+ return false;
each_size = obj_reloc_entry_size (abfd);
count = reloc_size / each_size;
each_size = obj_reloc_entry_size (abfd);
count = reloc_size / each_size;
- reloc_cache = (arelent *) bfd_zalloc (abfd, (size_t) (count * sizeof
- (arelent)));
- if (!reloc_cache)
- {
- nomem:
- bfd_set_error (bfd_error_no_memory);
- return false;
- }
+ reloc_cache = (arelent *) bfd_malloc (count * sizeof (arelent));
+ if (!reloc_cache && count != 0)
+ return false;
+ memset (reloc_cache, 0, count * sizeof (arelent));
relocs = (PTR) bfd_alloc (abfd, reloc_size);
relocs = (PTR) bfd_alloc (abfd, reloc_size);
- if (!relocs)
+ if (!relocs
&& reloc_size != 0
)
{
{
-
bfd_release (abfd,
reloc_cache);
-
goto nomem
;
+
free (
reloc_cache);
+
return false
;
}
if (bfd_read (relocs, 1, reloc_size, abfd) != reloc_size)
{
bfd_release (abfd, relocs);
}
if (bfd_read (relocs, 1, reloc_size, abfd) != reloc_size)
{
bfd_release (abfd, relocs);
-
bfd_release (abfd,
reloc_cache);
+
free (
reloc_cache);
return false;
}
return false;
}
@@
-437,7
+445,8
@@
doit:
for (; counter < count; counter++, rptr++, cache_ptr++)
{
for (; counter < count; counter++, rptr++, cache_ptr++)
{
- NAME (lynx, swap_ext_reloc_in) (abfd, rptr, cache_ptr, symbols);
+ NAME(lynx,swap_ext_reloc_in) (abfd, rptr, cache_ptr, symbols,
+ bfd_get_symcount (abfd));
}
}
else
}
}
else
@@
-448,7
+457,8
@@
doit:
for (; counter < count; counter++, rptr++, cache_ptr++)
{
for (; counter < count; counter++, rptr++, cache_ptr++)
{
- NAME (lynx, swap_std_reloc_in) (abfd, rptr, cache_ptr, symbols);
+ NAME(lynx,swap_std_reloc_in) (abfd, rptr, cache_ptr, symbols,
+ bfd_get_symcount (abfd));
}
}
}
}
@@
-464,7
+474,7
@@
doit:
/* Write out a relocation section into an object file. */
boolean
/* Write out a relocation section into an object file. */
boolean
-NAME
(lynx,
squirt_out_relocs) (abfd, section)
+NAME
(lynx,
squirt_out_relocs) (abfd, section)
bfd *abfd;
asection *section;
{
bfd *abfd;
asection *section;
{
@@
-482,10
+492,7
@@
NAME (lynx, squirt_out_relocs) (abfd, section)
natsize = each_size * count;
native = (unsigned char *) bfd_zalloc (abfd, natsize);
if (!native)
natsize = each_size * count;
native = (unsigned char *) bfd_zalloc (abfd, natsize);
if (!native)
- {
- bfd_set_error (bfd_error_no_memory);
- return false;
- }
+ return false;
generic = section->orelocation;
generic = section->orelocation;
@@
-494,14
+501,14
@@
NAME (lynx, squirt_out_relocs) (abfd, section)
for (natptr = native;
count != 0;
--count, natptr += each_size, ++generic)
for (natptr = native;
count != 0;
--count, natptr += each_size, ++generic)
- NAME
(lynx,
swap_ext_reloc_out) (abfd, *generic, (struct reloc_ext_external *) natptr);
+ NAME
(lynx,
swap_ext_reloc_out) (abfd, *generic, (struct reloc_ext_external *) natptr);
}
else
{
for (natptr = native;
count != 0;
--count, natptr += each_size, ++generic)
}
else
{
for (natptr = native;
count != 0;
--count, natptr += each_size, ++generic)
- NAME
(lynx,
swap_std_reloc_out) (abfd, *generic, (struct reloc_std_external *) natptr);
+ NAME
(lynx,
swap_std_reloc_out) (abfd, *generic, (struct reloc_std_external *) natptr);
}
if (bfd_write ((PTR) native, 1, natsize, abfd) != natsize)
}
if (bfd_write ((PTR) native, 1, natsize, abfd) != natsize)
@@
-525,7
+532,7
@@
NAME(lynx,canonicalize_reloc) (abfd, section, relptr, symbols)
arelent *tblptr = section->relocation;
unsigned int count;
arelent *tblptr = section->relocation;
unsigned int count;
- if (!(tblptr || NAME
(lynx,
slurp_reloc_table) (abfd, section, symbols)))
+ if (!(tblptr || NAME
(lynx,
slurp_reloc_table) (abfd, section, symbols)))
return -1;
if (section->flags & SEC_CONSTRUCTOR)
return -1;
if (section->flags & SEC_CONSTRUCTOR)
@@
-540,8
+547,6
@@
NAME(lynx,canonicalize_reloc) (abfd, section, relptr, symbols)
else
{
tblptr = section->relocation;
else
{
tblptr = section->relocation;
- if (!tblptr)
- return -1;
for (count = 0; count++ < section->reloc_count;)
{
for (count = 0; count++ < section->reloc_count;)
{
This page took
0.0285260000000001 seconds
and
4
git commands to generate.