+2008-05-09 Kai Tietz <kai.tietz@onevision.com>
+
+ ld/PR6502
+ * emultempl/pep.em (compute_dll_image_base): Use bfd_vma instead of long
+ and change return type to bfd_vma.
+ (definfo): Change type of address from long to bfd_vma.
+ (set_pep_value): Replace strtoul to strtoull.
+ (gld_${EMULATION_NAME}_set_symbols): use bfd_vma instead of long..
+ * pe-dll.c (pe_dll_generate_def_file): Use fprintf_vma to print ImageBase.
+ (quick_reloc): Change argument address from int to bfd_size_type.
+
2008-05-08 Tom Tromey <tromey@redhat.com>
* ld.texinfo (PowerPC64 ELF64): Fix typo.
{
void *ptr;
int size;
- int value;
+ bfd_vma value;
char *symbol;
int inited;
} definfo;
static void
-set_pep_name (char *name, long val)
+set_pep_name (char *name, bfd_vma val)
{
int i;
{
char *end;
- set_pep_name (name, strtoul (optarg, &end, 0));
+ set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0));
if (end == optarg)
einfo (_("%P%F: invalid hex number for PE parameter '%s'\n"), optarg);
/* Use the output file to create a image base for relocatable DLLs. */
-static unsigned long
+static bfd_vma
compute_dll_image_base (const char *ofile)
{
- unsigned long hash = strhash (ofile);
+ bfd_vma hash = (bfd_vma) strhash (ofile);
return 0x61300000 + ((hash << 16) & 0x0FFC0000);
}
#endif
for (j = 0; init[j].ptr; j++)
{
- long val = init[j].value;
+ bfd_vma val = init[j].value;
lang_assignment_statement_type *rv;
rv = lang_add_assignment (exp_assop ('=', init[j].symbol,
exp_intop (val)));
if (init[j].size == sizeof (short))
- *(short *) init[j].ptr = val;
+ *(short *) init[j].ptr = (short) val;
else if (init[j].size == sizeof (int))
- *(int *) init[j].ptr = val;
+ *(int *) init[j].ptr = (int) val;
else if (init[j].size == sizeof (long))
- *(long *) init[j].ptr = val;
+ *(long *) init[j].ptr = (long) val;
/* This might be a long long or other special type. */
else if (init[j].size == sizeof (bfd_vma))
*(bfd_vma *) init[j].ptr = val;
quoteput (pe_def_file->name, out, 1);
if (pe_data (link_info.output_bfd)->pe_opthdr.ImageBase)
- fprintf (out, " BASE=0x%lx",
- (unsigned long)
- pe_data (link_info.output_bfd)->pe_opthdr.ImageBase);
+ {
+ fprintf (out, " BASE=0x");
+ fprintf_vma (out, ((bfd_vma) pe_data (link_info.output_bfd)->pe_opthdr.ImageBase));
+ }
fprintf (out, "\n");
}
static int relcount = 0, relsize = 0;
static void
-quick_reloc (bfd *abfd, int address, int which_howto, int symidx)
+quick_reloc (bfd *abfd, bfd_size_type address, int which_howto, int symidx)
{
if (relcount >= relsize - 1)
{