diff --git a/gas/ChangeLog b/gas/ChangeLog
index a2e30b1c92b..3b3c450b713 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2001-02-13  Jim Wilson  <wilson@redhat.com>
+
+	* config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED
+	reloc instead of a 0 reloc.
+	(md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it
+	as done.
+	* config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise.
+
 2001-02-13  Ian Lance Taylor  <ian@zembu.com>
 
 	* write.c (is_dnrange): Stop as soon as the address becomes
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 8f827393b3e..df566e2f818 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -5165,7 +5165,10 @@ operand_match (idesc, index, e)
 
 	case O_symbol:
 	  fix = CURR_SLOT.fixup + CURR_SLOT.num_fixups;
-	  fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, 0);
+	  /* There are no external relocs for TAG13/TAG13b fields, so we
+	     create a dummy reloc.  This will not live past md_apply_fix3.  */
+	  fix->code = BFD_RELOC_UNUSED;
+	  fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, fix->code);
 	  fix->opnd = idesc->operands[index];
 	  fix->expr = *e;
 	  fix->is_pcrel = 1;
@@ -9804,16 +9807,15 @@ md_apply_fix3 (fix, valuep, seg)
     }
   if (fix->fx_addsy)
     {
-      switch (fix->fx_r_type)
+      if (fix->fx_r_type == (int) BFD_RELOC_UNUSED)
 	{
-	case 0:
+	  /* This must be a TAG13 or TAG13b operand.  There are no external
+	     relocs defined for them, so we must give an error.  */
 	  as_bad_where (fix->fx_file, fix->fx_line,
 			"%s must have a constant value",
 			elf64_ia64_operands[fix->tc_fix_data.opnd].desc);
-	  break;
-
-	default:
-	  break;
+	  fix->fx_done = 1;
+	  return 1;
 	}
 
       /* ??? This is a hack copied from tc-i386.c to make PCREL relocs
diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h
index f2b9fe43e8f..ee4c7496879 100644
--- a/gas/config/tc-ia64.h
+++ b/gas/config/tc-ia64.h
@@ -252,9 +252,12 @@ typedef struct unwind_record
    True if we are willing to perform this relocation while building
    the .o file.  This is only used for pcrel relocations.  */
 
+/* If the reloc type is BFD_RELOC_UNUSED, then this is for a TAG13/TAG13b field
+   which has no external reloc, so we must resolve the value now.  */
+
 #define TC_RELOC_RTSYM_LOC_FIXUP(FIX)				\
   ((FIX)->fx_addsy == NULL					\
-   || (FIX)->fx_r_type == 0					\
+   || (FIX)->fx_r_type == BFD_RELOC_UNUSED			\
    || (! S_IS_EXTERNAL ((FIX)->fx_addsy)			\
        && ! S_IS_WEAK ((FIX)->fx_addsy)				\
        && S_IS_DEFINED ((FIX)->fx_addsy)			\