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]

Re: Relocations against STN_UNDEF


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]