summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/coffcode.h5
-rw-r--r--include/coff/ChangeLog4
-rw-r--r--include/coff/internal.h2
4 files changed, 17 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 831f288d51..afc3aa8703 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,4 +1,9 @@
-2011-03-30 Tristan Gingold <gingold@adacore.com>
+2011-03-31 Tristan Gingold <gingold@adacore.com>
+
+ * coffcode.h (coff_slurp_symbol_table): Silently discard C_NULL
+ entry on xcoff when value is C_NULL_VALUE.
+
+2011-03-31 Tristan Gingold <gingold@adacore.com>
* libcoff-in.h (exec_hdr): Remove.
* libcoff.h: Regenerate.
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 0fbaa97d41..6ee3db90e5 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -4896,6 +4896,11 @@ coff_slurp_symbol_table (bfd * abfd)
&& src->u.syment.n_value == 0
&& src->u.syment.n_scnum == 0)
break;
+#ifdef RS6000COFF_C
+ /* XCOFF specific: deleted entry. */
+ if (src->u.syment.n_value == C_NULL_VALUE)
+ break;
+#endif
/* Fall through. */
case C_EXTDEF: /* External definition. */
case C_ULABEL: /* Undefined label. */
diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog
index 151ea387bb..11aec52c20 100644
--- a/include/coff/ChangeLog
+++ b/include/coff/ChangeLog
@@ -1,3 +1,7 @@
+2011-03-31 Tristan Gingold <gingold@adacore.com>
+
+ * internal.h (C_NULL_VALUE): Define.
+
2010-06-29 Alan Modra <amodra@gmail.com>
* maxq.h: Delete file.
diff --git a/include/coff/internal.h b/include/coff/internal.h
index a6ead9e5f6..f52bfbb7ba 100644
--- a/include/coff/internal.h
+++ b/include/coff/internal.h
@@ -320,6 +320,8 @@ struct internal_aouthdr
#define C_EINCL 109 /* Marks ending of include file */
#define C_AIX_WEAKEXT 111 /* AIX definition of C_WEAKEXT. */
+#define C_NULL_VALUE 0x00de1e00 /* Value for a C_NULL deleted entry. */
+
#if defined _AIX52 || defined AIX_WEAK_SUPPORT
#undef C_WEAKEXT
#define C_WEAKEXT C_AIX_WEAKEXT