aboutsummaryrefslogtreecommitdiff
path: root/bfd/reloc.c
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@cygnus>1993-07-06 19:29:36 +0000
committerKen Raeburn <raeburn@cygnus>1993-07-06 19:29:36 +0000
commitdefcfb55702c09a51ac512d5993766d27becfcd5 (patch)
tree917f836c983020d055036f54dec803ae2e4973aa /bfd/reloc.c
parentafde243fa53f53038cf0ea0e0d01011fa87017c9 (diff)
downloadfsf-binutils-gdb-defcfb55702c09a51ac512d5993766d27becfcd5.zip
fsf-binutils-gdb-defcfb55702c09a51ac512d5993766d27becfcd5.tar.gz
fsf-binutils-gdb-defcfb55702c09a51ac512d5993766d27becfcd5.tar.bz2
(enum bfd_reloc_code_real): Put simple power-to-two relocs together, and add
64-bit versions. Also add sparc v9 reloc types. (bfd_generic_get_relocated_section_contents): Argument to alloca is size_t.
Diffstat (limited to 'bfd/reloc.c')
-rw-r--r--bfd/reloc.c47
1 files changed, 33 insertions, 14 deletions
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 1821bea..bd18579 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -567,8 +567,8 @@ DEFUN(bfd_perform_relocation,(abfd,
{
/* We can detect overflow safely here */
- bfd_signed_vma reloc_max = (~(1 << (howto->bitsize - 1)));
- bfd_signed_vma reloc_min = (-reloc_max - 1);
+ bfd_signed_vma reloc_max = (1 << (howto->bitsize - 1))-1;
+ bfd_signed_vma reloc_min = ~(reloc_max);
if ((bfd_signed_vma) relocation > reloc_max
|| (bfd_signed_vma) relocation < reloc_min)
@@ -698,17 +698,27 @@ CODE_FRAGMENT
.typedef enum bfd_reloc_code_real
.
.{
+. {* 64 bits wide, simple reloc *}
+. BFD_RELOC_64,
+. {* 64 bits, PC-relative *}
+. BFD_RELOC_64_PCREL,
+.
+. {* 32 bits wide, simple reloc *}
+. BFD_RELOC_32,
+. {* 32 bits, PC-relative *}
+. BFD_RELOC_32_PCREL,
+.
. {* 16 bits wide, simple reloc *}
. BFD_RELOC_16,
-.
-. {* 8 bits wide, but used to form an address like 0xffnn *}
-. BFD_RELOC_8_FFnn,
+. {* 16 bits, PC-relative *}
+. BFD_RELOC_16_PCREL,
.
. {* 8 bits wide, simple *}
. BFD_RELOC_8,
-.
. {* 8 bits wide, pc relative *}
. BFD_RELOC_8_PCREL,
+. {* 8 bits wide, but used to form an address like 0xffnn *}
+. BFD_RELOC_8_FFnn,
.
. {* The type of reloc used to build a contructor table - at the
. moment probably a 32 bit wide abs address, but the cpu can
@@ -716,11 +726,6 @@ CODE_FRAGMENT
.
. BFD_RELOC_CTOR,
.
-. {* 32 bits wide, simple reloc *}
-. BFD_RELOC_32,
-. {* 32 bits, PC-relative *}
-. BFD_RELOC_32_PCREL,
-.
. {* High 22 bits of 32-bit value; simple reloc. *}
. BFD_RELOC_HI22,
. {* Low 10 bits. *}
@@ -730,7 +735,6 @@ CODE_FRAGMENT
. BFD_RELOC_24_PCREL,
. BFD_RELOC_I960_CALLJ,
.
-. BFD_RELOC_16_PCREL,
. {* 32-bit pc-relative, shifted right 2 bits (i.e., 30-bit
. word displacement, e.g. for SPARC) *}
. BFD_RELOC_32_PCREL_S2,
@@ -756,6 +760,22 @@ CODE_FRAGMENT
. {* this one is a.out specific? *}
. BFD_RELOC_SPARC_BASE22,
.
+. {* start-sanitize-v9 *}
+. BFD_RELOC_SPARC_WDISP19,
+. BFD_RELOC_SPARC_10,
+. BFD_RELOC_SPARC_11,
+.#define BFD_RELOC_SPARC_64 BFD_RELOC_64
+. BFD_RELOC_SPARC_OLO10,
+. BFD_RELOC_SPARC_HH22,
+. BFD_RELOC_SPARC_HM10,
+. BFD_RELOC_SPARC_LM22,
+. BFD_RELOC_SPARC_PC_HH22,
+. BFD_RELOC_SPARC_PC_HM10,
+. BFD_RELOC_SPARC_PC_LM22,
+. BFD_RELOC_SPARC_WDISP16,
+. BFD_RELOC_SPARC_GLOB_JMP,
+. BFD_RELOC_SPARC_LO7,
+. {* end-sanitize-v9 *}
. {* Bits 27..2 of the relocation address shifted right 2 bits;
. simple reloc otherwise. *}
. BFD_RELOC_MIPS_JMP,
@@ -1006,8 +1026,7 @@ DEFUN(bfd_generic_get_relocated_section_contents,(abfd,
- bfd_size_type reloc_size = bfd_get_reloc_upper_bound(input_bfd,
- input_section);
+ size_t reloc_size = bfd_get_reloc_upper_bound(input_bfd, input_section);
arelent **reloc_vector = (arelent **) alloca(reloc_size);
/* read in the section */