aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-07 12:12:53 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-07 12:12:53 -0400
commitac8ec8c0c9a31eff3eee3cf8e5cedcb7eee17cca (patch)
tree47ac3b7868456ca39e82b77cd701a2da136facc1 /gcc
parent19a9014fab5f39ebfe4e56a298e786eb2cf7d968 (diff)
downloadgcc-ac8ec8c0c9a31eff3eee3cf8e5cedcb7eee17cca.zip
gcc-ac8ec8c0c9a31eff3eee3cf8e5cedcb7eee17cca.tar.gz
gcc-ac8ec8c0c9a31eff3eee3cf8e5cedcb7eee17cca.tar.bz2
(LIB_SPEC): Support -fshared-data.
(CPP_SPEC): Set _SEQUENT_ to 1. (SHARED_SECTION_ASM_OP, ASM_OUTPUT_SHARED_COMMON): Supply new macros. (SHARED_BSS_SECTION_ASM_OP, BSS_SECTION_FUNCTION): Likewise. From-SVN: r7262
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/seq-sysv3.h35
1 files changed, 32 insertions, 3 deletions
diff --git a/gcc/config/i386/seq-sysv3.h b/gcc/config/i386/seq-sysv3.h
index f3998cf..dabdb59 100644
--- a/gcc/config/i386/seq-sysv3.h
+++ b/gcc/config/i386/seq-sysv3.h
@@ -11,10 +11,13 @@
%{p:-L/usr/lib/libp}%{pg:-L/usr/lib/libp}"
#undef LIB_SPEC
-#define LIB_SPEC "%{posix:-lcposix} %{shlib:-lc_s} -lc crtend.o%s"
+#define LIB_SPEC \
+"%{posix:-lcposix}\
+ %{shlib:-lc_s}\
+ %{fshared-data:-lpps -lseq} -lc crtend.o%s"
#undef CPP_SPEC
-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} -D_SEQUENT_"
+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} -D_SEQUENT_=1"
/* Although the .init section is used, it is not automatically invoked.
This because the _start() function in /lib/crt0.o never calls anything
@@ -25,5 +28,31 @@
our own exit function. */
#define HAVE_ATEXIT
-/* Assembler pseudo-op for shared data segment. */
+/* Assembler pseudo-op for initialized shared variables (.shdata). */
+#undef SHARED_SECTION_ASM_OP
#define SHARED_SECTION_ASM_OP ".section .shdata, \"ws\""
+
+/* Assembler pseudo-op for uninitialized shared global variables (.shbss). */
+#undef ASM_OUTPUT_SHARED_COMMON
+#define ASM_OUTPUT_SHARED_COMMON(FILE, NAME, SIZE, ROUNDED) \
+( fputs(".comm ", (FILE)), \
+ assemble_name((FILE), (NAME)), \
+ fprintf((FILE), ",%u,-3\n", (SIZE)))
+
+/* Assembler pseudo-op for uninitialized shared local variables (.shbss). */
+#undef SHARED_BSS_SECTION_ASM_OP
+#define SHARED_BSS_SECTION_ASM_OP ".section .shbss, \"bs\""
+#undef BSS_SECTION_FUNCTION
+#define BSS_SECTION_FUNCTION \
+void \
+bss_section () \
+{ \
+ if (in_section != in_bss) \
+ { \
+ if (flag_shared_data) \
+ fprintf (asm_out_file, "%s\n", SHARED_BSS_SECTION_ASM_OP); \
+ else \
+ fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP); \
+ in_section = in_bss; \
+ } \
+}