aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r--bfd/coffcode.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index cc7b148..301e5f7 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -445,6 +445,8 @@ sec_to_styp_flags (sec_name, sec_flags)
#ifdef COFF_WITH_PE
if (sec_flags & SEC_LINK_ONCE)
styp_flags |= IMAGE_SCN_LNK_COMDAT;
+ if (sec_flags & SEC_SHARED)
+ styp_flags |= IMAGE_SCN_MEM_SHARED;
#endif
return (styp_flags);
@@ -579,6 +581,9 @@ styp_to_sec_flags (abfd, hdr, name)
if (styp_flags & IMAGE_SCN_LNK_REMOVE)
sec_flags |= SEC_EXCLUDE;
+ if (styp_flags & IMAGE_SCN_MEM_SHARED)
+ sec_flags |= SEC_SHARED;
+
if (styp_flags & IMAGE_SCN_LNK_COMDAT)
{
sec_flags |= SEC_LINK_ONCE;
@@ -3911,6 +3916,10 @@ coff_classify_symbol (abfd, syment)
return COFF_SYMBOL_LOCAL;
}
+#if 0
+ /* This is correct for Microsoft generated objects, but it
+ breaks gas generated objects. */
+
if (syment->n_value == 0)
{
asection *sec;
@@ -3923,6 +3932,7 @@ coff_classify_symbol (abfd, syment)
== 0))
return COFF_SYMBOL_PE_SECTION;
}
+#endif
return COFF_SYMBOL_LOCAL;
}