aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2007-03-16 15:13:21 +0000
committerNick Clifton <nickc@redhat.com>2007-03-16 15:13:21 +0000
commit591a748af9fb110937669a59bcf60fee440f2042 (patch)
treeab7f28f106653bb37bc3b39e5a1ec95b342a1240 /binutils
parent29975052f1690bab530c126559a7a638af23134c (diff)
downloadgdb-591a748af9fb110937669a59bcf60fee440f2042.zip
gdb-591a748af9fb110937669a59bcf60fee440f2042.tar.gz
gdb-591a748af9fb110937669a59bcf60fee440f2042.tar.bz2
Use pc-relative relocation instead of an absolute relocation for x86_64-pc-mingw32 target.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/dlltool.c6
-rw-r--r--binutils/readelf.c52
3 files changed, 37 insertions, 26 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index c831cee..91b5fae 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-16 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * dlltool.c (make_one_lib_file): Use pc-relative relocation
+ instead of an absolute relocation for x86_64-pc-mingw32 target.
+
2007-03-15 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (REPORT_BUGS_TO): Removed.
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 1bcd974..8ee61d3 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -2412,6 +2412,12 @@ make_one_lib_file (export_type *exp, int i)
BFD_RELOC_16_GOTOFF);
rel->sym_ptr_ptr = iname_pp;
}
+ else if (machine == MX86)
+ {
+ rel->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_32_PCREL);
+ rel->sym_ptr_ptr = iname_pp;
+ }
else
{
rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 4cde91b..359ddbe 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -711,7 +711,7 @@ slurp_rela_relocs (FILE *file,
if (relas == NULL)
{
free (erelas);
- error (_("out of memory parsing relocs"));
+ error (_("out of memory parsing relocs\n"));
return 0;
}
@@ -739,7 +739,7 @@ slurp_rela_relocs (FILE *file,
if (relas == NULL)
{
free (erelas);
- error (_("out of memory parsing relocs"));
+ error (_("out of memory parsing relocs\n"));
return 0;
}
@@ -783,7 +783,7 @@ slurp_rel_relocs (FILE *file,
if (rels == NULL)
{
free (erels);
- error (_("out of memory parsing relocs"));
+ error (_("out of memory parsing relocs\n"));
return 0;
}
@@ -811,7 +811,7 @@ slurp_rel_relocs (FILE *file,
if (rels == NULL)
{
free (erels);
- error (_("out of memory parsing relocs"));
+ error (_("out of memory parsing relocs\n"));
return 0;
}
@@ -2814,7 +2814,7 @@ request_dump (unsigned int section, int type)
new_dump_sects = calloc (section + 1, 1);
if (new_dump_sects == NULL)
- error (_("Out of memory allocating dump request table."));
+ error (_("Out of memory allocating dump request table.\n"));
else
{
/* Copy current flag settings. */
@@ -2842,11 +2842,11 @@ request_dump_byname (const char *section, int type)
new_request = malloc (sizeof (struct dump_list_entry));
if (!new_request)
- error (_("Out of memory allocating dump request table."));
+ error (_("Out of memory allocating dump request table.\n"));
new_request->name = strdup (section);
if (!new_request->name)
- error (_("Out of memory allocating dump request table."));
+ error (_("Out of memory allocating dump request table.\n"));
new_request->type = type;
@@ -3512,7 +3512,7 @@ process_program_headers (FILE *file)
sec = find_section (".dynamic");
if (sec == NULL || sec->sh_size == 0)
{
- error (_("no .dynamic section in the dynamic segment"));
+ error (_("no .dynamic section in the dynamic segment\n"));
break;
}
@@ -3521,9 +3521,9 @@ process_program_headers (FILE *file)
if (dynamic_addr < segment->p_offset
|| dynamic_addr > segment->p_offset + segment->p_filesz)
- warn (_("the .dynamic section is not contained within the dynamic segment"));
+ warn (_("the .dynamic section is not contained within the dynamic segment\n"));
else if (dynamic_addr > segment->p_offset)
- warn (_("the .dynamic section is not the first section in the dynamic segment."));
+ warn (_("the .dynamic section is not the first section in the dynamic segment.\n"));
}
else
{
@@ -3544,7 +3544,7 @@ process_program_headers (FILE *file)
int ret = snprintf (fmt, sizeof (fmt), "%%%ds", PATH_MAX);
if (ret >= (int) sizeof (fmt) || ret < 0)
- error (_("Internal error: failed to create format string to display program interpreter"));
+ error (_("Internal error: failed to create format string to display program interpreter\n"));
program_interpreter[0] = 0;
if (fscanf (file, fmt, program_interpreter) <= 0)
@@ -5865,7 +5865,7 @@ process_dynamic_section (FILE *file)
else
{
if (fseek (file, 0, SEEK_END))
- error (_("Unable to seek to end of file!"));
+ error (_("Unable to seek to end of file!\n"));
section.sh_size = ftell (file) - section.sh_offset;
}
@@ -7063,7 +7063,7 @@ process_symbol_table (FILE *file)
sizeof nb + sizeof nc)),
SEEK_SET))
{
- error (_("Unable to seek to start of dynamic information"));
+ error (_("Unable to seek to start of dynamic information\n"));
return 0;
}
@@ -7289,7 +7289,7 @@ process_symbol_table (FILE *file)
check_def = 0;
}
else if (! is_nobits)
- error (_("bad dynamic symbol"));
+ error (_("bad dynamic symbol\n"));
else
check_def = 1;
}
@@ -7372,7 +7372,7 @@ process_symbol_table (FILE *file)
lengths = calloc (nbuckets, sizeof (*lengths));
if (lengths == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
for (hn = 0; hn < nbuckets; ++hn)
@@ -7388,7 +7388,7 @@ process_symbol_table (FILE *file)
counts = calloc (maxlength + 1, sizeof (*counts));
if (counts == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
@@ -7437,7 +7437,7 @@ process_symbol_table (FILE *file)
sizeof nb)),
SEEK_SET))
{
- error (_("Unable to seek to start of dynamic information"));
+ error (_("Unable to seek to start of dynamic information\n"));
return 0;
}
@@ -7461,7 +7461,7 @@ process_symbol_table (FILE *file)
+ offset_from_vma (file, buckets_vma, 4)),
SEEK_SET))
{
- error (_("Unable to seek to start of dynamic information"));
+ error (_("Unable to seek to start of dynamic information\n"));
return 0;
}
@@ -7491,7 +7491,7 @@ process_symbol_table (FILE *file)
+ 4 * (ngnubuckets + maxchain), 4)),
SEEK_SET))
{
- error (_("Unable to seek to start of dynamic information"));
+ error (_("Unable to seek to start of dynamic information\n"));
return 0;
}
@@ -7515,7 +7515,7 @@ process_symbol_table (FILE *file)
+ offset_from_vma (file, buckets_vma + 4 * ngnubuckets, 4)),
SEEK_SET))
{
- error (_("Unable to seek to start of dynamic information"));
+ error (_("Unable to seek to start of dynamic information\n"));
return 0;
}
@@ -7527,7 +7527,7 @@ process_symbol_table (FILE *file)
lengths = calloc (ngnubuckets, sizeof (*lengths));
if (lengths == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
@@ -7552,7 +7552,7 @@ process_symbol_table (FILE *file)
counts = calloc (maxlength + 1, sizeof (*counts));
if (counts == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
@@ -8550,7 +8550,7 @@ process_mips_specific (FILE *file)
iopt = cmalloc ((sect->sh_size / sizeof (eopt)), sizeof (*iopt));
if (iopt == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
@@ -8735,14 +8735,14 @@ process_mips_specific (FILE *file)
if (dynamic_symbols == NULL)
{
- error (_("conflict list found without a dynamic symbol table"));
+ error (_("conflict list found without a dynamic symbol table\n"));
return 0;
}
iconf = cmalloc (conflictsno, sizeof (*iconf));
if (iconf == NULL)
{
- error (_("Out of memory"));
+ error (_("Out of memory\n"));
return 0;
}
@@ -9699,7 +9699,7 @@ main (int argc, char **argv)
/* Make a copy of the dump_sects array. */
cmdline_dump_sects = malloc (num_dump_sects);
if (cmdline_dump_sects == NULL)
- error (_("Out of memory allocating dump request table."));
+ error (_("Out of memory allocating dump request table.\n"));
else
{
memcpy (cmdline_dump_sects, dump_sects, num_dump_sects);