diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 1 | ||||
-rw-r--r-- | bfd/peicode.h | 210 |
2 files changed, 105 insertions, 106 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7014689..ac11c6c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -8,6 +8,7 @@ * pe-sh.c: Likewise. * pei-mips.c: Likewise. * pei-sh.c: Likewise. + * peicode.h: Likewise. * ppcboot.c: Likewise. * ptrace-core.c: Likewise. diff --git a/bfd/peicode.h b/bfd/peicode.h index 22ddb2a..4a022f2 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -103,29 +103,29 @@ typedef struct bfd_byte * data; struct bfd_in_memory * bim; unsigned short magic; - + arelent * reltab; unsigned int relcount; coff_symbol_type * sym_cache; coff_symbol_type * sym_ptr; unsigned int sym_index; - + unsigned int * sym_table; unsigned int * table_ptr; - + combined_entry_type * native_syms; combined_entry_type * native_ptr; coff_symbol_type ** sym_ptr_table; coff_symbol_type ** sym_ptr_ptr; - + unsigned int sec_index; char * string_table; char * string_ptr; char * end_string_ptr; - + SYMENT * esym_table; SYMENT * esym_ptr; @@ -166,7 +166,6 @@ coff_swap_reloc_in (abfd, src, dst) #endif } - static unsigned int coff_swap_reloc_out (abfd, src, dst) bfd *abfd; @@ -223,7 +222,7 @@ coff_swap_filehdr_in (abfd, src, dst) #if 0 /* We can't assume that the PE header is at offset 0x80. When it isn't, the DOS header isn't read correctly, so we can't assume - e_magic is set even for valid PE files. */ + e_magic is set even for valid PE files. */ if (bfd_h_get_16 (abfd, (bfd_byte *) filehdr_src->e_magic) != DOSMAGIC) filehdr_dst->f_magic = -1; #endif @@ -237,7 +236,7 @@ coff_swap_filehdr_in (abfd, src, dst) filehdr_dst->f_flags |= F_LSYMS; } - filehdr_dst->f_opthdr = bfd_h_get_16(abfd, + filehdr_dst->f_opthdr = bfd_h_get_16(abfd, (bfd_byte *)filehdr_src-> f_opthdr); } @@ -256,7 +255,7 @@ coff_swap_scnhdr_in (abfd, ext, in) SCNHDR *scnhdr_ext = (SCNHDR *) ext; struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in; - memcpy(scnhdr_int->s_name, scnhdr_ext->s_name, sizeof(scnhdr_int->s_name)); + memcpy(scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name)); scnhdr_int->s_vaddr = GET_SCNHDR_VADDR (abfd, (bfd_byte *) scnhdr_ext->s_vaddr); scnhdr_int->s_paddr = @@ -286,7 +285,7 @@ coff_swap_scnhdr_in (abfd, ext, in) (bfd_byte *) scnhdr_ext->s_nlnno); #endif - if (scnhdr_int->s_vaddr != 0) + if (scnhdr_int->s_vaddr != 0) { scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase; scnhdr_int->s_vaddr &= 0xffffffff; @@ -311,7 +310,7 @@ pe_mkobject (abfd) bfd * abfd; { pe_data_type *pe; - abfd->tdata.pe_obj_data = + abfd->tdata.pe_obj_data = (struct pe_tdata *) bfd_zalloc (abfd, sizeof (pe_data_type)); if (abfd->tdata.pe_obj_data == 0) @@ -367,15 +366,15 @@ pe_mkobject_hook (abfd, filehdr, aouthdr) abfd->flags |= HAS_DEBUG; #ifdef COFF_IMAGE_WITH_PE - if (aouthdr) + if (aouthdr) pe->pe_opthdr = ((struct internal_aouthdr *)aouthdr)->pe; #endif -#ifdef ARM +#ifdef ARM if (! _bfd_coff_arm_set_private_flags (abfd, internal_f->f_flags)) coff_data (abfd) ->flags = 0; #endif - + return (PTR) pe; } @@ -424,7 +423,7 @@ pe_bfd_copy_private_bfd_data (ibfd, obfd) /* Code to handle Microsoft's Image Library Format. Also known as LINK6 format. - Documentation about this format can be found at: + Documentation about this format can be found at: http://msdn.microsoft.com/library/specs/pecoff_section8.htm */ @@ -450,7 +449,7 @@ pe_bfd_copy_private_bfd_data (ibfd, obfd) #define NUM_ILF_RELOCS 8 #define NUM_ILF_SECTIONS 6 #define NUM_ILF_SYMS (2 + NUM_ILF_SECTIONS) - + #define SIZEOF_ILF_SYMS (NUM_ILF_SYMS * sizeof (* vars.sym_cache)) #define SIZEOF_ILF_SYM_TABLE (NUM_ILF_SYMS * sizeof (* vars.sym_table)) #define SIZEOF_ILF_NATIVE_SYMS (NUM_ILF_SYMS * sizeof (* vars.native_syms)) @@ -468,7 +467,7 @@ pe_bfd_copy_private_bfd_data (ibfd, obfd) #define SIZEOF_IDATA6 (2 + strlen (symbol_name) + 1 + 1) #define SIZEOF_IDATA7 (strlen (source_dll) + 1 + 1) #define SIZEOF_ILF_SECTIONS (NUM_ILF_SECTIONS * sizeof (struct coff_section_tdata)) - + #define ILF_DATA_SIZE \ sizeof (* vars.bim) \ + SIZEOF_ILF_SYMS \ @@ -487,7 +486,6 @@ pe_bfd_copy_private_bfd_data (ibfd, obfd) + SIZEOF_ILF_SECTIONS \ + MAX_TEXT_SECTION_SIZE - /* Create an empty relocation against the given symbol. */ static void pe_ILF_make_a_symbol_reloc (pe_ILF_vars * vars, @@ -501,7 +499,7 @@ pe_ILF_make_a_symbol_reloc (pe_ILF_vars * vars, entry = vars->reltab + vars->relcount; internal = vars->int_reltab + vars->relcount; - + entry->address = address; entry->addend = 0; entry->howto = bfd_reloc_type_lookup (vars->abfd, reloc); @@ -515,9 +513,9 @@ pe_ILF_make_a_symbol_reloc (pe_ILF_vars * vars, internal->r_extern = 0; internal->r_offset = 0; #endif - + vars->relcount ++; - + BFD_ASSERT (vars->relcount <= NUM_ILF_RELOCS); } @@ -573,8 +571,8 @@ pe_ILF_make_a_symbol (pe_ILF_vars * vars, sclass = C_STAT; else sclass = C_EXT; - -#ifdef THUMBPEMAGIC + +#ifdef THUMBPEMAGIC if (vars->magic == THUMBPEMAGIC) { if (extra_flags & BSF_FUNCTION) @@ -587,7 +585,7 @@ pe_ILF_make_a_symbol (pe_ILF_vars * vars, #endif BFD_ASSERT (vars->sym_index < NUM_ILF_SYMS); - + sym = vars->sym_ptr; ent = vars->native_ptr; esym = vars->esym_ptr; @@ -597,7 +595,7 @@ pe_ILF_make_a_symbol (pe_ILF_vars * vars, if (section == NULL) section = (asection_ptr) & bfd_und_section; - + /* Initialise the external symbol. */ bfd_h_put_32 (vars->abfd, vars->string_ptr - vars->string_table, (bfd_byte *) esym->e.e.e_offset); bfd_h_put_16 (vars->abfd, section->target_index, (bfd_byte *) esym->e_scnum); @@ -611,12 +609,12 @@ pe_ILF_make_a_symbol (pe_ILF_vars * vars, esym->e_type = T_NULL; esym->e_numaux = 0; #endif - + /* Initialise the internal symbol structure. */ ent->u.syment.n_sclass = sclass; ent->u.syment.n_scnum = section->target_index; ent->u.syment._n._n_n._n_offset = (long) sym; - + #if 0 /* See comment above. */ ent->u.syment.n_value = 0; ent->u.syment.n_flags = 0; @@ -624,23 +622,23 @@ pe_ILF_make_a_symbol (pe_ILF_vars * vars, ent->u.syment.n_numaux = 0; ent->fix_value = 0; #endif - + sym->symbol.the_bfd = vars->abfd; sym->symbol.name = vars->string_ptr; sym->symbol.flags = BSF_EXPORT | BSF_GLOBAL | extra_flags; sym->symbol.section = section; sym->native = ent; - + #if 0 /* See comment above. */ sym->symbol.value = 0; sym->symbol.udata.i = 0; sym->done_lineno = false; sym->lineno = NULL; #endif - + * vars->table_ptr = vars->sym_index; * vars->sym_ptr_ptr = sym; - + /* Adjust pointers for the next symbol. */ vars->sym_index ++; vars->sym_ptr ++; @@ -662,20 +660,20 @@ pe_ILF_make_a_section (pe_ILF_vars * vars, { asection_ptr sec; flagword flags; - + sec = bfd_make_section_old_way (vars->abfd, name); if (sec == NULL) return NULL; - + 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_alignment (vars->abfd, 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, size); @@ -684,26 +682,26 @@ pe_ILF_make_a_section (pe_ILF_vars * vars, /* Advance data pointer in the vars structure. */ vars->data += size; - + /* Skip the padding byte if it was not needed. The logic here is that if the string length is odd, then the entire string length, including the null byte, is even and so the extra, padding byte, is not needed. */ if (size & 1) vars->data --; - + /* Create a coff_section_tdata structure for our use. */ sec->used_by_bfd = (struct coff_section_tdata *) vars->data; vars->data += sizeof (struct coff_section_tdata); BFD_ASSERT (vars->data <= vars->bim->buffer + vars->bim->size); - + /* Create a symbol to refer to this section. */ pe_ILF_make_a_symbol (vars, "", name, sec, BSF_LOCAL); /* Cache the index to the symbol in the coff_section_data structure. */ coff_section_data (vars->abfd, sec)->i = vars->sym_index - 1; - + return sec; } @@ -734,7 +732,7 @@ static jump_table jtab[] = 8, 2 }, #endif - + #ifdef MC68MAGIC { MC68MAGIC, { /* XXX fill me in */ }, 0, 0 }, #endif @@ -745,7 +743,7 @@ static jump_table jtab[] = 16, 0 }, #endif - + #ifdef SH_ARCH_MAGIC_WINCE { SH_ARCH_MAGIC_WINCE, { 0x01, 0xd0, 0x02, 0x60, 0x2b, 0x40, @@ -753,7 +751,7 @@ static jump_table jtab[] = 12, 8 }, #endif - + #ifdef ARMPEMAGIC { ARMPEMAGIC, { 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0, @@ -761,7 +759,7 @@ static jump_table jtab[] = 12, 8 }, #endif - + #ifdef THUMBPEMAGIC { THUMBPEMAGIC, { 0x40, 0xb4, 0x02, 0x4e, 0x36, 0x68, 0xb4, 0x46, @@ -784,7 +782,7 @@ pe_ILF_build_a_bfd (bfd * abfd, bfd_byte * source_dll, unsigned int ordinal, unsigned int types) -{ +{ bfd_byte * ptr; pe_ILF_vars vars; struct internal_filehdr internal_f; @@ -803,13 +801,13 @@ pe_ILF_build_a_bfd (bfd * abfd, case IMPORT_CODE: case IMPORT_DATA: break; - + case IMPORT_CONST: /* XXX code yet to be written. */ _bfd_error_handler (_("%s: Unhandled import type; %x"), bfd_get_filename (abfd), import_type); return false; - + default: _bfd_error_handler (_("%s: Unrecognised import type; %x"), bfd_get_filename (abfd), import_type); @@ -823,7 +821,7 @@ pe_ILF_build_a_bfd (bfd * abfd, case IMPORT_NAME_NOPREFIX: case IMPORT_NAME_UNDECORATE: break; - + default: _bfd_error_handler (_("%s: Unrecognised import name type; %x"), bfd_get_filename (abfd), import_name_type); @@ -831,10 +829,10 @@ pe_ILF_build_a_bfd (bfd * abfd, } /* Initialise local variables. - + Note these are kept in a structure rather than being declared as statics since bfd frowns on global variables. - + We are going to construct the contents of the BFD in memory, so allocate all the space that we will need right now. */ ptr = bfd_zalloc (abfd, ILF_DATA_SIZE); @@ -846,14 +844,14 @@ pe_ILF_build_a_bfd (bfd * abfd, vars.bim->buffer = ptr; vars.bim->size = ILF_DATA_SIZE; ptr += sizeof (* vars.bim); - + /* Initialise the pointers to regions of the memory and the other contents of the pe_ILF_vars structure as well. */ vars.sym_cache = (coff_symbol_type *) ptr; vars.sym_ptr = (coff_symbol_type *) ptr; vars.sym_index = 0; ptr += SIZEOF_ILF_SYMS; - + vars.sym_table = (unsigned int *) ptr; vars.table_ptr = (unsigned int *) ptr; ptr += SIZEOF_ILF_SYM_TABLE; @@ -865,11 +863,11 @@ pe_ILF_build_a_bfd (bfd * abfd, vars.sym_ptr_table = (coff_symbol_type **) ptr; vars.sym_ptr_ptr = (coff_symbol_type **) ptr; ptr += SIZEOF_ILF_SYM_PTR_TABLE; - + vars.esym_table = (SYMENT *) ptr; vars.esym_ptr = (SYMENT *) ptr; ptr += SIZEOF_ILF_EXT_SYMS; - + vars.reltab = (arelent *) ptr; vars.relcount = 0; ptr += SIZEOF_ILF_RELOCS; @@ -881,14 +879,14 @@ pe_ILF_build_a_bfd (bfd * abfd, vars.string_ptr = ptr + STRING_SIZE_SIZE; ptr += SIZEOF_ILF_STRINGS; vars.end_string_ptr = ptr; - + /* The remaining space in bim->buffer is used by the pe_ILF_make_a_section() function. */ vars.data = ptr; vars.abfd = abfd; vars.sec_index = 0; vars.magic = magic; - + /* Create the initial .idata$<n> sections: [.idata$2: Import Directory Table -- not needed] .idata$4: Import Lookup Table @@ -900,21 +898,21 @@ pe_ILF_build_a_bfd (bfd * abfd, id5 = pe_ILF_make_a_section (& vars, ".idata$5", SIZEOF_IDATA5, 0); if (id4 == NULL || id5 == NULL) return false; - + /* Fill in the contents of these sections. */ if (import_name_type == IMPORT_ORDINAL) { if (ordinal == 0) /* XXX - treat as IMPORT_NAME ??? */ abort (); - + * (unsigned int *) id4->contents = ordinal | 0x80000000; * (unsigned int *) id5->contents = ordinal | 0x80000000; } else { char * symbol; - + /* Create .idata$6 - the Hint Name Table. */ id6 = pe_ILF_make_a_section (& vars, ".idata$6", SIZEOF_IDATA6, 0); if (id6 == NULL) @@ -936,10 +934,10 @@ pe_ILF_build_a_bfd (bfd * abfd, * symbol = 0; } - + id6->contents[0] = ordinal & 0xff; id6->contents[1] = ordinal >> 8; - + strcpy (id6->contents + 2, symbol); } @@ -947,7 +945,7 @@ pe_ILF_build_a_bfd (bfd * abfd, { pe_ILF_make_a_reloc (& vars, 0, BFD_RELOC_RVA, id6); pe_ILF_save_relocs (& vars, id4); - + pe_ILF_make_a_reloc (& vars, 0, BFD_RELOC_RVA, id6); pe_ILF_save_relocs (& vars, id5); } @@ -956,7 +954,7 @@ pe_ILF_build_a_bfd (bfd * abfd, switch (import_type) { int i; - + case IMPORT_CODE: /* Create a .text section. First we need to look up its contents in the jump table. */ @@ -983,9 +981,9 @@ pe_ILF_build_a_bfd (bfd * abfd, pe_ILF_make_a_symbol (& vars, "__imp_", symbol_name, id5, 0); imp_sym = vars.sym_ptr_ptr - 1; imp_index = vars.sym_index - 1; - + /* Create a reloc for the data in the text section. */ -#ifdef MIPS_ARCH_MAGIC_WINCE +#ifdef MIPS_ARCH_MAGIC_WINCE if (magic == MIPS_ARCH_MAGIC_WINCE) { pe_ILF_make_a_symbol_reloc (& vars, 0, BFD_RELOC_HI16_S, @@ -998,7 +996,7 @@ pe_ILF_build_a_bfd (bfd * abfd, #endif pe_ILF_make_a_symbol_reloc (& vars, jtab[i].offset, BFD_RELOC_32, (asymbol **) imp_sym, imp_index); - + pe_ILF_save_relocs (& vars, text); break; @@ -1009,15 +1007,15 @@ pe_ILF_build_a_bfd (bfd * abfd, /* XXX code not yet written. */ abort (); } - + /* Initialise the bfd. */ memset (& internal_f, 0, sizeof (internal_f)); - + internal_f.f_magic = magic; internal_f.f_symptr = 0; internal_f.f_nsyms = 0; internal_f.f_flags = F_AR32WR | F_LNNO; /* XXX is this correct ? */ - + if ( ! bfd_set_start_address (abfd, 0) || ! bfd_coff_set_arch_mach_hook (abfd, & internal_f)) return false; @@ -1026,12 +1024,12 @@ pe_ILF_build_a_bfd (bfd * abfd, return false; coff_data (abfd)->pe = 1; -#ifdef THUMBPEMAGIC +#ifdef THUMBPEMAGIC if (vars.magic == THUMBPEMAGIC) /* Stop some linker warnings about thumb code not supporting interworking. */ coff_data (abfd)->flags |= F_INTERWORK | F_INTERWORK_SET; #endif - + /* Switch from file contents to memory contents. */ bfd_cache_close (abfd); @@ -1044,11 +1042,11 @@ pe_ILF_build_a_bfd (bfd * abfd, switch (import_type) { bfd_byte * ptr; - + case IMPORT_CODE: pe_ILF_make_a_symbol (& vars, "", symbol_name, text, BSF_NOT_AT_END | BSF_FUNCTION); - + /* Create an import symbol for the DLL, without the .dll suffix. */ ptr = strrchr (source_dll, '.'); @@ -1062,7 +1060,7 @@ pe_ILF_build_a_bfd (bfd * abfd, case IMPORT_DATA: /* Nothing to do here. */ break; - + default: /* XXX code not yet written. */ abort (); @@ -1071,16 +1069,16 @@ 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; - + obj_raw_syments (abfd) = vars.native_syms; obj_raw_syment_count (abfd) = vars.sym_index; obj_coff_external_syms (abfd) = (PTR) vars.esym_table; obj_coff_keep_syms (abfd) = true; - + obj_convert (abfd) = vars.sym_table; obj_conv_table_size (abfd) = vars.sym_index; - + obj_coff_strings (abfd) = vars.string_table; obj_coff_keep_strings (abfd) = true; @@ -1103,14 +1101,14 @@ pe_ILF_object_p (bfd * abfd) unsigned int ordinal; unsigned int types; unsigned short magic; - + /* Upon entry the first four buyes of the ILF header have already been read. Now read the rest of the header. */ if (bfd_read (buffer, 1, 16, abfd) != 16) return NULL; ptr = buffer; - + /* We do not bother to check the version number. version = bfd_h_get_16 (abfd, ptr); */ ptr += 2; @@ -1120,7 +1118,7 @@ pe_ILF_object_p (bfd * abfd) /* Check that the machine type is recognised. */ magic = 0; - + switch (machine) { case IMAGE_FILE_MACHINE_UNKNOWN: @@ -1128,23 +1126,23 @@ pe_ILF_object_p (bfd * abfd) case IMAGE_FILE_MACHINE_ALPHA64: case IMAGE_FILE_MACHINE_IA64: break; - + case IMAGE_FILE_MACHINE_I386: #ifdef I386MAGIC magic = I386MAGIC; #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: - + case IMAGE_FILE_MACHINE_MIPS16: case IMAGE_FILE_MACHINE_MIPSFPU: case IMAGE_FILE_MACHINE_MIPSFPU16: @@ -1152,31 +1150,31 @@ pe_ILF_object_p (bfd * abfd) magic = MIPS_ARCH_MAGIC_WINCE; #endif break; - + case IMAGE_FILE_MACHINE_SH3: case IMAGE_FILE_MACHINE_SH4: #ifdef SH_ARCH_MAGIC_WINCE magic = SH_ARCH_MAGIC_WINCE; #endif break; - + case IMAGE_FILE_MACHINE_ARM: #ifdef ARMPEMAGIC magic = ARMPEMAGIC; -#endif +#endif break; - + case IMAGE_FILE_MACHINE_THUMB: #ifdef THUMBPEMAGIC { extern const bfd_target TARGET_LITTLE_SYM; - + if (abfd->xvec == & TARGET_LITTLE_SYM) magic = THUMBPEMAGIC; } -#endif +#endif break; - + case IMAGE_FILE_MACHINE_POWERPC: /* We no longer support PowerPC. */ default: @@ -1185,7 +1183,7 @@ pe_ILF_object_p (bfd * abfd) _("%s: Unrecognised machine type (0x%x) in Import Library Format archive"), bfd_get_filename (abfd), machine); bfd_set_error (bfd_error_malformed_archive); - + return NULL; break; } @@ -1197,14 +1195,14 @@ _("%s: Unrecognised machine type (0x%x) in Import Library Format archive"), _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive"), bfd_get_filename (abfd), machine); bfd_set_error (bfd_error_wrong_format); - + return NULL; - } + } /* We do not bother to check the date. date = bfd_h_get_32 (abfd, ptr); */ ptr += 4; - + size = bfd_h_get_32 (abfd, ptr); ptr += 4; @@ -1214,7 +1212,7 @@ _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format arc (_("%s: size field is zero in Import Library Format header"), bfd_get_filename (abfd)); bfd_set_error (bfd_error_malformed_archive); - + return NULL; } @@ -1228,13 +1226,13 @@ _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format arc ptr = bfd_alloc (abfd, size); if (ptr == NULL) return NULL; - + if (bfd_read (ptr, 1, size, abfd) != size) return NULL; symbol_name = ptr; source_dll = ptr + strlen (ptr) + 1; - + /* Verify that the strings are null terminated. */ if (ptr[size - 1] != 0 || ((unsigned long) (source_dll - ptr) >= size)) { @@ -1242,15 +1240,15 @@ _("%s: Recognised but unhandled machine type (0x%x) in Import Library Format arc (_("%s: string not null terminated in ILF object file."), bfd_get_filename (abfd)); bfd_set_error (bfd_error_malformed_archive); - + return NULL; } - + /* Now construct the bfd. */ if (! pe_ILF_build_a_bfd (abfd, magic, symbol_name, source_dll, ordinal, types)) return NULL; - + return abfd->xvec; } @@ -1276,12 +1274,12 @@ pe_bfd_object_p (bfd * abfd) bfd_set_error (bfd_error_wrong_format); return NULL; } - + signature = bfd_h_get_32 (abfd, buffer); - + if (signature == 0xffff0000) return pe_ILF_object_p (abfd); - + if (bfd_seek (abfd, 0x3c, SEEK_SET) != 0 || bfd_read (buffer, 1, 4, abfd) != 4) { @@ -1307,7 +1305,7 @@ pe_bfd_object_p (bfd * abfd) bfd_set_error (bfd_error_wrong_format); return NULL; } - + /* Here is the hack. coff_object_p wants to read filhsz bytes to pick up the COFF header. We adjust so that that will work. 20 is the size of the i386 COFF filehdr. */ |