winnt.c (i386_pe_valid_decl_attribute_p): Recognize shared as a valid attribute.

* i386/winnt.c (i386_pe_valid_decl_attribute_p): Recognize
        shared as a valid attribute.
        * i386/cygwin.h (ASM_OUTPUT_SECTION): Handle shared attribute.
        * extend.texi: Document `shared' variable attribute.

From-SVN: r29404
This commit is contained in:
Mumit Khan 1999-09-14 10:06:06 +00:00 committed by Jeff Law
parent 46346e0ea5
commit 593d3a34f8
4 changed files with 43 additions and 1 deletions

View File

@ -1,3 +1,10 @@
Tue Sep 14 04:03:44 1999 Mumit Khan <khan@xraylith.wisc.edu>
* i386/winnt.c (i386_pe_valid_decl_attribute_p): Recognize
shared as a valid attribute.
* i386/cygwin.h (ASM_OUTPUT_SECTION): Handle shared attribute.
* extend.texi: Document `shared' variable attribute.
Tue Sep 14 04:01:46 1999 Loren Rittle <ljrittle@acm.org>
* configure.in: Handle --enable-threads on FreeBSD.

View File

@ -405,7 +405,14 @@ do { \
else if (DECL && DECL_READONLY_SECTION (DECL, RELOC)) \
type = SECT_RO, mode = ""; \
else \
type = SECT_RW, mode = "w"; \
{ \
type = SECT_RW; \
if (TREE_CODE (DECL) == VAR_DECL \
&& lookup_attribute ("shared", DECL_MACHINE_ATTRIBUTES (DECL))) \
mode = "ws"; \
else \
mode = "w"; \
} \
\
if (s == 0) \
{ \

View File

@ -56,6 +56,8 @@ i386_pe_valid_decl_attribute_p (decl, attributes, attr, args)
return 1;
if (is_attribute_p ("dllimport", attr))
return 1;
if (is_attribute_p ("shared", attr))
return TREE_CODE (decl) == VAR_DECL;
}
return ix86_valid_decl_attribute_p (decl, attributes, attr, args);

View File

@ -2015,6 +2015,32 @@ attribute is not available on all platforms.
If you need to map the entire contents of a module to a particular
section, consider using the facilities of the linker instead.
@item shared
@cindex @code{shared} variable attribute
On Windows NT, in addition to nputting variable definitions in a named
section, the section can also be shared among all running copies of an
executable or DLL. For example, this small program defines shared data
by putting it in a named section "shared" and marking the section
shareable:
@smallexample
int foo __attribute__((section ("shared"), shared)) = 0;
int
main()
@{
/* Read and write foo. All running copies see the same value. */
return 0;
@}
@end smallexample
@noindent
You may only use the @code{shared} attribute along with @code{section}
attribute with a fully initialized global definition because of the way
linkers work. See @code{section} attribute for more information.
The @code{shared} attribute is only available on Windows NT.
@item transparent_union
This attribute, attached to a function parameter which is a union, means
that the corresponding argument may have the type of any union member,