aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog11
-rw-r--r--ld/emultempl/pep.em18
-rw-r--r--ld/pe-dll.c9
3 files changed, 25 insertions, 13 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index b0ab26e..fc1fec2 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,14 @@
+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.
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index e32f6eb..93190a1 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -245,7 +245,7 @@ typedef struct
{
void *ptr;
int size;
- int value;
+ bfd_vma value;
char *symbol;
int inited;
} definfo;
@@ -331,7 +331,7 @@ gld_${EMULATION_NAME}_list_options (FILE *file)
static void
-set_pep_name (char *name, long val)
+set_pep_name (char *name, bfd_vma val)
{
int i;
@@ -461,7 +461,7 @@ set_pep_value (char *name)
{
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);
@@ -640,10 +640,10 @@ strhash (const char *str)
/* 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
@@ -686,16 +686,16 @@ gld_${EMULATION_NAME}_set_symbols (void)
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;
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 4168aaa..aab6aea 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1447,9 +1447,10 @@ pe_dll_generate_def_file (const char *pe_out_def_filename)
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");
}
@@ -1642,7 +1643,7 @@ static arelent *reltab = 0;
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)
{