1999-09-11 Donn Terry <donn@interix.com>
authorIan Lance Taylor <ian@airs.com>
Sat, 11 Sep 1999 14:41:11 +0000 (14:41 +0000)
committerIan Lance Taylor <ian@airs.com>
Sat, 11 Sep 1999 14:41:11 +0000 (14:41 +0000)
* syms.c (BSF_DEBUGGING_RELOC): Define.
* coffgen.c (fixup_symbol_value): Relocate a symbol which has
BSF_DEBUGGING_RELOC set.
* bfd-in2.h: Rebuild.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/coffgen.c
bfd/syms.c

index aa16f61b75f1f8e06ebd2bc671827f3add5a74ca..143fbc00a98681da6c1189458df4e5e289e8fc47 100644 (file)
@@ -1,3 +1,10 @@
+1999-09-11  Donn Terry  <donn@interix.com>
+
+       * syms.c (BSF_DEBUGGING_RELOC): Define.
+       * coffgen.c (fixup_symbol_value): Relocate a symbol which has
+       BSF_DEBUGGING_RELOC set.
+       * bfd-in2.h: Rebuild.
+
 1999-09-10  Ian Lance Taylor  <ian@zembu.com>
 
        * ecoff.c (bfd_debug_section): Update initialization for new
index ec82e0c3256d3aec85b3ca9706d793e3fae44e00..b53329c5304f7a0af4f937586e1c8a7908872500 100644 (file)
@@ -2303,7 +2303,7 @@ typedef struct symbol_cache_entry
           <<BSF_GLOBAL>> */
 
         /* The symbol is a debugging record. The value has an arbitary
-          meaning. */
+          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
 #define BSF_DEBUGGING  0x08
 
         /* The symbol denotes a function entry point.  Used in ELF,
@@ -2361,6 +2361,11 @@ typedef struct symbol_cache_entry
           others someday.  */
 #define BSF_OBJECT        0x10000
 
+        /* This symbol is a debugging symbol.  The value is the offset
+          into the section of the data.  BSF_DEBUGGING should be set
+          as well.  */
+#define BSF_DEBUGGING_RELOC 0x20000
+
   flagword flags;
 
         /* A pointer to the section to which this symbol is
index feb57a35fc0d6313fe4d408d99641a3a16d0378f..f090f103db41dd73cf645783c55797622d1db286 100644 (file)
@@ -585,7 +585,8 @@ fixup_symbol_value (abfd, coff_symbol_ptr, syment)
       syment->n_scnum = N_UNDEF;
       syment->n_value = coff_symbol_ptr->symbol.value;
     }
-  else if (coff_symbol_ptr->symbol.flags & BSF_DEBUGGING)
+  else if ((coff_symbol_ptr->symbol.flags & BSF_DEBUGGING) != 0
+          && (coff_symbol_ptr->symbol.flags & BSF_DEBUGGING_RELOC) == 0)
     {
       syment->n_value = coff_symbol_ptr->symbol.value;
     }
index 86dc66cbffce1c6f29a4a7cb0881f23ded8fe8ca..676f067c2a353c65eb8e223822a7650e44b0f14d 100644 (file)
@@ -227,7 +227,7 @@ CODE_FRAGMENT
 .         <<BSF_GLOBAL>> *}
 .
 .      {* The symbol is a debugging record. The value has an arbitary
-.         meaning. *}
+.         meaning, unless BSF_DEBUGGING_RELOC is also set.  *}
 .#define BSF_DEBUGGING 0x08
 .
 .      {* The symbol denotes a function entry point.  Used in ELF,
@@ -285,6 +285,11 @@ CODE_FRAGMENT
 .          others someday.  *}
 .#define BSF_OBJECT       0x10000
 .
+.       {* This symbol is a debugging symbol.  The value is the offset
+.          into the section of the data.  BSF_DEBUGGING should be set
+.          as well.  *}
+.#define BSF_DEBUGGING_RELOC 0x20000
+.
 .  flagword flags;
 .
 .      {* A pointer to the section to which this symbol is