summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1996-03-27 20:29:15 +0000
committerIan Lance Taylor <ian@airs.com>1996-03-27 20:29:15 +0000
commit187783e019d9e2d810c4c363042dbbb377568e82 (patch)
tree1f989f9a195df449b1291474dd9c4aef0c1fc159 /bfd
parent1680791e643a59cf8d2516df5f5383dd8b1d3d24 (diff)
downloadbinutils-gdb-187783e019d9e2d810c4c363042dbbb377568e82.tar.gz
* 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.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/peicode.h116
1 files changed, 69 insertions, 47 deletions
diff --git a/bfd/peicode.h b/bfd/peicode.h
index ddb7d70789e..1797e80f9a2 100644
--- a/bfd/peicode.h
+++ b/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