/* Support for the generic parts of PE/PEI, for BFD.
- Copyright (C) 1995-2018 Free Software Foundation, Inc.
+ Copyright (C) 1995-2020 Free Software Foundation, Inc.
Written by Cygnus Solutions.
This file is part of BFD, the Binary File Descriptor library.
/* in_reloc_p is architecture dependent. */
pe->in_reloc_p = in_reloc_p;
+ /* Default DOS message string. */
+ pe->dos_message[0] = 0x0eba1f0e;
+ pe->dos_message[1] = 0xcd09b400;
+ pe->dos_message[2] = 0x4c01b821;
+ pe->dos_message[3] = 0x685421cd;
+ pe->dos_message[4] = 0x70207369;
+ pe->dos_message[5] = 0x72676f72;
+ pe->dos_message[6] = 0x63206d61;
+ pe->dos_message[7] = 0x6f6e6e61;
+ pe->dos_message[8] = 0x65622074;
+ pe->dos_message[9] = 0x6e757220;
+ pe->dos_message[10] = 0x206e6920;
+ pe->dos_message[11] = 0x20534f44;
+ pe->dos_message[12] = 0x65646f6d;
+ pe->dos_message[13] = 0x0a0d0d2e;
+ pe->dos_message[14] = 0x24;
+ pe->dos_message[15] = 0x0;
+
memset (& pe->pe_opthdr, 0, sizeof pe->pe_opthdr);
return TRUE;
}
coff_data (abfd) ->flags = 0;
#endif
+ memcpy (pe->dos_message, internal_f->pe.dos_message,
+ sizeof (pe->dos_message));
+
return (void *) pe;
}
flags = SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_KEEP | SEC_IN_MEMORY;
- bfd_set_section_flags (vars->abfd, sec, flags | extra_flags);
+ bfd_set_section_flags (sec, flags | extra_flags);
- (void) bfd_set_section_alignment (vars->abfd, sec, 2);
+ bfd_set_section_alignment (sec, 2);
/* Check that we will not run out of space. */
BFD_ASSERT (vars->data + size < vars->bim->buffer + vars->bim->size);
/* Set the section size and contents. The actual
contents are filled in by our parent. */
- bfd_set_section_size (vars->abfd, sec, (bfd_size_type) size);
+ bfd_set_section_size (sec, (bfd_size_type) size);
sec->contents = vars->data;
sec->target_index = vars->sec_index ++;
case IMPORT_CONST:
/* XXX code yet to be written. */
/* xgettext:c-format */
- _bfd_error_handler (_("%B: Unhandled import type; %x"),
+ _bfd_error_handler (_("%pB: unhandled import type; %x"),
abfd, import_type);
return FALSE;
default:
/* xgettext:c-format */
- _bfd_error_handler (_("%B: Unrecognised import type; %x"),
+ _bfd_error_handler (_("%pB: unrecognized import type; %x"),
abfd, import_type);
return FALSE;
}
default:
/* xgettext:c-format */
- _bfd_error_handler (_("%B: Unrecognised import name type; %x"),
+ _bfd_error_handler (_("%pB: unrecognized import name type; %x"),
abfd, import_name_type);
return FALSE;
}
/* Point the bfd at the symbol table. */
obj_symbols (abfd) = vars.sym_cache;
- bfd_get_symcount (abfd) = vars.sym_index;
+ abfd->symcount = vars.sym_index;
obj_raw_syments (abfd) = vars.native_syms;
obj_raw_syment_count (abfd) = vars.sym_index;
#endif
break;
- case IMAGE_FILE_MACHINE_M68K:
-#ifdef MC68AGIC
- magic = MC68MAGIC;
-#endif
- break;
-
case IMAGE_FILE_MACHINE_R3000:
case IMAGE_FILE_MACHINE_R4000:
case IMAGE_FILE_MACHINE_R10000:
default:
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: Unrecognised machine type (0x%x)"
+ (_("%pB: unrecognised machine type (0x%x)"
" in Import Library Format archive"),
abfd, machine);
bfd_set_error (bfd_error_malformed_archive);
{
_bfd_error_handler
/* xgettext:c-format */
- (_("%B: Recognised but unhandled machine type (0x%x)"
+ (_("%pB: recognised but unhandled machine type (0x%x)"
" in Import Library Format archive"),
abfd, machine);
bfd_set_error (bfd_error_wrong_format);
if (size == 0)
{
_bfd_error_handler
- (_("%B: size field is zero in Import Library Format header"), abfd);
+ (_("%pB: size field is zero in Import Library Format header"), abfd);
bfd_set_error (bfd_error_malformed_archive);
return NULL;
|| (bfd_size_type) ((bfd_byte *) source_dll - ptr) >= size)
{
_bfd_error_handler
- (_("%B: string not null terminated in ILF object file."), abfd);
+ (_("%pB: string not null terminated in ILF object file"), abfd);
bfd_set_error (bfd_error_malformed_archive);
bfd_release (abfd, ptr);
return NULL;
if (dataoff >= section->size
|| size > section->size - dataoff)
{
- _bfd_error_handler (_("%B: Error: Debug Data ends beyond end of debug directory."),
- abfd);
+ _bfd_error_handler
+ (_("%pB: error: debug data ends beyond end of debug directory"),
+ abfd);
return;
}
break;
}
}
+
+ free (data);
}
static const bfd_target *
return NULL;
}
+ memcpy (internal_f.pe.dos_message, dos_hdr.dos_message,
+ sizeof (internal_f.pe.dos_message));
+
/* Read the optional header, which has variable size. */
opt_hdr_size = internal_f.f_opthdr;