/* BFD back-end for MS-DOS executables.
- Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002
Free Software Foundation, Inc.
Written by Bryan Ford of the University of Utah.
#define EXE_LOAD_LOW 0xffff
#define EXE_PAGE_SIZE 512
-static int msdos_sizeof_headers PARAMS ((bfd *, boolean));
-static boolean msdos_write_object_contents PARAMS ((bfd *));
-static boolean msdos_set_section_contents PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
+static int msdos_sizeof_headers
+ PARAMS ((bfd *, bfd_boolean));
+static bfd_boolean msdos_write_object_contents
+ PARAMS ((bfd *));
+static bfd_boolean msdos_set_section_contents
+ PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
static int
msdos_sizeof_headers (abfd, exec)
bfd *abfd ATTRIBUTE_UNUSED;
- boolean exec ATTRIBUTE_UNUSED;
+ bfd_boolean exec ATTRIBUTE_UNUSED;
{
return 0;
}
-static boolean
+static bfd_boolean
msdos_write_object_contents (abfd)
bfd *abfd;
{
if (high_vma > (bfd_vma)0xffff)
{
bfd_set_error(bfd_error_file_too_big);
- return false;
+ return FALSE;
}
/* Constants. */
- bfd_h_put_16(abfd, EXE_MAGIC, &hdr[0]);
- bfd_h_put_16(abfd, EXE_PAGE_SIZE / 16, &hdr[8]);
- bfd_h_put_16(abfd, EXE_LOAD_LOW, &hdr[12]);
- bfd_h_put_16(abfd, 0x3e, &hdr[24]);
- bfd_h_put_16(abfd, 0x0001, &hdr[28]); /* XXX??? */
- bfd_h_put_16(abfd, 0x30fb, &hdr[30]); /* XXX??? */
- bfd_h_put_16(abfd, 0x726a, &hdr[32]); /* XXX??? */
+ H_PUT_16 (abfd, EXE_MAGIC, &hdr[0]);
+ H_PUT_16 (abfd, EXE_PAGE_SIZE / 16, &hdr[8]);
+ H_PUT_16 (abfd, EXE_LOAD_LOW, &hdr[12]);
+ H_PUT_16 (abfd, 0x3e, &hdr[24]);
+ H_PUT_16 (abfd, 0x0001, &hdr[28]); /* XXX??? */
+ H_PUT_16 (abfd, 0x30fb, &hdr[30]); /* XXX??? */
+ H_PUT_16 (abfd, 0x726a, &hdr[32]); /* XXX??? */
/* Bytes in last page (0 = full page). */
- bfd_h_put_16(abfd, outfile_size & (EXE_PAGE_SIZE - 1), &hdr[2]);
+ H_PUT_16 (abfd, outfile_size & (EXE_PAGE_SIZE - 1), &hdr[2]);
/* Number of pages. */
- bfd_h_put_16(abfd, (outfile_size + EXE_PAGE_SIZE - 1) / EXE_PAGE_SIZE,
- &hdr[4]);
+ H_PUT_16 (abfd, (outfile_size + EXE_PAGE_SIZE - 1) / EXE_PAGE_SIZE, &hdr[4]);
/* Set the initial stack pointer to the end of the bss.
The program's crt0 code must relocate it to a real stack. */
- bfd_h_put_16(abfd, high_vma, &hdr[16]);
+ H_PUT_16 (abfd, high_vma, &hdr[16]);
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
- || bfd_write (hdr, 1, sizeof(hdr), abfd) != sizeof(hdr))
- return false;
+ || bfd_bwrite (hdr, (bfd_size_type) sizeof(hdr), abfd) != sizeof(hdr))
+ return FALSE;
- return true;
+ return TRUE;
}
-static boolean
+static bfd_boolean
msdos_set_section_contents (abfd, section, location, offset, count)
bfd *abfd;
sec_ptr section;
{
if (count == 0)
- return true;
+ return TRUE;
section->filepos = EXE_PAGE_SIZE + bfd_get_section_vma (abfd, section);
if (bfd_get_section_flags (abfd, section) & SEC_LOAD)
{
- if (bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET) != 0
- || bfd_write (location, 1, count, abfd) != count)
- return false;
+ if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
+ || bfd_bwrite (location, count, abfd) != count)
+ return FALSE;
}
- return true;
+ return TRUE;
}
#define msdos_bfd_relax_section bfd_generic_relax_section
#define msdos_bfd_gc_sections bfd_generic_gc_sections
#define msdos_bfd_merge_sections bfd_generic_merge_sections
+#define msdos_bfd_discard_group bfd_generic_discard_group
#define msdos_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
+#define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
#define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols
+#define msdos_bfd_link_just_syms _bfd_generic_link_just_syms
#define msdos_bfd_final_link _bfd_generic_final_link
#define msdos_bfd_link_split_section _bfd_generic_link_split_section
#define msdos_set_arch_mach _bfd_generic_set_arch_mach
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0
};