summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Anglin <dave.anglin@nrc.ca>2004-03-19 19:19:53 +0000
committerDave Anglin <dave.anglin@nrc.ca>2004-03-19 19:19:53 +0000
commitc196a9890830e301eaddba390ae2a018cfd9f520 (patch)
treea14655e931a79b817444691555e781e6a5c67c0a
parent4dd615e1183bff2abcd7cd02b3e50d4c69b8f6bb (diff)
downloadbinutils-redhat-c196a9890830e301eaddba390ae2a018cfd9f520.tar.gz
* elf-hppa.h (elf_hppa_reloc_final_type): Handle selectors for
R_PARISC_PCREL32 and R_PARISC_PCREL64 relocations. * tc-hppa.c (cons_fix_new_hppa): Check for PC relative base type. (pa_comm): Set BSF_OBJECT in symbol flags.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf-hppa.h22
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-hppa.c3
4 files changed, 35 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 58c5ffb70d..5d145bfab9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * elf-hppa.h (elf_hppa_reloc_final_type): Handle selectors for
+ R_PARISC_PCREL32 and R_PARISC_PCREL64 relocations.
+
2004-03-19 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index a5c0b44288..5efd808819 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -812,6 +812,28 @@ elf_hppa_reloc_final_type (bfd *abfd,
}
break;
+ case 32:
+ switch (field)
+ {
+ case e_fsel:
+ final_type = R_PARISC_PCREL32;
+ break;
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
+ case 64:
+ switch (field)
+ {
+ case e_fsel:
+ final_type = R_PARISC_PCREL64;
+ break;
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
default:
return R_PARISC_NONE;
}
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bb9d78f601..33085e0908 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * tc-hppa.c (cons_fix_new_hppa): Check for PC relative base type.
+ (pa_comm): Set BSF_OBJECT in symbol flags.
+
2004-03-19 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 7fbcd0a6e0..77563a99be 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -1399,6 +1399,8 @@ cons_fix_new_hppa (frag, where, size, exp)
/* Get a base relocation type. */
if (is_DP_relative (*exp))
rel_type = R_HPPA_GOTOFF;
+ else if (is_PC_relative (*exp))
+ rel_type = R_HPPA_PCREL_CALL;
else if (is_complex (*exp))
rel_type = R_HPPA_COMPLEX;
else
@@ -6386,6 +6388,7 @@ pa_comm (unused)
if (symbol)
{
+ symbol_get_bfdsym (symbol)->flags |= BSF_OBJECT;
S_SET_VALUE (symbol, size);
S_SET_SEGMENT (symbol, bfd_und_section_ptr);
S_SET_EXTERNAL (symbol);