X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fpeicode.h;h=e9d205a01a10437a95fc15c85094ddc5985e26c4;hb=b61121178ec07f9da1242e439fe1a23a314ad30e;hp=30dc08b45eae80d2c84244d13a5b1c361f460b7d;hpb=830db0485e19000985ccfdbacda4d4d5d62583bb;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/peicode.h b/bfd/peicode.h index 30dc08b45e..e9d205a01a 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -1,5 +1,5 @@ /* Support for the generic parts of PE/PEI, for BFD. - Copyright (C) 1995-2018 Free Software Foundation, Inc. + Copyright (C) 1995-2019 Free Software Foundation, Inc. Written by Cygnus Solutions. This file is part of BFD, the Binary File Descriptor library. @@ -271,6 +271,24 @@ pe_mkobject (bfd * abfd) /* 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; } @@ -325,6 +343,9 @@ pe_mkobject_hook (bfd * abfd, coff_data (abfd) ->flags = 0; #endif + memcpy (pe->dos_message, internal_f->pe.dos_message, + sizeof (pe->dos_message)); + return (void *) pe; } @@ -608,16 +629,16 @@ pe_ILF_make_a_section (pe_ILF_vars * vars, 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 ++; @@ -772,13 +793,13 @@ pe_ILF_build_a_bfd (bfd * abfd, 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; } @@ -793,7 +814,7 @@ pe_ILF_build_a_bfd (bfd * abfd, 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; } @@ -1093,7 +1114,7 @@ pe_ILF_build_a_bfd (bfd * abfd, /* 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; @@ -1167,12 +1188,6 @@ pe_ILF_object_p (bfd * abfd) #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: @@ -1214,7 +1229,7 @@ pe_ILF_object_p (bfd * abfd) 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); @@ -1227,7 +1242,7 @@ pe_ILF_object_p (bfd * abfd) { _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); @@ -1245,7 +1260,7 @@ pe_ILF_object_p (bfd * abfd) 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; @@ -1277,7 +1292,7 @@ pe_ILF_object_p (bfd * abfd) || (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; @@ -1332,8 +1347,9 @@ pe_bfd_read_buildid (bfd *abfd) 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; } @@ -1461,6 +1477,9 @@ pe_bfd_object_p (bfd * abfd) 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;