diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-09-20 15:44:49 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-09-20 15:44:49 +0000 |
commit | a5a43df165aa92cd43fc784b80a35e53792c104b (patch) | |
tree | ac36ab6718986e8633da81ef794a8ee8fae5a07e /bfd/reloc.c | |
parent | ed9714ab658220cdf822cef8c74f57b759fccaf3 (diff) | |
download | gdb-a5a43df165aa92cd43fc784b80a35e53792c104b.zip gdb-a5a43df165aa92cd43fc784b80a35e53792c104b.tar.gz gdb-a5a43df165aa92cd43fc784b80a35e53792c104b.tar.bz2 |
* reloc.c (bfd_perform_relocation): Apply the relocation even if
it is zero, in case src_mask matters.
(bfd_install_relocation): Likewise.
PR 10685.
Diffstat (limited to 'bfd/reloc.c')
-rw-r--r-- | bfd/reloc.c | 101 |
1 files changed, 65 insertions, 36 deletions
diff --git a/bfd/reloc.c b/bfd/reloc.c index 4b3e0ee..05d51e9 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -872,20 +872,18 @@ space consuming. For each target: break; case 1: - if (relocation) - { - short x = bfd_get_16 (abfd, (bfd_byte *) data + addr); - DOIT (x); - bfd_put_16 (abfd, x, (unsigned char *) data + addr); - } + { + short x = bfd_get_16 (abfd, (bfd_byte *) data + addr); + DOIT (x); + bfd_put_16 (abfd, x, (unsigned char *) data + addr); + } break; case 2: - if (relocation) - { - long x = bfd_get_32 (abfd, (bfd_byte *) data + addr); - DOIT (x); - bfd_put_32 (abfd, x, (bfd_byte *) data + addr); - } + { + long x = bfd_get_32 (abfd, (bfd_byte *) data + addr); + DOIT (x); + bfd_put_32 (abfd, x, (bfd_byte *) data + addr); + } break; case -2: { @@ -911,12 +909,11 @@ space consuming. For each target: case 4: #ifdef BFD64 - if (relocation) - { - bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + addr); - DOIT (x); - bfd_put_64 (abfd, x, (bfd_byte *) data + addr); - } + { + bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + addr); + DOIT (x); + bfd_put_64 (abfd, x, (bfd_byte *) data + addr); + } #else abort (); #endif @@ -1332,20 +1329,18 @@ space consuming. For each target: break; case 1: - if (relocation) - { - short x = bfd_get_16 (abfd, (bfd_byte *) data); - DOIT (x); - bfd_put_16 (abfd, x, (unsigned char *) data); - } + { + short x = bfd_get_16 (abfd, (bfd_byte *) data); + DOIT (x); + bfd_put_16 (abfd, x, (unsigned char *) data); + } break; case 2: - if (relocation) - { - long x = bfd_get_32 (abfd, (bfd_byte *) data); - DOIT (x); - bfd_put_32 (abfd, x, (bfd_byte *) data); - } + { + long x = bfd_get_32 (abfd, (bfd_byte *) data); + DOIT (x); + bfd_put_32 (abfd, x, (bfd_byte *) data); + } break; case -2: { @@ -1361,12 +1356,11 @@ space consuming. For each target: break; case 4: - if (relocation) - { - bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data); - DOIT (x); - bfd_put_64 (abfd, x, (bfd_byte *) data); - } + { + bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data); + DOIT (x); + bfd_put_64 (abfd, x, (bfd_byte *) data); + } break; default: return bfd_reloc_other; @@ -2247,6 +2241,41 @@ ENUMDOC COMMENT {* end-sanitize-d10v *} +COMMENT +{* start-sanitize-m32r *} +ENUM + BFD_RELOC_M32R_10_PCREL +ENUMDOC + Mitsubishi M32R relocs. + This is a 10-bit reloc with the right 2 bits assumed to be 0. +ENUM + BFD_RELOC_M32R_18_PCREL +ENUMDOC + This is an 18-bit reloc with the right 2 bits assumed to be 0. +ENUM + BFD_RELOC_M32R_26_PCREL +ENUMDOC + This is an 26-bit reloc with the right 2 bits assumed to be 0. +ENUM + BFD_RELOC_M32R_24 +ENUMDOC + This is a 24 bit reloc. +COMMENT +{* end-sanitize-m32r *} + +COMMENT +{* start-sanitize-v850 *} +ENUM + BFD_RELOC_V850_9_PCREL +ENUMDOC + This is a 9-bit reloc +ENUM + BFD_RELOC_V850_22_PCREL +ENUMDOC + This is a 22-bit reloc +COMMENT +{* end-sanitize-v850 *} + ENDSENUM BFD_RELOC_UNUSED CODE_FRAGMENT |