diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-07 12:12:53 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-07 12:12:53 -0400 |
commit | ac8ec8c0c9a31eff3eee3cf8e5cedcb7eee17cca (patch) | |
tree | 47ac3b7868456ca39e82b77cd701a2da136facc1 /gcc | |
parent | 19a9014fab5f39ebfe4e56a298e786eb2cf7d968 (diff) | |
download | gcc-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.h | 35 |
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; \ + } \ +} |