diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-02-19 21:12:48 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-02-19 21:12:48 +0000 |
commit | 81bdcecf639e18a753c169bae5da212101402ced (patch) | |
tree | 8fb60e8f8423dfaf7b5ab9c89a849cecb5cb2dce /bfd/coff-alpha.c | |
parent | 0708e99fc26bf43f65da5edce82e625d179e3b02 (diff) | |
download | gdb-81bdcecf639e18a753c169bae5da212101402ced.zip gdb-81bdcecf639e18a753c169bae5da212101402ced.tar.gz gdb-81bdcecf639e18a753c169bae5da212101402ced.tar.bz2 |
* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Don't
assume that we can set the GP value and then get the same value,
since it won't be true if the output file is neither ELF nor
ECOFF.
* coff-mips.c (mips_adjust_reloc_in): Don't bother to use
_bfd_get_gp_value here.
(mips_gprel_reloc): Don't assume we can set and get the GP value.
* elf32-mips.c (mips_elf_hi16_reloc): Get gp value from
mips_elf_final_gp.
(mips_elf_lo16_reloc): Likewise.
(mips_elf_final_gp): Add pgp parameter. Set it to the GP value.
Don't require that the BFD be ELF.
(mips_elf_gprel16_reloc): Get gp value from mips_elf_final_gp.
(mips_elf_gprel32_reloc): Likewise.
(mips_elf_relocate_section): Don't assume we can set and get the
GP value.
(mips_elf_finish_dynamic_symbol): Don't bother to use
_bfd_get_gp_value here.
* elf32-mips.c (mips_elf_create_procedure_table): Initialize sv.
Don't change epdr between malloc and free. Be careful not to free
NULL pointers. Zero out the first RPDR.
Diffstat (limited to 'bfd/coff-alpha.c')
-rw-r--r-- | bfd/coff-alpha.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 67dc002..b1134d0 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -759,6 +759,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order, bfd *output_bfd = relocateable ? abfd : (bfd *) NULL; bfd_vma gp; boolean gp_undefined; + bfd_vma gp; bfd_vma stack[RELOC_STACKSIZE]; int tos = 0; @@ -785,7 +786,8 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order, /* Get the GP value for the output BFD. */ gp_undefined = false; - if (_bfd_get_gp_value (abfd) == 0) + gp = _bfd_get_gp_value (abfd); + if (gp == 0) { if (relocateable != false) { @@ -804,7 +806,8 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order, || strcmp (sec->name, ".lita") == 0)) lo = sec->vma; } - _bfd_set_gp_value (abfd, lo + 0x8000); + gp = lo + 0x8000; + _bfd_set_gp_value (abfd, gp); } else { @@ -816,13 +819,14 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order, || h->type != bfd_link_hash_defined) gp_undefined = true; else - _bfd_set_gp_value (abfd, - (h->u.def.value - + h->u.def.section->output_section->vma - + h->u.def.section->output_offset)); + { + gp = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + _bfd_set_gp_value (abfd, gp); + } } } - gp = _bfd_get_gp_value (abfd); for (; *reloc_vector != (arelent *) NULL; reloc_vector++) { |