+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.
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) \
{ \
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);
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,