* peicode.h (pe_print_idata): Move otherwise unused variables into
the #ifdef where they are used. Always return a value. (pe_print_edata): Change fprintf strings and add cast to make fprintf strings correspond to actual types. Always return a value. (pe_print_pdata): Removed unused variable addr_value. Always return a value. (pe_print_reloc): Remove unused variable onaline. Make fprintf strings and arguments correspond. Always return a value.
This commit is contained in:
parent
1680791e64
commit
187783e019
116
bfd/peicode.h
116
bfd/peicode.h
@ -771,7 +771,7 @@ static void add_data_entry (abfd, aout, idx, name, base)
|
||||
/* add import directory information if it exists */
|
||||
if (sec != NULL)
|
||||
{
|
||||
aout->DataDirectory[idx].VirtualAddress = sec->lma - base;
|
||||
aout->DataDirectory[idx].VirtualAddress = sec->vma - base;
|
||||
aout->DataDirectory[idx].Size = sec->_cooked_size;
|
||||
sec->flags |= SEC_DATA;
|
||||
}
|
||||
@ -844,12 +844,16 @@ coff_swap_aouthdr_out (abfd, in, out)
|
||||
bfd_vma dsize= 0;
|
||||
bfd_vma isize = SA(abfd->sections->filepos);
|
||||
bfd_vma tsize= 0;
|
||||
#ifdef PPC
|
||||
isize = 0;
|
||||
#endif
|
||||
|
||||
for (sec = abfd->sections; sec; sec = sec->next)
|
||||
{
|
||||
int rounded = FA(sec->_raw_size);
|
||||
|
||||
if (strcmp(sec->name,".junk") == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (sec->flags & SEC_DATA)
|
||||
dsize += rounded;
|
||||
if (sec->flags & SEC_CODE)
|
||||
@ -1070,6 +1074,16 @@ coff_swap_scnhdr_out (abfd, in, out)
|
||||
else if (strcmp (scnhdr_int->s_name, ".drectve") == 0)
|
||||
flags = IMAGE_SCN_LNK_INFO | IMAGE_SCN_LNK_REMOVE ;
|
||||
/* end of ppc-nt additions */
|
||||
#ifdef POWERPC_LE_PE
|
||||
else if (strncmp (scnhdr_int->s_name, ".stabstr", strlen(".stabstr")) == 0)
|
||||
{
|
||||
flags = IMAGE_SCN_LNK_INFO;
|
||||
}
|
||||
else if (strcmp (scnhdr_int->s_name, ".stab") == 0)
|
||||
{
|
||||
flags = IMAGE_SCN_LNK_INFO;
|
||||
}
|
||||
#endif
|
||||
|
||||
bfd_h_put_32(abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
|
||||
}
|
||||
@ -1137,10 +1151,6 @@ pe_print_idata(abfd, vfile)
|
||||
bfd_size_type i;
|
||||
bfd_size_type start, stop;
|
||||
int onaline = 20;
|
||||
bfd_vma addr_value;
|
||||
bfd_vma loadable_toc_address;
|
||||
bfd_vma toc_address;
|
||||
bfd_vma start_address;
|
||||
|
||||
pe_data_type *pe = pe_data (abfd);
|
||||
struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr;
|
||||
@ -1158,6 +1168,9 @@ pe_print_idata(abfd, vfile)
|
||||
and the descriptor is supposed to be in the .reldata section.
|
||||
*/
|
||||
|
||||
bfd_vma loadable_toc_address;
|
||||
bfd_vma toc_address;
|
||||
bfd_vma start_address;
|
||||
bfd_byte *data = 0;
|
||||
int offset;
|
||||
data = (bfd_byte *) bfd_malloc ((size_t) bfd_section_size (abfd,
|
||||
@ -1185,12 +1198,6 @@ pe_print_idata(abfd, vfile)
|
||||
"\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n",
|
||||
start_address, loadable_toc_address, toc_address);
|
||||
}
|
||||
else
|
||||
{
|
||||
loadable_toc_address = 0;
|
||||
toc_address = 0;
|
||||
start_address = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
fprintf(file,
|
||||
@ -1330,6 +1337,8 @@ pe_print_idata(abfd, vfile)
|
||||
}
|
||||
|
||||
free (data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static boolean
|
||||
@ -1399,43 +1408,50 @@ pe_print_edata(abfd, vfile)
|
||||
"\nThe Export Tables (interpreted .edata section contents)\n\n");
|
||||
|
||||
fprintf(file,
|
||||
"Export Flags \t\t\t%x\n",edt.export_flags);
|
||||
"Export Flags \t\t\t%lx\n", (unsigned long) edt.export_flags);
|
||||
|
||||
fprintf(file,
|
||||
"Time/Date stamp \t\t%x\n",edt.time_stamp);
|
||||
"Time/Date stamp \t\t%lx\n", (unsigned long) edt.time_stamp);
|
||||
|
||||
fprintf(file,
|
||||
"Major/Minor \t\t\t%d/%d\n", edt.major_ver, edt.minor_ver);
|
||||
|
||||
fprintf(file,
|
||||
"Name \t\t\t\t%x %s\n", edt.name, data + edt.name + adj);
|
||||
fprintf (file,
|
||||
"Name \t\t\t\t");
|
||||
fprintf_vma (file, edt.name);
|
||||
fprintf (file,
|
||||
"%s\n", data + edt.name + adj);
|
||||
|
||||
fprintf(file,
|
||||
"Ordinal Base \t\t\t%d\n", edt.base);
|
||||
"Ordinal Base \t\t\t%ld\n", edt.base);
|
||||
|
||||
fprintf(file,
|
||||
"Number in:\n");
|
||||
|
||||
fprintf(file,
|
||||
"\tExport Address Table \t\t%x\n", edt.num_functions);
|
||||
"\tExport Address Table \t\t%lx\n",
|
||||
(unsigned long) edt.num_functions);
|
||||
|
||||
fprintf(file,
|
||||
"\t[Name Pointer/Ordinal] Table\t%d\n", edt.num_names);
|
||||
"\t[Name Pointer/Ordinal] Table\t%ld\n", edt.num_names);
|
||||
|
||||
fprintf(file,
|
||||
"Table Addresses\n");
|
||||
|
||||
fprintf(file,
|
||||
"\tExport Address Table \t\t%x\n",
|
||||
edt.eat_addr);
|
||||
fprintf (file,
|
||||
"\tExport Address Table \t\t");
|
||||
fprintf_vma (file, edt.eat_addr);
|
||||
fprintf (file, "\n");
|
||||
|
||||
fprintf(file,
|
||||
"\tName Pointer Table \t\t%x\n",
|
||||
edt.npt_addr);
|
||||
fprintf (file,
|
||||
"\tName Pointer Table \t\t");
|
||||
fprintf_vma (file, edt.npt_addr);
|
||||
fprintf (file, "\n");
|
||||
|
||||
fprintf(file,
|
||||
"\tOrdinal Table \t\t\t%x\n",
|
||||
edt.ot_addr);
|
||||
fprintf (file,
|
||||
"\tOrdinal Table \t\t\t");
|
||||
fprintf_vma (file, edt.ot_addr);
|
||||
fprintf (file, "\n");
|
||||
|
||||
|
||||
/* The next table to find si the Export Address Table. It's basically
|
||||
@ -1449,7 +1465,7 @@ pe_print_edata(abfd, vfile)
|
||||
*/
|
||||
|
||||
fprintf(file,
|
||||
"\nExport Address Table -- Ordinal Base %d\n",
|
||||
"\nExport Address Table -- Ordinal Base %ld\n",
|
||||
edt.base);
|
||||
|
||||
for (i = 0; i < edt.num_functions; ++i)
|
||||
@ -1469,16 +1485,16 @@ pe_print_edata(abfd, vfile)
|
||||
/* this rva is to a name (forwarding function) in our section */
|
||||
/* Should locate a function descriptor */
|
||||
fprintf(file,
|
||||
"\t[%4d] +base[%4d] %04lx %s -- %s\n",
|
||||
i, i+edt.base, eat_member, "Forwarder RVA",
|
||||
data + eat_member + adj);
|
||||
"\t[%4ld] +base[%4ld] %04lx %s -- %s\n",
|
||||
(long) i, (long) (i + edt.base), eat_member,
|
||||
"Forwarder RVA", data + eat_member + adj);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Should locate a function descriptor in the reldata section */
|
||||
fprintf(file,
|
||||
"\t[%4d] +base[%4d] %04lx %s\n",
|
||||
i, i+edt.base, eat_member, "Export RVA");
|
||||
"\t[%4ld] +base[%4ld] %04lx %s\n",
|
||||
(long) i, (long) (i + edt.base), eat_member, "Export RVA");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1501,11 +1517,13 @@ pe_print_edata(abfd, vfile)
|
||||
edt.ot_addr
|
||||
+ (i*2) + adj);
|
||||
fprintf(file,
|
||||
"\t[%4d] %s\n", ord, name);
|
||||
"\t[%4ld] %s\n", (long) ord, name);
|
||||
|
||||
}
|
||||
|
||||
free (data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static boolean
|
||||
@ -1520,11 +1538,15 @@ pe_print_pdata(abfd, vfile)
|
||||
bfd_size_type i;
|
||||
bfd_size_type start, stop;
|
||||
int onaline = 20;
|
||||
bfd_vma addr_value;
|
||||
|
||||
if (section == 0)
|
||||
return true;
|
||||
|
||||
stop = bfd_section_size (abfd, section);
|
||||
if ((stop % onaline) != 0)
|
||||
fprintf (file, "Warning, .pdata section size (%ld) is not a multiple of %d\n",
|
||||
(long)stop, onaline);
|
||||
|
||||
fprintf(file,
|
||||
"\nThe Function Table (interpreted .pdata section contents)\n");
|
||||
fprintf(file,
|
||||
@ -1547,8 +1569,6 @@ pe_print_pdata(abfd, vfile)
|
||||
|
||||
start = 0;
|
||||
|
||||
stop = bfd_section_size (abfd, section);
|
||||
|
||||
for (i = start; i < stop; i += onaline)
|
||||
{
|
||||
bfd_vma begin_addr;
|
||||
@ -1566,7 +1586,8 @@ pe_print_pdata(abfd, vfile)
|
||||
eh_data = bfd_get_32(abfd, data+i+12);
|
||||
prolog_end_addr = bfd_get_32(abfd, data+i+16);
|
||||
|
||||
if (begin_addr == 0)
|
||||
if (begin_addr == 0 && end_addr == 0 && eh_handler == 0
|
||||
&& eh_data == 0 && prolog_end_addr == 0)
|
||||
{
|
||||
/* We are probably into the padding of the
|
||||
section now */
|
||||
@ -1615,6 +1636,8 @@ pe_print_pdata(abfd, vfile)
|
||||
}
|
||||
|
||||
free (data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const char *tbl[6] =
|
||||
@ -1638,8 +1661,6 @@ pe_print_reloc(abfd, vfile)
|
||||
bfd_size_type datasize = 0;
|
||||
bfd_size_type i;
|
||||
bfd_size_type start, stop;
|
||||
int onaline = 20;
|
||||
bfd_vma addr_value;
|
||||
|
||||
if (section == 0)
|
||||
return true;
|
||||
@ -1684,8 +1705,7 @@ pe_print_reloc(abfd, vfile)
|
||||
}
|
||||
|
||||
fprintf (file,
|
||||
"\nVirtual Address: %08lx Chunk size %d (0x%x) "
|
||||
"Number of fixups %d\n",
|
||||
"\nVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n",
|
||||
virtual_address, size, size, number);
|
||||
|
||||
for (j = 0; j < number; ++j)
|
||||
@ -1698,14 +1718,16 @@ pe_print_reloc(abfd, vfile)
|
||||
abort();
|
||||
|
||||
fprintf(file,
|
||||
"\treloc %4d offset %4x [%4x] %s\n",
|
||||
j, off, off+virtual_address, tbl[t]);
|
||||
"\treloc %4d offset %4x [%4lx] %s\n",
|
||||
j, off, (long) (off + virtual_address), tbl[t]);
|
||||
|
||||
}
|
||||
i += size;
|
||||
}
|
||||
|
||||
free (data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static boolean
|
||||
|
Loading…
Reference in New Issue
Block a user