mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-25 05:00:01 +00:00
* aout-adobe.c, aoutf1.h, archive.c, bout.c, coff-rs6000.c,
coffcode.h, elf.c, ieee.c, libaout.h, libbfd.c, oasys.c, sco-core.c: Lint: Second argument of bfd_seek is always file_ptr. Third argument is SEEK_SET or SEEK_CUR. Result is always 0 or -1.
This commit is contained in:
parent
dac4929a6d
commit
f8e0194018
@ -1,3 +1,10 @@
|
||||
Thu Oct 15 01:32:22 1992 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
* aout-adobe.c, aoutf1.h, archive.c, bout.c, coff-rs6000.c,
|
||||
coffcode.h, elf.c, ieee.c, libaout.h, libbfd.c, oasys.c,
|
||||
sco-core.c: Lint: Second argument of bfd_seek is always file_ptr.
|
||||
Third argument is SEEK_SET or SEEK_CUR. Result is always 0 or -1.
|
||||
|
||||
Fri Oct 9 03:46:37 1992 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
* configure.host: New file, contains mapping of host configs
|
||||
|
@ -309,7 +309,7 @@ aout_adobe_write_object_contents (abfd)
|
||||
|
||||
aout_adobe_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr);
|
||||
|
||||
bfd_seek (abfd, 0L, SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
|
||||
bfd_write ((PTR) &swapped_hdr, 1, EXEC_BYTES_SIZE, abfd);
|
||||
|
||||
/* Now write out the section information. Text first, data next, rest
|
||||
@ -337,12 +337,11 @@ aout_adobe_write_object_contents (abfd)
|
||||
/* Now write out reloc info, followed by syms and strings */
|
||||
if (bfd_get_symcount (abfd) != 0)
|
||||
{
|
||||
bfd_seek (abfd,
|
||||
(long)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
aout_32_write_syms (abfd);
|
||||
|
||||
bfd_seek (abfd, (long)(N_TRELOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_TRELOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
for (sect = abfd->sections; sect; sect = sect->next) {
|
||||
if (sect->flags & SEC_CODE) {
|
||||
@ -351,7 +350,7 @@ aout_adobe_write_object_contents (abfd)
|
||||
}
|
||||
}
|
||||
|
||||
bfd_seek (abfd, (long)(N_DRELOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_DRELOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
for (sect = abfd->sections; sect; sect = sect->next) {
|
||||
if (sect->flags & SEC_DATA) {
|
||||
|
@ -393,7 +393,7 @@ DEFUN(sunos4_core_file_p,(abfd),
|
||||
if (core_size > 20000)
|
||||
return 0;
|
||||
|
||||
if (bfd_seek (abfd, 0L, false) < 0) return 0;
|
||||
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) < 0) return 0;
|
||||
|
||||
mergem = (struct mergem *)bfd_zalloc (abfd, core_size + sizeof (struct mergem));
|
||||
if (mergem == NULL) {
|
||||
|
@ -562,7 +562,7 @@ bfd_slurp_bsd_armap (abfd)
|
||||
but fail for any other size... */
|
||||
if (bfd_read ((PTR)nextname, 1, 16, abfd) == 16) {
|
||||
/* The archive has at least 16 bytes in it */
|
||||
bfd_seek (abfd, -16L, SEEK_CUR);
|
||||
bfd_seek (abfd, (file_ptr) -16, SEEK_CUR);
|
||||
|
||||
/* This should be using RANLIBMAG, but at least it can be grepped for
|
||||
in this comment. */
|
||||
@ -637,7 +637,7 @@ bfd_slurp_coff_armap (abfd)
|
||||
bfd_vma (*swap)();
|
||||
|
||||
result = bfd_read ((PTR)&nextname, 1, 1, abfd);
|
||||
bfd_seek (abfd, -1L, SEEK_CUR);
|
||||
bfd_seek (abfd, (file_ptr) -1, SEEK_CUR);
|
||||
|
||||
if (result != 1 || nextname != '/') {
|
||||
/* Actually I think this is an error for a COFF archive */
|
||||
@ -755,7 +755,7 @@ _bfd_slurp_extended_name_table (abfd)
|
||||
we probably don't want to return true. */
|
||||
if (bfd_read ((PTR)nextname, 1, 16, abfd) == 16) {
|
||||
|
||||
bfd_seek (abfd, -16L, SEEK_CUR);
|
||||
bfd_seek (abfd, (file_ptr) -16, SEEK_CUR);
|
||||
|
||||
if (strncmp (nextname, "ARFILENAMES/ ", 16) != 0 &&
|
||||
strncmp (nextname, "// ", 16) != 0)
|
||||
@ -1172,7 +1172,7 @@ _bfd_write_archive_contents (arch)
|
||||
if (!bfd_construct_extended_name_table (arch, &etable, &elength))
|
||||
return false;
|
||||
|
||||
bfd_seek (arch, 0, SEEK_SET);
|
||||
bfd_seek (arch, (file_ptr) 0, SEEK_SET);
|
||||
#ifdef GNU960
|
||||
bfd_write (BFD_GNU960_ARMAG(arch), 1, SARMAG, arch);
|
||||
#else
|
||||
@ -1212,7 +1212,7 @@ _bfd_write_archive_contents (arch)
|
||||
bfd_error = system_call_error;
|
||||
return false;
|
||||
}
|
||||
if (bfd_seek (current, 0L, SEEK_SET) != 0L) goto syserr;
|
||||
if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0) goto syserr;
|
||||
while (remaining)
|
||||
{
|
||||
unsigned int amt = DEFAULT_BUFFERSIZE;
|
||||
|
11
bfd/bout.c
11
bfd/bout.c
@ -238,21 +238,20 @@ b_out_write_object_contents (abfd)
|
||||
|
||||
bout_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr);
|
||||
|
||||
bfd_seek (abfd, 0L, SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
|
||||
bfd_write ((PTR) &swapped_hdr, 1, EXEC_BYTES_SIZE, abfd);
|
||||
|
||||
/* Now write out reloc info, followed by syms and strings */
|
||||
if (bfd_get_symcount (abfd) != 0)
|
||||
{
|
||||
bfd_seek (abfd,
|
||||
(long)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
aout_32_write_syms (abfd);
|
||||
|
||||
bfd_seek (abfd, (long)(N_TROFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_TROFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
if (!b_out_squirt_out_relocs (abfd, obj_textsec (abfd))) return false;
|
||||
bfd_seek (abfd, (long)(N_DROFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(N_DROFF(*exec_hdr(abfd))), SEEK_SET);
|
||||
|
||||
if (!b_out_squirt_out_relocs (abfd, obj_datasec (abfd))) return false;
|
||||
}
|
||||
@ -459,7 +458,7 @@ b_out_slurp_reloc_table (abfd, asect, symbols)
|
||||
return false;
|
||||
|
||||
doit:
|
||||
bfd_seek (abfd, (long)(asect->rel_filepos), SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr)(asect->rel_filepos), SEEK_SET);
|
||||
count = reloc_size / sizeof (struct relocation_info);
|
||||
|
||||
relocs = (struct relocation_info *) bfd_xmalloc (reloc_size);
|
||||
|
@ -171,7 +171,7 @@ rs6000coff_get_elt_at_filepos (archive, filepos)
|
||||
n_nfd = look_for_bfd_in_cache (archive, filepos);
|
||||
if (n_nfd) return n_nfd;
|
||||
|
||||
if (0 > bfd_seek (archive, filepos, SEEK_SET)) {
|
||||
if (0 != bfd_seek (archive, filepos, SEEK_SET)) {
|
||||
bfd_error = system_call_error;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1230,7 +1230,7 @@ DEFUN(coff_object_p,(abfd),
|
||||
}
|
||||
|
||||
/* Seek past the opt hdr stuff */
|
||||
bfd_seek(abfd, internal_f.f_opthdr + FILHSZ, SEEK_SET);
|
||||
bfd_seek(abfd, (file_ptr) (internal_f.f_opthdr + FILHSZ), SEEK_SET);
|
||||
|
||||
/* if the optional header is NULL or not the correct size then
|
||||
quit; the only difference I can see between m88k dgux headers (MC88DMAGIC)
|
||||
@ -2263,15 +2263,10 @@ coff_section_symbol (abfd, name)
|
||||
bfd *abfd;
|
||||
char *name;
|
||||
{
|
||||
asection *sec = bfd_get_section_by_name (abfd, name);
|
||||
asection *sec = bfd_make_section_old_way (abfd, name);
|
||||
asymbol *sym;
|
||||
combined_entry_type *csym;
|
||||
|
||||
if (!sec)
|
||||
{
|
||||
/* create empty symbol */
|
||||
abort ();
|
||||
}
|
||||
sym = sec->symbol;
|
||||
if (coff_symbol_from (abfd, sym))
|
||||
csym = coff_symbol_from (abfd, sym)->native;
|
||||
@ -2409,10 +2404,6 @@ DEFUN(coff_write_object_contents,(abfd),
|
||||
current->target_index = count;
|
||||
count++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(abfd->output_has_begun == false) {
|
||||
coff_compute_section_file_positions(abfd);
|
||||
@ -2696,7 +2687,7 @@ DEFUN(coff_write_object_contents,(abfd),
|
||||
internal_f.f_nsyms = bfd_get_symcount(abfd);
|
||||
|
||||
/* now write them */
|
||||
if (bfd_seek(abfd, 0L, SEEK_SET) != 0)
|
||||
if (bfd_seek(abfd, (file_ptr) 0, SEEK_SET) != 0)
|
||||
return false;
|
||||
{
|
||||
FILHDR buff;
|
||||
|
@ -947,7 +947,7 @@ DEFUN(elf_corefile_note, (abfd, hdr),
|
||||
|
||||
if (hdr -> p_filesz > 0
|
||||
&& (buf = (char *) bfd_xmalloc (hdr -> p_filesz)) != NULL
|
||||
&& bfd_seek (abfd, hdr -> p_offset, SEEK_SET) != -1L
|
||||
&& bfd_seek (abfd, hdr -> p_offset, SEEK_SET) != -1
|
||||
&& bfd_read ((PTR) buf, hdr -> p_filesz, 1, abfd) == hdr -> p_filesz)
|
||||
{
|
||||
x_note_p = (Elf_External_Note *) buf;
|
||||
@ -1788,7 +1788,7 @@ DEFUN (elf_write_object_contents, (abfd), bfd *abfd)
|
||||
|
||||
/* swap the header before spitting it out... */
|
||||
elf_swap_ehdr_out (abfd, i_ehdrp, &x_ehdr);
|
||||
bfd_seek (abfd, 0L, SEEK_SET);
|
||||
bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
|
||||
bfd_write ((PTR) &x_ehdr, sizeof(x_ehdr), 1, abfd);
|
||||
|
||||
outbase += i_ehdrp->e_shentsize * i_ehdrp->e_shnum;
|
||||
@ -1828,7 +1828,7 @@ DEFUN (elf_write_object_contents, (abfd), bfd *abfd)
|
||||
}
|
||||
|
||||
/* sample use of bfd:
|
||||
* bfd_seek (abfd, 0L, false);
|
||||
* bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
|
||||
* bfd_write ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd);
|
||||
* if (bfd_seek(abfd, scn_base, SEEK_SET) != 0)
|
||||
* return false;
|
||||
|
20
bfd/ieee.c
20
bfd/ieee.c
@ -992,7 +992,7 @@ DEFUN(ieee_archive_p,(abfd),
|
||||
unsigned int i;
|
||||
uint8e_type buffer[512];
|
||||
struct obstack ob;
|
||||
int buffer_offset = 0;
|
||||
file_ptr buffer_offset = 0;
|
||||
ieee_ar_data_type *save = abfd->tdata.ieee_ar_data;
|
||||
ieee_ar_data_type *ieee ;
|
||||
abfd->tdata.ieee_ar_data = (ieee_ar_data_type *)bfd_alloc(abfd, sizeof(ieee_ar_data_type));
|
||||
@ -1113,7 +1113,7 @@ DEFUN(ieee_object_p,(abfd),
|
||||
ieee_mkobject(abfd);
|
||||
|
||||
ieee = IEEE_DATA(abfd);
|
||||
bfd_seek(abfd, 0, 0);
|
||||
bfd_seek(abfd, (file_ptr) 0, SEEK_SET);
|
||||
/* Read the first few bytes in to see if it makes sense */
|
||||
bfd_read((PTR)buffer, 1, sizeof(buffer), abfd);
|
||||
|
||||
@ -1185,7 +1185,7 @@ DEFUN(ieee_object_p,(abfd),
|
||||
|
||||
IEEE_DATA(abfd)->h.first_byte = (uint8e_type *) bfd_alloc(ieee->h.abfd, ieee->w.r.me_record
|
||||
+ 50);
|
||||
bfd_seek(abfd, 0, 0);
|
||||
bfd_seek(abfd, (file_ptr) 0, SEEK_SET);
|
||||
bfd_read((PTR)(IEEE_DATA(abfd)->h.first_byte), 1, ieee->w.r.me_record+50, abfd);
|
||||
|
||||
ieee_slurp_sections(abfd);
|
||||
@ -2706,19 +2706,13 @@ DEFUN(ieee_write_object_contents,(abfd),
|
||||
unsigned int i;
|
||||
file_ptr old;
|
||||
/* Fast forward over the header area */
|
||||
bfd_seek(abfd, 0, 0);
|
||||
bfd_seek(abfd, (file_ptr) 0, SEEK_SET);
|
||||
ieee_write_byte(abfd, ieee_module_beginning_enum);
|
||||
|
||||
ieee_write_id(abfd, bfd_printable_name(abfd));
|
||||
ieee_write_id(abfd, abfd->filename);
|
||||
|
||||
|
||||
|
||||
|
||||
/* Fast forward over the variable bits */
|
||||
|
||||
|
||||
|
||||
ieee_write_byte(abfd, ieee_address_descriptor_enum);
|
||||
|
||||
/* Bits per MAU */
|
||||
@ -2727,10 +2721,8 @@ DEFUN(ieee_write_object_contents,(abfd),
|
||||
ieee_write_byte(abfd, bfd_arch_bits_per_address(abfd) /
|
||||
bfd_arch_bits_per_byte(abfd));
|
||||
|
||||
|
||||
old = bfd_tell(abfd);
|
||||
bfd_seek(abfd, 8 * N_W_VARIABLES, 1);
|
||||
|
||||
bfd_seek(abfd, (file_ptr) (8 * N_W_VARIABLES), SEEK_CUR);
|
||||
|
||||
ieee->w.r.extension_record = bfd_tell(abfd);
|
||||
bfd_write((char *)exten, 1, sizeof(exten), abfd);
|
||||
@ -2776,7 +2768,7 @@ DEFUN(ieee_write_object_contents,(abfd),
|
||||
|
||||
|
||||
/* Generate the header */
|
||||
bfd_seek(abfd, old, false);
|
||||
bfd_seek(abfd, old, SEEK_SET);
|
||||
|
||||
for (i= 0; i < N_W_VARIABLES; i++) {
|
||||
ieee_write_2bytes(abfd,ieee_assign_value_to_variable_enum);
|
||||
|
@ -290,21 +290,20 @@ PROTO(char *, aout_stab_name, (int code));
|
||||
obj_reloc_entry_size (abfd)); \
|
||||
NAME(aout,swap_exec_header_out) (abfd, execp, &exec_bytes); \
|
||||
\
|
||||
bfd_seek (abfd, 0L, false); \
|
||||
bfd_seek (abfd, (file_ptr) 0, SEEK_SET); \
|
||||
bfd_write ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd); \
|
||||
/* Now write out reloc info, followed by syms and strings */ \
|
||||
\
|
||||
if (bfd_get_symcount (abfd) != 0) \
|
||||
{ \
|
||||
bfd_seek (abfd, \
|
||||
(long)(N_SYMOFF(*execp)), false); \
|
||||
bfd_seek (abfd, (file_ptr)(N_SYMOFF(*execp)), SEEK_SET); \
|
||||
\
|
||||
NAME(aout,write_syms)(abfd); \
|
||||
\
|
||||
bfd_seek (abfd, (long)(N_TRELOFF(*execp)), false); \
|
||||
bfd_seek (abfd, (file_ptr)(N_TRELOFF(*execp)), SEEK_SET); \
|
||||
\
|
||||
if (!NAME(aout,squirt_out_relocs) (abfd, obj_textsec (abfd))) return false; \
|
||||
bfd_seek (abfd, (long)(N_DRELOFF(*execp)), false); \
|
||||
bfd_seek (abfd, (file_ptr)(N_DRELOFF(*execp)), SEEK_SET); \
|
||||
\
|
||||
if (!NAME(aout,squirt_out_relocs)(abfd, obj_datasec (abfd))) return false; \
|
||||
} \
|
||||
|
181
bfd/libbfd.c
181
bfd/libbfd.c
@ -18,14 +18,19 @@ 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. */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
/** Dummies for targets that don't want or need to implement
|
||||
certain operations */
|
||||
/*
|
||||
SECTION
|
||||
libbfd
|
||||
|
||||
DESCRIPTION
|
||||
This file contains various routines which are used within BFD.
|
||||
They are not intended for export, but are documented here for
|
||||
completeness.
|
||||
*/
|
||||
|
||||
boolean
|
||||
DEFUN(_bfd_dummy_new_section_hook,(ignore, ignore_newsect),
|
||||
@ -125,10 +130,18 @@ DEFUN(zalloc,(size),
|
||||
}
|
||||
#endif
|
||||
|
||||
/*proto-internal* bfd_xmalloc
|
||||
bfd_xmalloc -- Like malloc, but exit if no more memory.
|
||||
*; PROTO(PTR, bfd_xmalloc,( bfd_size_type size));
|
||||
/*
|
||||
INTERNAL_FUNCTION
|
||||
bfd_xmalloc
|
||||
|
||||
SYNOPSIS
|
||||
PTR bfd_xmalloc( bfd_size_type size);
|
||||
|
||||
DESCRIPTION
|
||||
Like malloc, but exit if no more memory.
|
||||
|
||||
*/
|
||||
|
||||
/** There is major inconsistency in how running out of memory is handled.
|
||||
Some routines return a NULL, and set bfd_error to no_memory.
|
||||
However, obstack routines can't do this ... */
|
||||
@ -137,11 +150,10 @@ bfd_xmalloc -- Like malloc, but exit if no more memory.
|
||||
DEFUN(PTR bfd_xmalloc,(size),
|
||||
bfd_size_type size)
|
||||
{
|
||||
static char no_memory_message[] = "Virtual memory exhausted!\n";
|
||||
static CONST char no_memory_message[] = "Virtual memory exhausted!\n";
|
||||
PTR ptr;
|
||||
if (size == 0) size = 1;
|
||||
ptr = (PTR)malloc(size);
|
||||
if (ptr == NULL)
|
||||
if (!ptr)
|
||||
{
|
||||
write (2, no_memory_message, sizeof(no_memory_message)-1);
|
||||
@ -189,9 +201,18 @@ DEFUN(bfd_write,(ptr, size, nitems, abfd),
|
||||
return fwrite (ptr, 1, (int)(size*nitems), bfd_cache_lookup(abfd));
|
||||
}
|
||||
|
||||
/*proto-internal* bfd_write_bigendian_4byte_int
|
||||
/*
|
||||
INTERNAL_FUNCTION
|
||||
bfd_write_bigendian_4byte_int
|
||||
|
||||
SYNOPSIS
|
||||
void bfd_write_bigendian_4byte_int(bfd *abfd, int i);
|
||||
|
||||
DESCRIPTION
|
||||
Writes a 4 byte integer to the outputing bfd, in big endian
|
||||
mode regardless of what else is going on. This is usefull in
|
||||
archives.
|
||||
|
||||
*; PROTO(void, bfd_write_bigendian_4byte_int,( bfd *abfd, int i));
|
||||
*/
|
||||
void
|
||||
DEFUN(bfd_write_bigendian_4byte_int,(abfd, i),
|
||||
@ -307,60 +328,69 @@ DEFUN(bfd_add_to_string_table,(table, new_string, table_length, free_ptr),
|
||||
functions in swap.h #ifdef __GNUC__.
|
||||
Gprof them later and find out. */
|
||||
|
||||
/*proto*
|
||||
*i bfd_put_size
|
||||
*i bfd_get_size
|
||||
These macros as used for reading and writing raw data in sections;
|
||||
each access (except for bytes) is vectored through the target format
|
||||
of the BFD and mangled accordingly. The mangling performs any
|
||||
necessary endian translations and removes alignment restrictions.
|
||||
*+
|
||||
#define bfd_put_8(abfd, val, ptr) \
|
||||
(*((char *)ptr) = (char)val)
|
||||
#define bfd_get_8(abfd, ptr) \
|
||||
(*((char *)ptr))
|
||||
#define bfd_put_16(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx16, (val,ptr))
|
||||
#define bfd_get_16(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx16, (ptr))
|
||||
#define bfd_put_32(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx32, (val,ptr))
|
||||
#define bfd_get_32(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx32, (ptr))
|
||||
#define bfd_put_64(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx64, (val, ptr))
|
||||
#define bfd_get_64(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx64, (ptr))
|
||||
*-
|
||||
*-*/
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_put_size
|
||||
FUNCTION
|
||||
bfd_get_size
|
||||
|
||||
/*proto*
|
||||
*i bfd_h_put_size
|
||||
*i bfd_h_get_size
|
||||
These macros have the same function as their @code{bfd_get_x}
|
||||
bretherin, except that they are used for removing information for the
|
||||
header records of object files. Believe it or not, some object files
|
||||
keep their header records in big endian order, and their data in little
|
||||
endan order.
|
||||
*+
|
||||
#define bfd_h_put_8(abfd, val, ptr) \
|
||||
(*((char *)ptr) = (char)val)
|
||||
#define bfd_h_get_8(abfd, ptr) \
|
||||
(*((char *)ptr))
|
||||
#define bfd_h_put_16(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_putx16,(val,ptr))
|
||||
#define bfd_h_get_16(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_getx16,(ptr))
|
||||
#define bfd_h_put_32(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_putx32,(val,ptr))
|
||||
#define bfd_h_get_32(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_getx32,(ptr))
|
||||
#define bfd_h_put_64(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_putx64,(val, ptr))
|
||||
#define bfd_h_get_64(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_h_getx64,(ptr))
|
||||
*-
|
||||
*-*/
|
||||
DESCRIPTION
|
||||
These macros as used for reading and writing raw data in
|
||||
sections; each access (except for bytes) is vectored through
|
||||
the target format of the BFD and mangled accordingly. The
|
||||
mangling performs any necessary endian translations and
|
||||
removes alignment restrictions.
|
||||
|
||||
.#define bfd_put_8(abfd, val, ptr) \
|
||||
. (*((char *)ptr) = (char)val)
|
||||
.#define bfd_get_8(abfd, ptr) \
|
||||
. (*((char *)ptr))
|
||||
.#define bfd_put_16(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_putx16, (val,ptr))
|
||||
.#define bfd_get_16(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_getx16, (ptr))
|
||||
.#define bfd_put_32(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_putx32, (val,ptr))
|
||||
.#define bfd_get_32(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_getx32, (ptr))
|
||||
.#define bfd_put_64(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_putx64, (val, ptr))
|
||||
.#define bfd_get_64(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_getx64, (ptr))
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_h_put_size
|
||||
FUNCTION
|
||||
bfd_h_get_size
|
||||
|
||||
DESCRIPTION
|
||||
These macros have the same function as their <<bfd_get_x>>
|
||||
bretherin, except that they are used for removing information
|
||||
for the header records of object files. Believe it or not,
|
||||
some object files keep their header records in big endian
|
||||
order, and their data in little endan order.
|
||||
|
||||
.#define bfd_h_put_8(abfd, val, ptr) \
|
||||
. (*((char *)ptr) = (char)val)
|
||||
.#define bfd_h_get_8(abfd, ptr) \
|
||||
. (*((char *)ptr))
|
||||
.#define bfd_h_put_16(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_putx16,(val,ptr))
|
||||
.#define bfd_h_get_16(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_getx16,(ptr))
|
||||
.#define bfd_h_put_32(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_putx32,(val,ptr))
|
||||
.#define bfd_h_get_32(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_getx32,(ptr))
|
||||
.#define bfd_h_put_64(abfd, val, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_putx64,(val, ptr))
|
||||
.#define bfd_h_get_64(abfd, ptr) \
|
||||
. BFD_SEND(abfd, bfd_h_getx64,(ptr))
|
||||
|
||||
*/
|
||||
|
||||
bfd_vma
|
||||
DEFUN(_do_getb16,(addr),
|
||||
@ -532,8 +562,8 @@ DEFUN(bfd_generic_get_section_contents, (abfd, section, location, offset, count)
|
||||
{
|
||||
if (count == 0)
|
||||
return true;
|
||||
if ((bfd_size_type)(offset+count) > section->size
|
||||
|| bfd_seek(abfd,(file_ptr)( section->filepos + offset), SEEK_SET) == -1
|
||||
if ((bfd_size_type)(offset+count) > section->_raw_size
|
||||
|| bfd_seek(abfd, (file_ptr)(section->filepos + offset), SEEK_SET) == -1
|
||||
|| bfd_read(location, (bfd_size_type)1, count, abfd) != count)
|
||||
return (false); /* on error */
|
||||
return (true);
|
||||
@ -553,19 +583,24 @@ DEFUN(bfd_generic_set_section_contents, (abfd, section, location, offset, count)
|
||||
{
|
||||
if (count == 0)
|
||||
return true;
|
||||
if ((bfd_size_type)(offset+count) > section->size
|
||||
if ((bfd_size_type)(offset+count) > bfd_get_section_size_after_reloc(section)
|
||||
|| bfd_seek(abfd, (file_ptr)(section->filepos + offset), SEEK_SET) == -1
|
||||
|| bfd_write(location, (bfd_size_type)1, count, abfd) != count)
|
||||
return (false); /* on error */
|
||||
return (true);
|
||||
}
|
||||
|
||||
/*proto-internal*
|
||||
*i bfd_log2
|
||||
Return the log base 2 of the value supplied, rounded up. eg an arg
|
||||
of 1025 would return 11.
|
||||
*; PROTO(bfd_vma, bfd_log2,(bfd_vma x));
|
||||
*-*/
|
||||
/*
|
||||
INTERNAL_FUNCTION
|
||||
bfd_log2
|
||||
|
||||
DESCRIPTION
|
||||
Return the log base 2 of the value supplied, rounded up. eg an
|
||||
arg of 1025 would return 11.
|
||||
|
||||
SYNOPSIS
|
||||
bfd_vma bfd_log2(bfd_vma x);
|
||||
*/
|
||||
|
||||
bfd_vma bfd_log2(x)
|
||||
bfd_vma x;
|
||||
|
@ -282,7 +282,7 @@ DEFUN(oasys_archive_p,(abfd),
|
||||
|
||||
filepos = header.mod_tbl_offset;
|
||||
for (i = 0; i < header.mod_count; i++) {
|
||||
bfd_seek(abfd , filepos, SEEK_SET);
|
||||
bfd_seek(abfd, filepos, SEEK_SET);
|
||||
|
||||
/* There are two ways of specifying the archive header */
|
||||
|
||||
|
@ -49,15 +49,17 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
struct trad_core_struct
|
||||
{
|
||||
asection *data_section;
|
||||
asection *stack_section;
|
||||
asection *reg_section;
|
||||
/* This struct is just for allocating two things with one zalloc, so
|
||||
they will be freed together, without violating alignment constraints. */
|
||||
|
||||
struct user u;
|
||||
} *rawptr;
|
||||
struct trad_core_struct
|
||||
{
|
||||
asection *data_section;
|
||||
asection *stack_section;
|
||||
asection *reg_section;
|
||||
|
||||
struct user u;
|
||||
} *rawptr;
|
||||
|
||||
#define core_upage(bfd) (&((bfd)->tdata.trad_core_data->u))
|
||||
#define core_datasec(bfd) ((bfd)->tdata.trad_core_data->data_section)
|
||||
@ -74,11 +76,8 @@ sco_core_file_p (abfd)
|
||||
{
|
||||
int val;
|
||||
struct user u;
|
||||
/* This struct is just for allocating two things with one zalloc, so
|
||||
they will be freed together, without violating alignment constraints. */
|
||||
|
||||
|
||||
bfd_seek(abfd, 0, SEEK_SET);
|
||||
bfd_seek(abfd, (file_ptr) 0, SEEK_SET);
|
||||
val = bfd_read ((void *)&u, 1, sizeof u, abfd);
|
||||
if (val != sizeof u)
|
||||
return 0; /* Too small to be a core file */
|
||||
@ -89,7 +88,8 @@ sco_core_file_p (abfd)
|
||||
|
||||
/* 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));
|
||||
rawptr = (struct trad_core_struct *)
|
||||
bfd_zalloc (abfd, sizeof (struct trad_core_struct));
|
||||
if (rawptr == NULL) {
|
||||
bfd_error = no_memory;
|
||||
return 0;
|
||||
@ -97,7 +97,7 @@ sco_core_file_p (abfd)
|
||||
|
||||
abfd->tdata.trad_core_data = rawptr;
|
||||
|
||||
rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
|
||||
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. */
|
||||
|
Loading…
Reference in New Issue
Block a user