/* 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 ++;
/* 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;
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;