X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fpeicode.h;h=ed0c544d856581635af37eb9b12a0c15fdca291f;hb=a7e3d08a26edefa411269636d7dcae7dd2736659;hp=b5046b3192cab030e3ccaef3c8db9a75663be77d;hpb=871b3ab29e87cf0de15f7e49ad19acc4f7f6f84c;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/peicode.h b/bfd/peicode.h index b5046b3192..ed0c544d85 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-2020 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 (_("%pB: Unhandled import type; %x"), + _bfd_error_handler (_("%pB: unhandled import type; %x"), abfd, import_type); return FALSE; default: /* xgettext:c-format */ - _bfd_error_handler (_("%pB: 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 (_("%pB: 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 */ - (_("%pB: 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 */ - (_("%pB: 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); @@ -1277,7 +1292,7 @@ pe_ILF_object_p (bfd * abfd) || (bfd_size_type) ((bfd_byte *) source_dll - ptr) >= size) { _bfd_error_handler - (_("%pB: 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 (_("%pB: 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; } @@ -1380,6 +1396,8 @@ pe_bfd_read_buildid (bfd *abfd) break; } } + + free (data); } static const bfd_target * @@ -1461,6 +1479,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;