aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog11
-rw-r--r--bfd/bfd-in2.h4
-rw-r--r--bfd/coffcode.h10
-rw-r--r--bfd/peicode.h2
-rw-r--r--bfd/section.c4
5 files changed, 31 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3890324..4de1900 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,16 @@
+1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * section.c (SEC_SHARED): Define.
+ * coffcode.h (sec_to_styp_flags): Handle SEC_SHARED.
+ (styp_to_sec_flags): Likewise.
+ * peicode.h (coff_swap_scnhdr_out): Likewise.
+ * bfd-in2.h: Rebuild.
+
1999-08-08 Ian Lance Taylor <ian@zembu.com>
+ * coffcode.h (coff_classify_symbol): Comment out part of
+ 1999-08-05 change which breaks cygwin DLLs.
+
* acinclude.m4 (BFD_BINARY_FOPEN): Change -windows to -windows*.
* aclocal.m4, configure: Rebuild.
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 6dc576b..1399749 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1008,6 +1008,10 @@ typedef struct sec
"near" the GP. */
#define SEC_SHORT 0x2000000
+ /* This section contains data which may be shared with other
+ executables or shared objects. */
+#define SEC_SHARED 0x4000000
+
/* End of section flags. */
/* Some internal packed boolean fields. */
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;
}
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 3adb2d8..3737a57 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -1239,6 +1239,8 @@ coff_swap_scnhdr_out (abfd, in, out)
flags |= IMAGE_SCN_MEM_READ;
if (! (flags & SEC_READONLY))
flags |= IMAGE_SCN_MEM_WRITE;
+ if (flags & SEC_SHARED)
+ flags |= IMAGE_SCN_MEM_SHARED;
}
bfd_h_put_32(abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
diff --git a/bfd/section.c b/bfd/section.c
index 4f3edac..654ce23 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -311,6 +311,10 @@ CODE_FRAGMENT
. "near" the GP. *}
.#define SEC_SHORT 0x2000000
.
+. {* This section contains data which may be shared with other
+. executables or shared objects. *}
+.#define SEC_SHARED 0x4000000
+.
. {* End of section flags. *}
.
. {* Some internal packed boolean fields. *}