summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2000-04-04 11:23:34 +0000
committerAlan Modra <amodra@bigpond.net.au>2000-04-04 11:23:34 +0000
commitbac2fe4cb3f4498bb4e4f4bd9e78f56e3f0d7616 (patch)
tree34f5b0d5e3451cf6519a05053b24e8070979b09b
parent077cdaab6294625144a53d0a8211478b882d0969 (diff)
downloadgdb-bac2fe4cb3f4498bb4e4f4bd9e78f56e3f0d7616.tar.gz
Don't emit relative relocations for non-loaded sections in shared objects.
Fix for DWARF-2 sections .debug_info and .debug_line.
-rw-r--r--bfd/ChangeLog14
-rw-r--r--bfd/elf64-alpha.c7
2 files changed, 14 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6fba1475ff6..9d93de1b8fa 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,7 +1,13 @@
2000-04-03 H.J. Lu <hjl@gnu.org>
* cache.c (bfd_open_file): Unlink the output file only if
- it has none zero size.
+ it has non-zero size.
+
+2000-04-01 Ken Block USG <block@zk3.dec.com>
+
+ * elf64-alpha.c (elf64_alpha_relocate_section): Don't emit
+ relative relocations for non-loaded sections in shared objects.
+ (elf64_alpha_check_relocs): Similarly.
2000-03-31 Thomas de Lellis <tdel@wrs.com>
@@ -19,7 +25,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
The new logic in m32r_elf_lo16_reloc() has been removed, and
it instead calls the new routine to obtain that functionality.
-2000-03-27 Alan Modra <alan@linuxcare.com>
+2000-03-27 Alan Modra <alan@linuxcare.com.au>
* elf32-avr.c (elf32_avr_gc_mark_hook, elf32_avr_gc_sweep_hook,
elf32_avr_check_relocs, avr_final_link_relocate,
@@ -72,7 +78,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* coff-h8300.c (h8300_reloc16_extra_cases): Fix the sanity
check for R_MOVL2.
-2000-03-11 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-03-11 Alan Modra <alan@linuxcare.com.au>
* ieee.c (ieee_archive_p): Return bfd_error_wrong_format on
a format mismatch rather than an "error" from bfd_read such as
@@ -102,7 +108,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
are paired. The addend for R_MIPS_GNU_REL16_S2
is shifted right two bits.
-2000-03-10 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-03-10 Alan Modra <alan@linuxcare.com.au>
* reloc.c (bfd_perform_relocation): Undo emacs formatting of
comment, and ensure it doesn't happen again.
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index c8d8f0e566f..4da9e925c63 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -2581,9 +2581,10 @@ elf64_alpha_check_relocs (abfd, info, sec, relocs)
else
rent->count++;
}
- else if (info->shared)
+ else if (info->shared && (sec->flags & SEC_ALLOC))
{
- /* If this is a shared library, we need a RELATIVE reloc. */
+ /* If this is a shared library, and the section is to be
+ loaded into memory, we need a RELATIVE reloc. */
sreloc->_raw_size += sizeof (Elf64_External_Rela);
}
break;
@@ -3623,7 +3624,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
outrel.r_addend = addend;
addend = 0, relocation = 0;
}
- else if (info->shared)
+ else if (info->shared && (input_section->flags & SEC_ALLOC))
{
outrel.r_info = ELF64_R_INFO(0, R_ALPHA_RELATIVE);
outrel.r_addend = 0;