aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/obj-coff.c8
2 files changed, 10 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f8199cf..b7e4f2d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,9 @@
2012-10-18 Kai Tietz <ktietz@redhat.com>
+ * config/obj-coff.c: Add include of struc-symbol.h header.
+ (coff_frob_symbol): Check that function-aux entries are generated for
+ defined symbols only.
+
* doc/as.texinfo: Add missing documentation about section flag
exclude.
diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index a15d3a2..dbe2f07 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -26,6 +26,7 @@
#include "safe-ctype.h"
#include "obstack.h"
#include "subsegs.h"
+#include "struc-symbol.h"
#ifdef TE_PE
#include "coff/pe.h"
@@ -1359,7 +1360,8 @@ coff_frob_symbol (symbolS *symp, int *punt)
}
}
- if (coff_last_function == 0 && SF_GET_FUNCTION (symp))
+ if (coff_last_function == 0 && SF_GET_FUNCTION (symp)
+ && S_IS_DEFINED (symp))
{
union internal_auxent *auxp;
@@ -1371,7 +1373,8 @@ coff_frob_symbol (symbolS *symp, int *punt)
sizeof (auxp->x_sym.x_fcnary.x_ary.x_dimen));
}
- if (S_GET_STORAGE_CLASS (symp) == C_EFCN)
+ if (S_GET_STORAGE_CLASS (symp) == C_EFCN
+ && S_IS_DEFINED (symp))
{
if (coff_last_function == 0)
as_fatal (_("C_EFCN symbol for %s out of scope"),
@@ -1678,6 +1681,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
}
sec = subseg_new (name, (subsegT) exp);
+
if (alignment >= 0)
sec->alignment_power = alignment;