summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-03-16 10:31:38 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-03-16 10:31:38 +0000
commit397cd47b3fd99736100dffbe4720904103cc8241 (patch)
treedd96ed77d5eef22b33b8c2326232c26b3cc368dd /gcc
parent7d0d62c748a8d7c0265f2b55396d6e56bfc52d86 (diff)
downloadgcc-397cd47b3fd99736100dffbe4720904103cc8241.tar.gz
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@504 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/tower-as.h4
-rw-r--r--gcc/config/m88k/dgux.h16
-rw-r--r--gcc/config/m88k/sysv4.h6
-rw-r--r--gcc/config/romp/romp.h4
-rw-r--r--gcc/config/rs6000/rs6000.h104
5 files changed, 77 insertions, 57 deletions
diff --git a/gcc/config/m68k/tower-as.h b/gcc/config/m68k/tower-as.h
index dbf19b37802..43fce99cb7f 100644
--- a/gcc/config/m68k/tower-as.h
+++ b/gcc/config/m68k/tower-as.h
@@ -283,10 +283,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
output_file_directive ((FILE), main_input_filename))
#undef TEXT_SECTION_ASM_OP
-#define TEXT_SECTION_ASM_OP "\ttext"
+#define TEXT_SECTION_ASM_OP "text"
#undef DATA_SECTION_ASM_OP
-#define DATA_SECTION_ASM_OP "\tdata"
+#define DATA_SECTION_ASM_OP "data"
/* This says how to output an assembler line to define a global common symbol.
We use SIZE rather than ROUNDED, as this is what the native cc does. */
diff --git a/gcc/config/m88k/dgux.h b/gcc/config/m88k/dgux.h
index 9374382ff7d..6d5494fe95a 100644
--- a/gcc/config/m88k/dgux.h
+++ b/gcc/config/m88k/dgux.h
@@ -78,7 +78,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define ASM_SPEC "\
%{V} %{v:%{!V:-V}} %{pipe: - %{msvr4:%{mversion-03.00:-KV3}}}\
%{!mlegend:%{mstandard:-Wc,off}}\
-%{mlegend:-Wc,-fix-bb,-h\"gcc-1.96.3\",-s\"%i\"\
+%{mlegend:-Wc,-fix-bb,-h\"gcc-1.96.5\",-s\"%i\"\
%{traditional:,-lc}%{!traditional:,-lansi-c}\
%{mstandard:,-keep-std}\
%{mkeep-coff:,-keep-coff}\
@@ -150,20 +150,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef WCHAR_TYPE
#undef WCHAR_TYPE_SIZE
-/* Override svr4.h and m88k.h except when compling crtstuff.c. */
+/* Override svr4.h and m88k.h except when compiling crtstuff.c. */
#if !defined (CRT_BEGIN) && !defined (CRT_END)
#if 0 /* The SVR4 init method doesn't yet work. */
#undef INIT_SECTION_ASM_OP
#define INIT_SECTION_ASM_OP (VERSION_0300_SYNTAX \
- ? "\tsection\t .init,\"xa\"\n" \
- : "\tsection\t .init,\"x\"\n")
+ ? "section\t .init,\"xa\"" \
+ : "section\t .init,\"x\"")
#endif
#undef CTORS_SECTION_ASM_OP
#define CTORS_SECTION_ASM_OP (VERSION_0300_SYNTAX \
- ? "\tsection\t .ctors,\"aw\"\n" \
- : "\tsection\t .ctors,\"d\"\n")
+ ? "section\t .ctors,\"aw\"" \
+ : "section\t .ctors,\"d\"")
#undef DTORS_SECTION_ASM_OP
#define DTORS_SECTION_ASM_OP (VERSION_0300_SYNTAX \
- ? "\tsection\t .dtors,\"aw\"\n" \
- : "\tsection\t .dtors,\"d\"\n")
+ ? "section\t .dtors,\"aw\"" \
+ : "section\t .dtors,\"d\"")
#endif /* crtstuff.c */
diff --git a/gcc/config/m88k/sysv4.h b/gcc/config/m88k/sysv4.h
index a4e3de83d26..1e7e093dd50 100644
--- a/gcc/config/m88k/sysv4.h
+++ b/gcc/config/m88k/sysv4.h
@@ -57,10 +57,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Override svr4.h and m88k.h. */
#undef INIT_SECTION_ASM_OP
-#define INIT_SECTION_ASM_OP "\tsection\t.init,\"xa\",#progbits\n"
+#define INIT_SECTION_ASM_OP "section\t.init,\"xa\",#progbits"
#undef CTORS_SECTION_ASM_OP
-#define CTORS_SECTION_ASM_OP "\tsection\t.ctors,\"a\",#progbits\n"
+#define CTORS_SECTION_ASM_OP "section\t.ctors,\"a\",#progbits"
#undef DTORS_SECTION_ASM_OP
-#define DTORS_SECTION_ASM_OP "\tsection\t.dtors,\"a\",#progbits\n"
+#define DTORS_SECTION_ASM_OP "section\t.dtors,\"a\",#progbits"
diff --git a/gcc/config/romp/romp.h b/gcc/config/romp/romp.h
index 880372843b7..3de640fd4d6 100644
--- a/gcc/config/romp/romp.h
+++ b/gcc/config/romp/romp.h
@@ -1339,11 +1339,11 @@ struct rt_cargs {int gregs, fregs; };
/* Output before instructions and read-only data. */
-#define TEXT_SECTION_ASM_OP "\t.text"
+#define TEXT_SECTION_ASM_OP ".text"
/* Output before writable data. */
-#define DATA_SECTION_ASM_OP "\t.data"
+#define DATA_SECTION_ASM_OP ".data"
/* How to refer to registers in assembler output.
This sequence is indexed by compiler's hard-register-number (see above). */
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 2280f433624..0ef35579e24 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -30,8 +30,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Print subsidiary information on the compiler version in use. */
#define TARGET_VERSION ;
-/* Tell the assembler to assume that all undefined names are external. Don't
- do this until the fixed IBM assembler is more generally available. */
+/* Tell the assembler to assume that all undefined names are external.
+
+ Don't do this until the fixed IBM assembler is more generally available.
+ When this becomes permanently defined, the ASM_OUTPUT_EXTERNAL,
+ ASM_OUTPUT_EXTERNAL_LIBCALL, and RS6000_OUTPUT_BASENAME macros will no
+ longer be needed. */
/* #define ASM_SPEC "-u" */
@@ -116,7 +120,7 @@ extern int target_flags;
instructions for them. Might as well be consistent with bits and bytes. */
#define WORDS_BIG_ENDIAN 1
-/* number of bits in an addressible storage unit */
+/* number of bits in an addressable storage unit */
#define BITS_PER_UNIT 8
/* Width in bits of a "word", which is the contents of a machine register.
@@ -170,9 +174,9 @@ extern int target_flags;
&& TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
&& (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-/* Define this if move instructions will actually fail to work
+/* Non-zero if move instructions will actually fail to work
when given unaligned data. */
-/* #define STRICT_ALIGNMENT */
+#define STRICT_ALIGNMENT 0
/* Standard register usage. */
@@ -1143,25 +1147,16 @@ struct rs6000_args {int words, fregno, nargs_prototype; };
/* Define if normal loads of shorter-than-word items from memory clears
the rest of the bigs in the register. */
#define BYTE_LOADS_ZERO_EXTEND
+
+/* The RS/6000 uses the XCOFF format. */
-/* We can't support any debugging info on the RS/6000 since it has its
- own format. */
-/* #define DBX_DEBUGGING_INFO */
-/* #define SDB_DEBUGGING_INFO */
+#define XCOFF_DEBUGGING_INFO
/* We don't have GAS for the RS/6000 yet, so don't write out special
.stabs in cc1plus. */
#define FASCIST_ASSEMBLER
-/* Do not break .stabs pseudos into continuations. */
-#define DBX_CONTIN_LENGTH 0
-
-/* Don't try to use the `x' type-cross-reference character in DBX data.
- Also has the consequence of putting each struct, union or enum
- into a separate .stabs, containing only cross-refs to the others. */
-#define DBX_NO_XREFS
-
/* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits
is done just by pretending it is already truncated. */
#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
@@ -1286,19 +1281,24 @@ extern int rs6000_trunc_used;
On the RS/6000, we want to go into the TOC section so at least one
.toc will be emitted.
- Also initialize the section names for the RS/6000 at this point. */
+ Also initialize the section names for the RS/6000 at this point.
+
+ Also, in order to output proper .bs/.es pairs, we need at least one static
+ [RW] section emitted. */
#define ASM_FILE_START(FILE) \
{ \
- rs6000_gen_section_name (&rs6000_bss_section_name, \
+ rs6000_gen_section_name (&xcoff_bss_section_name, \
main_input_filename, ".bss_"); \
- rs6000_gen_section_name (&rs6000_private_data_section_name, \
+ rs6000_gen_section_name (&xcoff_private_data_section_name, \
main_input_filename, ".rw_"); \
- rs6000_gen_section_name (&rs6000_read_only_section_name, \
+ rs6000_gen_section_name (&xcoff_read_only_section_name, \
main_input_filename, ".ro_"); \
\
toc_section (); \
bss_section (); \
+ if (write_symbols != NO_DEBUG) \
+ private_data_section (); \
}
/* Output at end of assembler file.
@@ -1313,13 +1313,6 @@ extern int rs6000_trunc_used;
fprintf (FILE, "\t.long _section_.text\n"); \
}
-/* Names of bss and data sections. These should be unique names for each
- compilation unit. */
-
-extern char *rs6000_bss_section_name;
-extern char *rs6000_private_data_section_name;
-extern char *rs6000_read_only_section_name;
-
/* We define this to prevent the name mangler from putting dollar signs into
function names. */
@@ -1331,6 +1324,10 @@ extern char *rs6000_read_only_section_name;
#define DOLLARS_IN_IDENTIFIERS 0
+/* Implicit library calls should use memcpy, not bcopy, etc. */
+
+#define TARGET_MEM_FUNCTIONS
+
/* Define the extra sections we need. We define three: one is the read-only
data section which is used for constants. This is a csect whose name is
derived from the name of the input file. The second is for initialized
@@ -1357,8 +1354,8 @@ read_only_data_section () \
{ \
if (in_section != read_only_data) \
{ \
- fprintf (asm_out_file, "\t.csect\t%s[RO]\n", \
- rs6000_read_only_section_name); \
+ fprintf (asm_out_file, "\t.csect %s[RO]\n", \
+ xcoff_read_only_section_name); \
in_section = read_only_data; \
} \
} \
@@ -1369,7 +1366,7 @@ private_data_section () \
if (in_section != private_data) \
{ \
fprintf (asm_out_file, "\t.csect %s[RW]\n", \
- rs6000_private_data_section_name); \
+ xcoff_private_data_section_name); \
\
in_section = private_data; \
} \
@@ -1380,8 +1377,8 @@ read_only_private_data_section () \
{ \
if (in_section != read_only_private_data) \
{ \
- fprintf (asm_out_file, "\t.csect\t%s[RO]\n", \
- rs6000_private_data_section_name); \
+ fprintf (asm_out_file, "\t.csect %s[RO]\n", \
+ xcoff_private_data_section_name); \
in_section = read_only_private_data; \
} \
} \
@@ -1400,8 +1397,8 @@ bss_section () \
{ \
if (in_section != bss) \
{ \
- fprintf (asm_out_file, "\t.csect\t%s[BS]\n", \
- rs6000_bss_section_name); \
+ fprintf (asm_out_file, "\t.csect %s[BS]\n", \
+ xcoff_bss_section_name); \
in_section = bss; \
} \
} \
@@ -1414,12 +1411,20 @@ bss_section () \
`text_section' call previously done. We do have to go back to that
csect, however. */
+/* ??? What do the 16 and 044 in the .function line really mean? */
+
#define ASM_DECLARE_FUNCTION_NAME(FILE,NAME,DECL) \
{ if (TREE_PUBLIC (DECL)) \
{ \
fprintf (FILE, "\t.globl ."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
- fprintf (FILE,"\n"); \
+ fprintf (FILE, "\n"); \
+ } \
+ else if (write_symbols == XCOFF_DEBUG) \
+ { \
+ fprintf (FILE, "\t.lglobl ."); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+ fprintf (FILE, "\n"); \
} \
fprintf (FILE, "\t.csect "); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
@@ -1428,10 +1433,23 @@ bss_section () \
fprintf (FILE, ":\n"); \
fprintf (FILE, "\t.long ."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
- fprintf (FILE, ", TOC[tc0], 0\n"); \
+ fprintf (FILE, ", TOC[tc0], 0\n"); \
fprintf (FILE, "\t.csect [PR]\n."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, ":\n"); \
+ if (write_symbols == XCOFF_DEBUG) \
+ { \
+ dbxout_symbol (DECL, 0); \
+ fprintf (FILE, "\t.function ."); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+ fprintf (FILE, ",."); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+ fprintf (FILE, ",16,044,L..end_"); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+ fprintf (FILE, "-."); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+ fprintf (FILE, "\n"); \
+ } \
}
/* Return non-zero if this entry is to be written into the constant pool
@@ -1566,11 +1584,11 @@ bss_section () \
/* Output before instructions. */
-#define TEXT_SECTION_ASM_OP "\t.csect [PR]"
+#define TEXT_SECTION_ASM_OP ".csect [PR]"
/* Output before writable data. */
-#define DATA_SECTION_ASM_OP "\t.csect .data[RW]"
+#define DATA_SECTION_ASM_OP ".csect .data[RW]"
/* How to refer to registers in assembler output.
This sequence is indexed by compiler's hard-register-number (see above). */
@@ -1732,7 +1750,8 @@ bss_section () \
to define a global common symbol. */
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
- do { fputs (".comm ", (FILE)); \
+ do { bss_section (); \
+ fputs (".comm ", (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
fprintf ((FILE), ",%d\n", (SIZE)); } while (0)
@@ -1740,9 +1759,10 @@ bss_section () \
to define a local common symbol. */
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED) \
- do { fputs (".lcomm ", (FILE)); \
+ do { bss_section (); \
+ fputs (".lcomm ", (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
- fprintf ((FILE), ",%d,%s\n", (SIZE), rs6000_bss_section_name); \
+ fprintf ((FILE), ",%d,%s\n", (SIZE), xcoff_bss_section_name); \
} while (0)
/* Store in OUTPUT a string (made with alloca) containing