Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
55ee1b03
Commit
55ee1b03
authored
Mar 29, 1992
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r626
parent
2b15883f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
12 deletions
+63
-12
gcc/config/svr4.h
+63
-12
No files found.
gcc/config/svr4.h
View file @
55ee1b03
...
@@ -39,12 +39,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
...
@@ -39,12 +39,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
appropriate define for the type of hardware that you are targeting.
appropriate define for the type of hardware that you are targeting.
*/
*/
/* Define a symbol so that libgcc* can know what sort of operating
environment and assembler syntax we are targeting for. */
#ifndef SVR4
#define SVR4
#endif
/* For the sake of libgcc2.c, indicate target supports atexit. */
/* For the sake of libgcc2.c, indicate target supports atexit. */
#define HAVE_ATEXIT
#define HAVE_ATEXIT
...
@@ -269,8 +263,11 @@ do { \
...
@@ -269,8 +263,11 @@ do { \
/* This is how to allocate empty space in some section. The .zero
/* This is how to allocate empty space in some section. The .zero
pseudo-op is used for this on most svr4 assemblers. */
pseudo-op is used for this on most svr4 assemblers. */
#define SKIP_ASM_OP ".zero"
#undef ASM_OUTPUT_SKIP
#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(FILE,SIZE) fprintf (FILE, "\t.zero\t%u\n", (SIZE))
#define ASM_OUTPUT_SKIP(FILE,SIZE) \
fprintf (FILE, "\t%s\t%u\n", SKIP_ASM_OP, (SIZE))
/* This is how to output a reference to a user-level label named NAME.
/* This is how to output a reference to a user-level label named NAME.
`assemble_name' uses this.
`assemble_name' uses this.
...
@@ -281,6 +278,46 @@ do { \
...
@@ -281,6 +278,46 @@ do { \
#undef ASM_OUTPUT_LABELREF
#undef ASM_OUTPUT_LABELREF
#define ASM_OUTPUT_LABELREF(FILE,NAME) fprintf (FILE, "%s", NAME)
#define ASM_OUTPUT_LABELREF(FILE,NAME) fprintf (FILE, "%s", NAME)
/* This is how to output an internal numbered label where
PREFIX is the class of label and NUM is the number within the class.
If the NUM argument is negative, we don't use it when generating the
label.
For most svr4 systems, the convention is that any symbol which begins
with a period is not put into the linker symbol table by the assembler.
*/
#undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \
do { \
if ((int) (NUM) >= 0) \ ???
fprintf
(
FILE
,
".%s%d:
\n
"
,
PREFIX
,
NUM
);
\
else
\
fprintf
(
FILE
,
".%s:
\n
"
,
PREFIX
);
\
}
while
(
0
)
/* This is how to store into the string LABEL
the symbol_ref name of an internal numbered label where
PREFIX is the class of label and NUM is the number within the class.
This is suitable for output with `assemble_name'.
If the NUM argument is negative, we don't use it when generating the
label.
For most svr4 systems, the convention is that any symbol which begins
with a period is not put into the linker symbol table by the assembler.
*/
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
do { \
if ((int) (NUM) >= 0) \
sprintf (LABEL, "*.%s%d", PREFIX, NUM); \
else \
sprintf (LABEL, "*.%s", PREFIX); \
} while (0)
/* The standard SVR4 assembler seems to require that certain builtin
/* The standard SVR4 assembler seems to require that certain builtin
library routines (e.g. .udiv) be explicitly declared as .globl
library routines (e.g. .udiv) be explicitly declared as .globl
in each assembly file where they are referenced. */
in each assembly file where they are referenced. */
...
@@ -293,10 +330,12 @@ do { \
...
@@ -293,10 +330,12 @@ do { \
the linker seems to want the alignment of data objects
the linker seems to want the alignment of data objects
to depend on their types. We do exactly that here. */
to depend on their types. We do exactly that here. */
#define COMMON_ASM_OP ".comm"
#undef ASM_OUTPUT_ALIGNED_COMMON
#undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
do { \
do { \
fp
uts ("\t.comm\t", (FILE));
\
fp
rintf ((FILE), "\t%s\t", COMMON_ASM_OP);
\
assemble_name ((FILE), (NAME)); \
assemble_name ((FILE), (NAME)); \
fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \
fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \
} while (0)
} while (0)
...
@@ -391,7 +430,7 @@ ctors_section () \
...
@@ -391,7 +430,7 @@ ctors_section () \
{ \
{ \
if (in_section != in_ctors) \
if (in_section != in_ctors) \
{ \
{ \
fprintf (asm_out_file,
CTORS_SECTION_ASM_OP);
\
fprintf (asm_out_file,
"%s\n", CTORS_SECTION_ASM_OP);
\
in_section = in_ctors; \
in_section = in_ctors; \
} \
} \
}
}
...
@@ -402,7 +441,7 @@ dtors_section () \
...
@@ -402,7 +441,7 @@ dtors_section () \
{ \
{ \
if (in_section != in_dtors) \
if (in_section != in_dtors) \
{ \
{ \
fprintf (asm_out_file,
DTORS_SECTION_ASM_OP);
\
fprintf (asm_out_file,
"%s\n", DTORS_SECTION_ASM_OP);
\
in_section = in_dtors; \
in_section = in_dtors; \
} \
} \
}
}
...
@@ -479,11 +518,22 @@ dtors_section () \
...
@@ -479,11 +518,22 @@ dtors_section () \
#define TYPE_OPERAND_FMT "@%s"
#define TYPE_OPERAND_FMT "@%s"
/* Write the extra assembler code needed to declare a function's result.
Most svr4 assemblers don't require any special declaration of the
result value, but there are exceptions. */
#ifndef ASM_DECLARE_RESULT
#define ASM_DECLARE_RESULT(FILE, RESULT)
#endif
/* These macros generate the special .type and .size directives which
/* These macros generate the special .type and .size directives which
are used to set the corresponding fields of the linker symbol table
are used to set the corresponding fields of the linker symbol table
entries in an ELF object file under SVR4. */
entries in an ELF object file under SVR4. These macros also output
the starting labels for the relevant functions/objects. */
/* Write the extra assembler code needed to declare a function properly. */
/* Write the extra assembler code needed to declare a function properly.
Some svr4 assemblers need to also have something extra said about the
function's return value. We allow for that here. */
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
do { \
do { \
...
@@ -492,6 +542,7 @@ dtors_section () \
...
@@ -492,6 +542,7 @@ dtors_section () \
putc (',', FILE); \
putc (',', FILE); \
fprintf (FILE, TYPE_OPERAND_FMT, "function"); \
fprintf (FILE, TYPE_OPERAND_FMT, "function"); \
putc ('\n', FILE); \
putc ('\n', FILE); \
ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
ASM_OUTPUT_LABEL(FILE, NAME); \
ASM_OUTPUT_LABEL(FILE, NAME); \
} while (0)
} while (0)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment