This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello! On 2010-09-24 00:12, Alan Modra wrote: > On Thu, Sep 23, 2010 at 05:37:01PM +0200, Thomas Schwinge wrote: >> 1469 if (ELF_R_SYM (rela.r_info) == 0) >> 1470 relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; >> >> That is, if the index is zero -- should use STN_UNDEF here instead of the >> zero constant, I'd say? > > Yes. There are quite some more of these (for most, grep was my friend). I caught one bug (harmless, as both are defined to zero): bfd/ 2010-09-24 Thomas Schwinge <thomas@codesourcery.com> * elflink.c (bfd_elf_reloc_symbol_deleted_p): Compare the symbol index to STN_UNDEF, not SHN_UNDEF. Index: bfd/elflink.c =================================================================== RCS file: /cvs/src/src/bfd/elflink.c,v retrieving revision 1.379 diff -u -p -r1.379 elflink.c --- bfd/elflink.c 16 Sep 2010 00:06:11 -0000 1.379 +++ bfd/elflink.c 24 Sep 2010 09:28:12 -0000 @@ -12196,7 +12203,7 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma continue; r_symndx = rcookie->rel->r_info >> rcookie->r_sym_shift; - if (r_symndx == SHN_UNDEF) + if (r_symndx == STN_UNDEF) return TRUE; if (r_symndx >= rcookie->locsymcount The following ones may seem a bit excessive, but such extra verbosity (using STN_UNDEF instead of 0) does help when reading the code for the first time, like I did. In case this is accepted, is the following ChangeLog sufficient? I have not done any testing; it's a purely mechanical change. 2010-09-24 Thomas Schwinge <thomas@codesourcery.com> Use STN_UNDEF when referring to the undefined symbol index, instead of a blank zero constant. Index: bfd/elf32-arm.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-arm.c,v retrieving revision 1.241 diff -u -p -r1.241 elf32-arm.c --- bfd/elf32-arm.c 26 Aug 2010 10:32:26 -0000 1.241 +++ bfd/elf32-arm.c 24 Sep 2010 09:28:11 -0000 @@ -9063,7 +9063,7 @@ elf32_arm_relocate_section (bfd * name = bfd_section_name (input_bfd, sec); } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_ARM_NONE && (h == NULL || h->root.type == bfd_link_hash_defined @@ -10902,7 +10902,7 @@ elf32_arm_check_relocs (bfd *abfd, struc /* PR 9934: It is possible to have relocations that do not refer to symbols, thus it is also possible to have an object file containing relocations but no symbol table. */ - && (r_symndx > 0 || nsyms > 0)) + && (r_symndx > STN_UNDEF || nsyms > 0)) { (*_bfd_error_handler) (_("%B: bad symbol index: %d"), abfd, r_symndx); Index: bfd/elf32-cris.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-cris.c,v retrieving revision 1.112 diff -u -p -r1.112 elf32-cris.c --- bfd/elf32-cris.c 25 Aug 2010 14:53:41 -0000 1.112 +++ bfd/elf32-cris.c 24 Sep 2010 09:28:11 -0000 @@ -1493,7 +1493,7 @@ cris_elf_relocate_section (bfd *output_b case R_CRIS_16: case R_CRIS_32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && ((r_type != R_CRIS_8_PCREL && r_type != R_CRIS_16_PCREL Index: bfd/elf32-hppa.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-hppa.c,v retrieving revision 1.174 diff -u -p -r1.174 elf32-hppa.c --- bfd/elf32-hppa.c 25 Aug 2010 14:53:41 -0000 1.174 +++ bfd/elf32-hppa.c 24 Sep 2010 09:28:11 -0000 @@ -4472,7 +4472,7 @@ static enum elf_reloc_type_class elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela) { /* Handle TLS relocs first; we don't want them to be marked - relative by the "if (ELF32_R_SYM (rela->r_info) == 0)" + relative by the "if (ELF32_R_SYM (rela->r_info) == STN_UNDEF)" check below. */ switch ((int) ELF32_R_TYPE (rela->r_info)) { @@ -4482,7 +4482,7 @@ elf32_hppa_reloc_type_class (const Elf_I return reloc_class_normal; } - if (ELF32_R_SYM (rela->r_info) == 0) + if (ELF32_R_SYM (rela->r_info) == STN_UNDEF) return reloc_class_relative; switch ((int) ELF32_R_TYPE (rela->r_info)) Index: bfd/elf32-i370.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-i370.c,v retrieving revision 1.65 diff -u -p -r1.65 elf32-i370.c --- bfd/elf32-i370.c 27 Jun 2010 04:07:51 -0000 1.65 +++ bfd/elf32-i370.c 24 Sep 2010 09:28:11 -0000 @@ -1183,7 +1183,7 @@ i370_elf_relocate_section (bfd *output_b case (int) R_I370_ADDR31: case (int) R_I370_ADDR16: if (info->shared - && r_symndx != 0) + && r_symndx != STN_UNDEF) { Elf_Internal_Rela outrel; bfd_byte *loc; Index: bfd/elf32-m32r.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-m32r.c,v retrieving revision 1.98 diff -u -p -r1.98 elf32-m32r.c --- bfd/elf32-m32r.c 25 Aug 2010 14:53:42 -0000 1.98 +++ bfd/elf32-m32r.c 24 Sep 2010 09:28:11 -0000 @@ -2897,7 +2897,7 @@ m32r_elf_relocate_section (bfd *output_b case R_M32R_HI16_ULO_RELA: case R_M32R_LO16_RELA: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && (( r_type != R_M32R_10_PCREL_RELA && r_type != R_M32R_18_PCREL_RELA Index: bfd/elf32-m68k.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-m68k.c,v retrieving revision 1.122 diff -u -p -r1.122 elf32-m68k.c --- bfd/elf32-m68k.c 25 Aug 2010 14:53:42 -0000 1.122 +++ bfd/elf32-m68k.c 24 Sep 2010 09:28:11 -0000 @@ -4034,7 +4034,7 @@ elf_m68k_relocate_section (output_bfd, i case R_68K_PC16: case R_68K_PC32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT @@ -4169,7 +4169,7 @@ elf_m68k_relocate_section (output_bfd, i return FALSE; } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_68K_NONE && (h == NULL || h->root.type == bfd_link_hash_defined Index: bfd/elf32-microblaze.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-microblaze.c,v retrieving revision 1.7 diff -u -p -r1.7 elf32-microblaze.c --- bfd/elf32-microblaze.c 25 Aug 2010 14:53:42 -0000 1.7 +++ bfd/elf32-microblaze.c 24 Sep 2010 09:28:11 -0000 @@ -1067,10 +1067,10 @@ microblaze_elf_relocate_section (bfd *ou case (int) R_MICROBLAZE_64: case (int) R_MICROBLAZE_32: { - /* r_symndx will be zero only for relocs against symbols + /* r_symndx will be STN_UNDEF (zero) only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ - if (r_symndx == 0 || (input_section->flags & SEC_ALLOC) == 0) + if (r_symndx == STN_UNDEF || (input_section->flags & SEC_ALLOC) == 0) { relocation += addend; if (r_type == R_MICROBLAZE_32) Index: bfd/elf32-ppc.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-ppc.c,v retrieving revision 1.287 diff -u -p -r1.287 elf32-ppc.c --- bfd/elf32-ppc.c 25 Aug 2010 14:53:43 -0000 1.287 +++ bfd/elf32-ppc.c 24 Sep 2010 09:28:11 -0000 @@ -6979,15 +6979,15 @@ ppc_elf_relocate_section (bfd *output_bf if (tls_gd == 0) { /* Was an LD reloc. */ - for (r_symndx = 0; + for (r_symndx = STN_UNDEF; r_symndx < symtab_hdr->sh_info; r_symndx++) if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -7047,15 +7047,15 @@ ppc_elf_relocate_section (bfd *output_bf { unsigned int insn2; - for (r_symndx = 0; + for (r_symndx = STN_UNDEF; r_symndx < symtab_hdr->sh_info; r_symndx++) if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -7658,7 +7658,7 @@ ppc_elf_relocate_section (bfd *output_bf sym_name); ret = FALSE; } - else if (r_symndx == 0 || bfd_is_abs_section (sec)) + else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) { Index: bfd/elf32-score.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-score.c,v retrieving revision 1.19 diff -u -p -r1.19 elf32-score.c --- bfd/elf32-score.c 18 Aug 2010 12:24:06 -0000 1.19 +++ bfd/elf32-score.c 24 Sep 2010 09:28:11 -0000 @@ -2126,7 +2126,7 @@ score_elf_final_link_relocate (reloc_how && h != NULL && h->root.def_dynamic && !h->root.def_regular)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { /* If we're creating a shared library, or this relocation is against a symbol @@ -2139,8 +2139,8 @@ score_elf_final_link_relocate (reloc_how input_section)) return bfd_reloc_undefined; } - else if (r_symndx == 0) - /* r_symndx will be zero only for relocs against symbols + else if (r_symndx == STN_UNDEF) + /* r_symndx will be STN_UNDEF (zero) only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ value = 0; Index: bfd/elf32-score7.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-score7.c,v retrieving revision 1.6 diff -u -p -r1.6 elf32-score7.c --- bfd/elf32-score7.c 18 Aug 2010 12:24:06 -0000 1.6 +++ bfd/elf32-score7.c 24 Sep 2010 09:28:11 -0000 @@ -2025,7 +2025,7 @@ score_elf_final_link_relocate (reloc_how && h != NULL && h->root.def_dynamic && !h->root.def_regular)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { /* If we're creating a shared library, or this relocation is against a symbol @@ -2038,8 +2038,8 @@ score_elf_final_link_relocate (reloc_how input_section)) return bfd_reloc_undefined; } - else if (r_symndx == 0) - /* r_symndx will be zero only for relocs against symbols + else if (r_symndx == STN_UNDEF) + /* r_symndx will be STN_UNDEF (zero) only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ value = 0; Index: bfd/elf32-sh.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-sh.c,v retrieving revision 1.168 diff -u -p -r1.168 elf32-sh.c --- bfd/elf32-sh.c 25 Aug 2010 14:53:43 -0000 1.168 +++ bfd/elf32-sh.c 24 Sep 2010 09:28:11 -0000 @@ -4405,7 +4405,7 @@ sh_elf_relocate_section (bfd *output_bfd && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && !is_vxworks_tls && (r_type == R_SH_DIR32 Index: bfd/elf32-vax.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-vax.c,v retrieving revision 1.61 diff -u -p -r1.61 elf32-vax.c --- bfd/elf32-vax.c 27 Jun 2010 04:07:53 -0000 1.61 +++ bfd/elf32-vax.c 24 Sep 2010 09:28:11 -0000 @@ -1611,7 +1611,7 @@ elf_vax_relocate_section (bfd *output_bf case R_VAX_16: case R_VAX_32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && ((r_type != R_VAX_PC8 && r_type != R_VAX_PC16 Index: bfd/elf32-xtensa.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-xtensa.c,v retrieving revision 1.125 diff -u -p -r1.125 elf32-xtensa.c --- bfd/elf32-xtensa.c 25 Aug 2010 14:53:44 -0000 1.125 +++ bfd/elf32-xtensa.c 24 Sep 2010 09:28:11 -0000 @@ -2800,7 +2800,7 @@ elf_xtensa_relocate_section (bfd *output name = bfd_section_name (input_bfd, sec); } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_XTENSA_NONE && (h == NULL || h->root.type == bfd_link_hash_defined Index: bfd/elf64-alpha.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-alpha.c,v retrieving revision 1.171 diff -u -p -r1.171 elf64-alpha.c --- bfd/elf64-alpha.c 20 Sep 2010 16:09:02 -0000 1.171 +++ bfd/elf64-alpha.c 24 Sep 2010 09:28:11 -0000 @@ -1866,8 +1866,8 @@ elf64_alpha_check_relocs (bfd *abfd, str case R_ALPHA_TLSLDM: /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ - r_symndx = 0; + reloc to the STN_UNDEF (0) symbol so that they all match. */ + r_symndx = STN_UNDEF; h = 0; maybe_dynamic = FALSE; /* FALLTHRU */ @@ -3491,7 +3491,7 @@ elf64_alpha_relax_tls_get_addr (struct a as appropriate. */ use_gottprel = FALSE; - new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : 0; + new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : STN_UNDEF; /* Beware of the compiler hoisting part of the sequence out a loop and adjusting the destination register for the TLSGD insn. If this @@ -3724,8 +3724,8 @@ elf64_alpha_relax_section (bfd *abfd, as case R_ALPHA_TLSLDM: /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ - r_symndx = 0; + reloc to the STN_UNDEF (0) symbol so that they all match. */ + r_symndx = STN_UNDEF; break; default: @@ -4154,9 +4154,9 @@ elf64_alpha_relocate_section (bfd *outpu r_symndx = ELF64_R_SYM(rel->r_info); /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ + reloc to the STN_UNDEF (0) symbol so that they all match. */ if (r_type == R_ALPHA_TLSLDM) - r_symndx = 0; + r_symndx = STN_UNDEF; if (r_symndx < symtab_hdr->sh_info) { @@ -4166,10 +4166,10 @@ elf64_alpha_relocate_section (bfd *outpu msec = sec; value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel); - /* If this is a tp-relative relocation against sym 0, + /* If this is a tp-relative relocation against sym STN_UNDEF (0), this is hackery from relax_section. Force the value to be the tls module base. */ - if (r_symndx == 0 + if (r_symndx == STN_UNDEF && (r_type == R_ALPHA_TLSLDM || r_type == R_ALPHA_GOTTPREL || r_type == R_ALPHA_TPREL64 @@ -4455,7 +4455,7 @@ elf64_alpha_relocate_section (bfd *outpu dynaddend = value - dtp_base; } else if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) && !undef_weak_ref) { @@ -4503,7 +4503,7 @@ elf64_alpha_relocate_section (bfd *outpu /* ??? .eh_frame references to discarded sections will be smashed to relocations against SHN_UNDEF. The .eh_frame format allows NULL to be encoded as 0 in any format, so this works here. */ - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) howto = (elf64_alpha_howto_table + (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG)); goto default_reloc; Index: bfd/elf64-hppa.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-hppa.c,v retrieving revision 1.98 diff -u -p -r1.98 elf64-hppa.c --- bfd/elf64-hppa.c 25 Aug 2010 14:53:44 -0000 1.98 +++ bfd/elf64-hppa.c 24 Sep 2010 09:28:11 -0000 @@ -2465,7 +2465,7 @@ elf64_hppa_finalize_dynreloc (struct elf static enum elf_reloc_type_class elf64_hppa_reloc_type_class (const Elf_Internal_Rela *rela) { - if (ELF64_R_SYM (rela->r_info) == 0) + if (ELF64_R_SYM (rela->r_info) == STN_UNDEF) return reloc_class_relative; switch ((int) ELF64_R_TYPE (rela->r_info)) Index: bfd/elf64-mips.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-mips.c,v retrieving revision 1.96 diff -u -p -r1.96 elf64-mips.c --- bfd/elf64-mips.c 25 Aug 2010 14:53:44 -0000 1.96 +++ bfd/elf64-mips.c 24 Sep 2010 09:28:12 -0000 @@ -2619,7 +2619,7 @@ mips_elf64_slurp_one_reloc_table (bfd *a default: if (! used_sym) { - if (rela.r_sym == 0) + if (rela.r_sym == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { Index: bfd/elf64-ppc.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-ppc.c,v retrieving revision 1.336 diff -u -p -r1.336 elf64-ppc.c --- bfd/elf64-ppc.c 25 Aug 2010 14:53:44 -0000 1.336 +++ bfd/elf64-ppc.c 24 Sep 2010 09:28:12 -0000 @@ -11668,7 +11668,7 @@ ppc64_elf_relocate_section (bfd *output_ /* Check that tls relocs are used with tls syms, and non-tls relocs are used with non-tls syms. */ - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_PPC64_NONE && (h == NULL || h->elf.root.type == bfd_link_hash_defined @@ -11911,15 +11911,15 @@ ppc64_elf_relocate_section (bfd *output_ /* Was an LD reloc. */ if (toc_symndx) sec = local_sections[toc_symndx]; - for (r_symndx = 0; + for (r_symndx = STN_UNDEF; r_symndx < symtab_hdr->sh_info; r_symndx++) if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -12019,15 +12019,15 @@ ppc64_elf_relocate_section (bfd *output_ if (toc_symndx) sec = local_sections[toc_symndx]; - for (r_symndx = 0; + for (r_symndx = STN_UNDEF; r_symndx < symtab_hdr->sh_info; r_symndx++) if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -12569,7 +12569,7 @@ ppc64_elf_relocate_section (bfd *output_ case R_PPC64_TOC: /* Relocation value is TOC base. */ relocation = TOCstart; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) relocation += htab->stub_group[input_section->id].toc_off; else if (unresolved_reloc) ; @@ -12819,7 +12819,7 @@ ppc64_elf_relocate_section (bfd *output_ sym_name); ret = FALSE; } - else if (r_symndx == 0 || bfd_is_abs_section (sec)) + else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) { Index: bfd/elf64-sparc.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-sparc.c,v retrieving revision 1.121 diff -u -p -r1.121 elf64-sparc.c --- bfd/elf64-sparc.c 19 Feb 2010 05:07:49 -0000 1.121 +++ bfd/elf64-sparc.c 24 Sep 2010 09:28:12 -0000 @@ -98,7 +98,7 @@ elf64_sparc_slurp_one_reloc_table (bfd * else relent->address = rela.r_offset - asect->vma; - if (ELF64_R_SYM (rela.r_info) == 0) + if (ELF64_R_SYM (rela.r_info) == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { Index: bfd/elfcode.h =================================================================== RCS file: /cvs/src/src/bfd/elfcode.h,v retrieving revision 1.101 diff -u -p -r1.101 elfcode.h --- bfd/elfcode.h 18 Aug 2010 12:24:07 -0000 1.101 +++ bfd/elfcode.h 24 Sep 2010 09:28:12 -0000 @@ -1466,7 +1466,7 @@ elf_slurp_reloc_table_from_section (bfd else relent->address = rela.r_offset - asect->vma; - if (ELF_R_SYM (rela.r_info) == 0) + if (ELF_R_SYM (rela.r_info) == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else if (ELF_R_SYM (rela.r_info) > symcount) { Index: bfd/elflink.c =================================================================== RCS file: /cvs/src/src/bfd/elflink.c,v retrieving revision 1.379 diff -u -p -r1.379 elflink.c --- bfd/elflink.c 16 Sep 2010 00:06:11 -0000 1.379 +++ bfd/elflink.c 24 Sep 2010 09:28:12 -0000 @@ -2170,7 +2170,7 @@ elf_link_read_relocs_from_section (bfd * return FALSE; } } - else if (r_symndx != 0) + else if (r_symndx != STN_UNDEF) { (*_bfd_error_handler) (_("%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A'" @@ -9500,7 +9507,7 @@ elf_link_input_bfd (struct elf_final_lin discarded section. */ if ((sec = *ps) != NULL && elf_discarded_section (sec)) { - BFD_ASSERT (r_symndx != 0); + BFD_ASSERT (r_symndx != STN_UNDEF); if (action_discarded & COMPLAIN) (*finfo->info->callbacks->einfo) (_("%X`%s' referenced in section `%A' of %B: " @@ -9667,7 +9674,7 @@ elf_link_input_bfd (struct elf_final_lin /* I suppose the backend ought to fill in the section of any STT_SECTION symbol against a processor specific section. */ - r_symndx = 0; + r_symndx = STN_UNDEF; if (bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) @@ -9696,7 +9703,7 @@ elf_link_input_bfd (struct elf_final_lin if (!bfd_is_abs_section (osec)) { r_symndx = osec->target_index; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) { struct elf_link_hash_table *htab; asection *oi; @@ -9714,7 +9721,7 @@ elf_link_input_bfd (struct elf_final_lin } } - BFD_ASSERT (r_symndx != 0); + BFD_ASSERT (r_symndx != STN_UNDEF); } } @@ -11471,7 +11478,7 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_i struct elf_link_hash_entry *h; r_symndx = cookie->rel->r_info >> cookie->r_sym_shift; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) return NULL; if (r_symndx >= cookie->locsymcount Index: bfd/elfxx-ia64.c =================================================================== RCS file: /cvs/src/src/bfd/elfxx-ia64.c,v retrieving revision 1.225 diff -u -p -r1.225 elfxx-ia64.c --- bfd/elfxx-ia64.c 25 Aug 2010 14:53:45 -0000 1.225 +++ bfd/elfxx-ia64.c 24 Sep 2010 09:28:12 -0000 @@ -4695,7 +4695,7 @@ elfNN_ia64_relocate_section (bfd *output case R_IA64_DIR64LSB: /* Install a dynamic relocation for this reloc. */ if ((dynamic_symbol_p || info->shared) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { unsigned int dyn_r_type; @@ -4924,7 +4924,7 @@ elfNN_ia64_relocate_section (bfd *output case R_IA64_PCREL64MSB: case R_IA64_PCREL64LSB: /* Install a dynamic relocation for this reloc. */ - if (dynamic_symbol_p && r_symndx != 0) + if (dynamic_symbol_p && r_symndx != STN_UNDEF) { BFD_ASSERT (srel != NULL); Index: bfd/elfxx-mips.c =================================================================== RCS file: /cvs/src/src/bfd/elfxx-mips.c,v retrieving revision 1.274 diff -u -p -r1.274 elfxx-mips.c --- bfd/elfxx-mips.c 19 Sep 2010 10:52:17 -0000 1.274 +++ bfd/elfxx-mips.c 24 Sep 2010 09:28:12 -0000 @@ -52,7 +52,7 @@ (1) absolute addresses (abfd == NULL) (2) SYMBOL + OFFSET addresses, where SYMBOL is local to an input bfd - (abfd != NULL, symndx >= 0) + (abfd != NULL, symndx >= STN_UNDEF (0)) (3) SYMBOL addresses, where SYMBOL is not local to an input bfd (abfd != NULL, symndx == -1) @@ -104,7 +104,7 @@ struct mips_got_entry IE). The GD and IE flags can be added as we encounter new relocations. LDM can also be set; it will always be alone, not combined with any GD or IE flags. An LDM GOT entry will be - a local symbol entry with r_symndx == 0. */ + a local symbol entry with r_symndx == STN_UNDEF. */ unsigned char tls_type; /* The offset from the beginning of the .got section to the entry @@ -1446,7 +1446,7 @@ section_allows_mips16_refs_p (asection * /* [RELOCS, RELEND) are the relocations against SEC, which is a MIPS16 stub section of some kind. Return the R_SYMNDX of the target - function, or 0 if we can't decide which function that is. */ + function, or STN_UNDEF if we can't decide which function that is. */ static unsigned long mips16_stub_symndx (asection *sec ATTRIBUTE_UNUSED, @@ -1465,7 +1465,7 @@ mips16_stub_symndx (asection *sec ATTRIB if (relocs < relend) return ELF_R_SYM (sec->owner, relocs->r_info); - return 0; + return STN_UNDEF; } /* Check the mips16 stubs for a particular symbol, and see if we can @@ -2624,7 +2624,7 @@ mips_elf_got_entry_hash (const void *ent + ((entry->tls_type & GOT_TLS_LDM) << 17) + (! entry->abfd ? mips_elf_hash_bfd_vma (entry->d.address) : entry->abfd->id - + (entry->symndx >= 0 ? mips_elf_hash_bfd_vma (entry->d.addend) + + (entry->symndx >= STN_UNDEF ? mips_elf_hash_bfd_vma (entry->d.addend) : entry->d.h->root.root.root.hash)); } @@ -2640,7 +2640,7 @@ mips_elf_got_entry_eq (const void *entry return e1->abfd == e2->abfd && e1->symndx == e2->symndx && (! e1->abfd ? e1->d.address == e2->d.address - : e1->symndx >= 0 ? e1->d.addend == e2->d.addend + : e1->symndx >= STN_UNDEF ? e1->d.addend == e2->d.addend : e1->d.h == e2->d.h); } @@ -2657,7 +2657,7 @@ mips_elf_multi_got_entry_hash (const voi return entry->symndx + (! entry->abfd ? mips_elf_hash_bfd_vma (entry->d.address) - : entry->symndx >= 0 + : entry->symndx >= STN_UNDEF ? ((entry->tls_type & GOT_TLS_LDM) ? (GOT_TLS_LDM << 17) : (entry->abfd->id @@ -2680,7 +2680,8 @@ mips_elf_multi_got_entry_eq (const void return 0; return e1->symndx == e2->symndx - && (e1->symndx >= 0 ? e1->abfd == e2->abfd && e1->d.addend == e2->d.addend + && (e1->symndx >= STN_UNDEF + ? e1->abfd == e2->abfd && e1->d.addend == e2->d.addend : e1->abfd == NULL || e2->abfd == NULL ? e1->abfd == e2->abfd && e1->d.address == e2->d.address : e1->d.h == e2->d.h); @@ -3299,7 +3300,7 @@ mips_elf_create_local_got_entry (bfd *ab if (r_type == R_MIPS_TLS_LDM) { entry.tls_type = GOT_TLS_LDM; - entry.symndx = 0; + entry.symndx = STN_UNDEF; entry.d.addend = 0; } else if (h == NULL) @@ -4043,7 +4044,8 @@ mips_elf_make_got_per_bfd (void **entryp if (entry->tls_type & GOT_TLS_IE) g->tls_gotno += 1; } - else if (entry->symndx >= 0 || entry->d.h->global_got_area == GGA_NONE) + else if (entry->symndx >= STN_UNDEF + || entry->d.h->global_got_area == GGA_NONE) ++g->local_gotno; else ++g->global_gotno; @@ -5282,7 +5284,7 @@ mips_elf_calculate_relocation (bfd *abfd && h->root.def_dynamic && !h->root.def_regular && !h->has_static_relocs)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (h == NULL || h->root.root.type != bfd_link_hash_undefweak || ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT) @@ -7265,7 +7267,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s this is for. */ r_symndx = mips16_stub_symndx (sec, relocs, rel_end); - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) { (*_bfd_error_handler) (_("%B: Warning: cannot determine the target function for" @@ -7390,7 +7392,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s this is for. */ r_symndx = mips16_stub_symndx (sec, relocs, rel_end); - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) { (*_bfd_error_handler) (_("%B: Warning: cannot determine the target function for" @@ -7752,7 +7754,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s case R_MIPS_TLS_LDM: if (r_type == R_MIPS_TLS_LDM) { - r_symndx = 0; + r_symndx = STN_UNDEF; h = NULL; } /* Fall through */ @@ -7778,7 +7780,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s } else { - BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != 0); + BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != STN_UNDEF); if (!mips_elf_record_local_got_symbol (abfd, r_symndx, rel->r_addend, @@ -7918,7 +7920,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s case R_MIPS_HIGHEST: /* Don't refuse a high part relocation if it's against no symbol (e.g. part of a compound relocation). */ - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) break; /* R_MIPS_HI16 against _gp_disp is used for $gp setup, Regards, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |