aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-hppa.h
diff options
context:
space:
mode:
authorDave Anglin <dave.anglin@nrc.ca>2008-08-28 02:33:45 +0000
committerDave Anglin <dave.anglin@nrc.ca>2008-08-28 02:33:45 +0000
commit6bba1048d63e0476b94b9934527defd81c590a13 (patch)
tree1ebc01000f49db0a5455491b1a0239466f7042a6 /bfd/elf-hppa.h
parent3c045627c6d3bbf0e893d0f694a83ad8180db8bf (diff)
downloadgdb-6bba1048d63e0476b94b9934527defd81c590a13.zip
gdb-6bba1048d63e0476b94b9934527defd81c590a13.tar.gz
gdb-6bba1048d63e0476b94b9934527defd81c590a13.tar.bz2
* elf-hppa.h (elf_hppa_reloc_final_type): Handle R_PARISC_GPREL64,
R_PARISC_SEGREL32 and R_PARISC_SEGREL64. * som.c (som_fixup_formats): Add R_DATA_GPREL fixup. (som_hppa_howto_table): Likewise. (hppa_som_gen_reloc_type): In case R_HPPA_GOTOFF, detect R_DATA_GPREL final type. (som_write_fixups): Handle R_DATA_GPREL. * config/tc-hppa.c (is_SB_relative): New macro. (fix_new_hppa): Remove $segrel$ marker. (cons_fix_new_hppa): Set reloc type R_PARISC_SEGREL32 if expression is segment relative. * config/tc-hppa.h (tc_frob_symbol): Check for $segrel$.
Diffstat (limited to 'bfd/elf-hppa.h')
-rw-r--r--bfd/elf-hppa.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index d2b5dfd..0aff4cc 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -745,6 +745,17 @@ elf_hppa_reloc_final_type (bfd *abfd,
}
break;
+ case 64:
+ switch (field)
+ {
+ case e_fsel:
+ final_type = R_PARISC_GPREL64;
+ break;
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
default:
return R_PARISC_NONE;
}
@@ -930,9 +941,38 @@ elf_hppa_reloc_final_type (bfd *abfd,
}
break;
+ case R_PARISC_SEGREL32:
+ switch (format)
+ {
+ case 32:
+ switch (field)
+ {
+ case e_fsel:
+ final_type = R_PARISC_SEGREL32;
+ break;
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
+ case 64:
+ switch (field)
+ {
+ case e_fsel:
+ final_type = R_PARISC_SEGREL64;
+ break;
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
+ default:
+ return R_PARISC_NONE;
+ }
+ break;
+
case R_PARISC_GNU_VTENTRY:
case R_PARISC_GNU_VTINHERIT:
- case R_PARISC_SEGREL32:
case R_PARISC_SEGBASE:
/* The defaults are fine for these cases. */
break;