From bd826630b1258af33355c6d6906ce42111b2f8fb Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sun, 8 Aug 1999 16:50:27 +0000 Subject: 1999-08-08 Mumit Khan * 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 * coffcode.h (coff_classify_symbol): Comment out part of 1999-08-05 change which breaks cygwin DLLs. --- bfd/ChangeLog | 11 +++++++++++ bfd/bfd-in2.h | 4 ++++ bfd/coffcode.h | 10 ++++++++++ bfd/peicode.h | 2 ++ bfd/section.c | 4 ++++ 5 files changed, 31 insertions(+) (limited to 'bfd') 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 + + * 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 + * 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. *} -- cgit v1.1