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
73bee569
Commit
73bee569
authored
Dec 22, 1995
by
Stan Cox
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial revision
From-SVN: r10828
parent
6277f86d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
460 additions
and
0 deletions
+460
-0
gcc/config/i386/dgux.c
+191
-0
gcc/config/i386/dgux.h
+269
-0
No files found.
gcc/config/i386/dgux.c
0 → 100644
View file @
73bee569
/* Subroutines for GNU compiler for Intel 80x86 running DG/ux
Copyright (C) 1993, 1995 Free Software Foundation, Inc.
Currently maintained by (gcc@dg-rtp.dg.com)
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <time.h>
#include "i386/i386.c"
extern
char
*
version_string
;
struct
option
{
char
*
string
;
int
*
variable
;
int
on_value
;
};
static
int
output_option
(
file
,
sep
,
type
,
name
,
indent
,
pos
,
max
)
FILE
*
file
;
char
*
sep
;
char
*
type
;
char
*
name
;
char
*
indent
;
int
pos
;
int
max
;
{
if
(
strlen
(
sep
)
+
strlen
(
type
)
+
strlen
(
name
)
+
pos
>
max
)
{
fprintf
(
file
,
indent
);
return
fprintf
(
file
,
"%s%s"
,
type
,
name
);
}
return
pos
+
fprintf
(
file
,
"%s%s%s"
,
sep
,
type
,
name
);
}
static
struct
{
char
*
name
;
int
value
;
}
m_options
[]
=
TARGET_SWITCHES
;
static
void
output_options
(
file
,
f_options
,
f_len
,
W_options
,
W_len
,
pos
,
max
,
sep
,
indent
,
term
)
FILE
*
file
;
struct
option
*
f_options
;
struct
option
*
W_options
;
int
f_len
,
W_len
;
int
pos
;
int
max
;
char
*
indent
;
char
*
term
;
{
register
int
j
;
if
(
optimize
)
pos
=
output_option
(
file
,
sep
,
"-O"
,
""
,
indent
,
pos
,
max
);
if
(
write_symbols
!=
NO_DEBUG
)
pos
=
output_option
(
file
,
sep
,
"-g"
,
""
,
indent
,
pos
,
max
);
/* if (flag_traditional)
pos = output_option (file, sep, "-traditional", "", indent, pos, max);*/
if
(
profile_flag
)
pos
=
output_option
(
file
,
sep
,
"-p"
,
""
,
indent
,
pos
,
max
);
if
(
profile_block_flag
)
pos
=
output_option
(
file
,
sep
,
"-a"
,
""
,
indent
,
pos
,
max
);
for
(
j
=
0
;
j
<
f_len
;
j
++
)
if
(
*
f_options
[
j
].
variable
==
f_options
[
j
].
on_value
)
pos
=
output_option
(
file
,
sep
,
"-f"
,
f_options
[
j
].
string
,
indent
,
pos
,
max
);
for
(
j
=
0
;
j
<
W_len
;
j
++
)
if
(
*
W_options
[
j
].
variable
==
W_options
[
j
].
on_value
)
pos
=
output_option
(
file
,
sep
,
"-W"
,
W_options
[
j
].
string
,
indent
,
pos
,
max
);
for
(
j
=
0
;
j
<
sizeof
m_options
/
sizeof
m_options
[
0
];
j
++
)
if
(
m_options
[
j
].
name
[
0
]
!=
'\0'
&&
m_options
[
j
].
value
>
0
&&
((
m_options
[
j
].
value
&
target_flags
)
==
m_options
[
j
].
value
))
pos
=
output_option
(
file
,
sep
,
"-m"
,
m_options
[
j
].
name
,
indent
,
pos
,
max
);
pos
=
output_option
(
file
,
sep
,
"-mcpu="
,
ix86_cpu_string
,
indent
,
pos
,
max
);
pos
=
output_option
(
file
,
sep
,
"-march="
,
ix86_isa_string
,
indent
,
pos
,
max
);
fprintf
(
file
,
term
);
}
/* Output to FILE the start of the assembler file. */
void
output_file_start
(
file
,
f_options
,
f_len
,
W_options
,
W_len
)
FILE
*
file
;
struct
option
*
f_options
;
struct
option
*
W_options
;
int
f_len
,
W_len
;
{
register
int
pos
;
output_file_directive
(
file
,
main_input_filename
);
fprintf
(
file
,
"
\t
.version
\t\"
01.01
\"\n
"
);
\
/* Switch to the data section so that the coffsem symbol and the
gcc2_compiled. symbol aren't in the text section. */
data_section
();
pos
=
fprintf
(
file
,
"
\n
// cc1 (%s) arguments:"
,
VERSION_STRING
);
output_options
(
file
,
f_options
,
f_len
,
W_options
,
W_len
,
pos
,
75
,
" "
,
"
\n
// "
,
"
\n\n
"
);
#ifdef TARGET_IDENTIFY_REVISION
if
(
TARGET_IDENTIFY_REVISION
)
{
char
indent
[
256
];
time_t
now
=
time
((
time_t
*
)
0
);
sprintf
(
indent
,
"]
\"\n\t
%s
\t
\"
@(#)%s ["
,
IDENT_ASM_OP
,
main_input_filename
);
fprintf
(
file
,
indent
+
3
);
pos
=
fprintf
(
file
,
"gcc %s, %.24s,"
,
VERSION_STRING
,
ctime
(
&
now
));
output_options
(
file
,
f_options
,
f_len
,
W_options
,
W_len
,
pos
,
150
-
strlen
(
indent
),
" "
,
indent
,
"]
\"\n\n
"
);
}
#endif
/* TARGET_IDENTIFY_REVISION */
}
#ifndef CROSS_COMPILE
#if defined (_abort_aux)
/* Debugging aid to be registered via `atexit'. See the definition
of abort in dgux.h. */
void
abort_aux
()
{
extern
int
insn_
;
extern
char
*
file_
;
extern
int
line_
;
static
int
done
;
rtx
line_note
;
if
(
done
++
)
return
;
if
(
file_
||
line_
)
{
if
(
write_symbols
!=
NO_DEBUG
)
{
for
(
line_note
=
(
rtx
)
insn_
;
line_note
!=
0
;
line_note
=
PREV_INSN
(
line_note
))
if
(
GET_CODE
(
line_note
)
==
NOTE
&&
NOTE_LINE_NUMBER
(
line_note
)
>
0
)
break
;
if
(
line_note
!=
0
)
{
error_with_file_and_line
(
NOTE_SOURCE_FILE
(
line_note
),
NOTE_LINE_NUMBER
(
line_note
),
"Internal gcc abort from %s:%d"
,
file_
?
file_
:
"<nofile>"
,
line_
);
if
(
insn_
&&
file_
&&
strcmp
(
file_
,
"toplev.c"
))
{
error_with_file_and_line
(
NOTE_SOURCE_FILE
(
line_note
),
NOTE_LINE_NUMBER
(
line_note
),
"The local variable `insn' has the value:"
,
0
);
debug_rtx
((
rtx
)
insn_
);
}
}
}
if
(
write_symbols
==
NO_DEBUG
||
line_note
==
0
)
{
error
(
"Internal gcc abort from %s:%d"
,
file_
?
file_
:
"<nofile>"
,
line_
);
if
(
insn_
&&
file_
&&
strcmp
(
file_
,
"toplev.c"
))
{
error
(
"The local variable `insn' has the value:"
,
0
);
debug_rtx
((
rtx
)
insn_
);
}
}
}
}
#endif
#endif
gcc/config/i386/dgux.h
0 → 100644
View file @
73bee569
/* Target definitions for GNU compiler for Intel 80x86 running DG/ux
Copyright (C) 1993, 1995 Free Software Foundation, Inc.
Currently maintained by (gcc@dg-rtp.dg.com)
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* for now, we are just like the sysv4 version with a
few hacks
*/
#include "i386/sysv4.h"
#ifndef VERSION_INFO2
#define VERSION_INFO2 "$Revision$"
#endif
#ifndef VERSION_STRING
#define VERSION_STRING version_string
#endif
/* Identify the compiler. */
/* TARGET_VERSION used by toplev.c VERSION_STRING used by -midentify-revision */
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (%s%s, %s)", \
VERSION_INFO1, VERSION_INFO2, __DATE__)
#undef VERSION_INFO1
#define VERSION_INFO1 "ix86 DG/ux, "
/* Augment TARGET_SWITCHES with the MXDB options. */
#define MASK_STANDARD 0x40000000
/* Retain standard information */
#define MASK_NOLEGEND 0x20000000
/* Discard legend information */
#define MASK_EXTERNAL_LEGEND 0x10000000
/* Make external legends */
#define MASK_IDENTIFY_REVISION 0x08000000
/* Emit 'ident' to .s */
#define MASK_WARN_PASS_STRUCT 0x04000000
/* Emit 'ident' to .s */
#define TARGET_STANDARD (target_flags & MASK_STANDARD)
#define TARGET_NOLEGEND (target_flags & MASK_NOLEGEND)
#define TARGET_EXTERNAL_LEGEND (target_flags & MASK_EXTERNAL_LEGEND)
#define TARGET_IDENTIFY_REVISION (target_flags & MASK_IDENTIFY_REVISION)
#define TARGET_WARN_PASS_STRUCT (target_flags & MASK_WARN_PASS_STRUCT)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "standard", MASK_STANDARD }, \
{ "legend", -MASK_NOLEGEND }, \
{ "no-legend", MASK_NOLEGEND }, \
{ "external-legend", MASK_EXTERNAL_LEGEND }, \
{ "identify-revision", MASK_IDENTIFY_REVISION }, \
{ "warn-passed-structs", MASK_WARN_PASS_STRUCT },
#undef DWARF_DEBUGGING_INFO
#define DWARF_DEBUGGING_INFO
/*
allow -gstabs so that those who have gnu-as installed
can debug c++ programs.
*/
#undef DBX_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO
#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
/* Override svr[34].h. */
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
output_file_start (FILE, f_options, sizeof f_options / sizeof f_options[0], \
W_options, sizeof W_options / sizeof W_options[0])
/* ix86 abi specified type for wchar_t */
#undef WCHAR_TYPE
#define WCHAR_TYPE "long int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD
/* Define this to be nonzero if the character `$' should be allowed
by default in identifier names. DG/ux does this differently than
standard i386 */
#undef DOLLARS_IN_IDENTIFIERS
#define DOLLARS_IN_IDENTIFIERS 1
/* Some machines may desire to change what optimizations are performed for
various optimization levels. This macro, if defined, is executed once
just after the optimization level is determined and before the remainder
of the command options have been parsed. Values set in this macro are
used as the default values for the other command line options.
LEVEL is the optimization level specified; 2 if -O2 is specified,
1 if -O is specified, and 0 if neither is specified. */
/* This macro used to store 0 in flag_signed_bitfields.
Not only is that misuse of this macro; the whole idea is wrong.
The GNU C dialect makes bitfields signed by default,
regardless of machine type. Making any machine inconsistent in this
regard is bad for portability.
I chose to make bitfields signed by default because this is consistent
with the way ordinary variables are handled: `int' equals `signed int'.
If there is a good reason to prefer making bitfields unsigned by default,
it cannot have anything to do with the choice of machine.
If the reason is good enough, we should change the convention for all machines.
-- rms, 20 July 1991. */
/*
this really should go into dgux-local.h
*/
#undef OPTIMIZATION_OPTIONS
#define OPTIMIZATION_OPTIONS(LEVEL) \
do { \
extern int flag_signed_bitfields; \
flag_signed_bitfields = 0; \
abort_helper (); \
} while (0)
/* The normal location of the `ld' and `as' programs */
#undef MD_EXEC_PREFIX
#define MD_EXEC_PREFIX "/usr/bin/"
/* The normal location of the various *crt*.o files is the */
#undef MD_STARTFILE_PREFIX
#define MD_STARTFILE_PREFIX "/usr/lib/"
/* Macros to be automatically defined.
__CLASSIFY_TYPE__ is used in the <varargs.h> and <stdarg.h> header
files with DG/UX revision 5.40 and later. This allows GNU CC to
operate without installing the header files. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Di386 -D__ix86 -Dunix -DDGUX -D__CLASSIFY_TYPE__=2\
-Asystem(unix) -Asystem(svr4) -Acpu(i386) -Amachine(i386)"
/*
If not -ansi, -traditional, or restricting include files to one
specific source target, specify full DG/UX features.
*/
#undef CPP_SPEC
#define CPP_SPEC "%{!ansi:%{!traditional:-D__OPEN_NAMESPACE__}}"
/* Assembler support (legends for mxdb). */
#undef ASM_SPEC
#define ASM_SPEC "\
%{mno-legend:%{mstandard:-Wc,off}}\
%{g:%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
%{traditional:,-lc}%{!traditional:,-lansi-c}\
%{mstandard:,-keep-std}\
%{mexternal-legend:,-external}}}"
/* Override svr4.h. */
/* hassey 3/12/94 keep svr4 ASM_FINAL_SPEC allows -pipe to work */
/* Linker and library spec's.
-static, -shared, -symbolic, -h* and -z* access AT&T V.4 link options.
-svr4 instructs gcc to place /usr/lib/values-X[cat].o on link the line.
The absense of -msvr4 indicates linking done in a COFF environment and
adds the link script to the link line. In all environments, the first
and last objects are crtbegin.o and crtend.o.
When the -G link option is used (-shared and -symbolic) a final link is
not being done. */
#undef LIB_SPEC
#define LIB_SPEC \
"%{!shared:%{!symbolic:-lc}}"
#undef LINK_SPEC
#define LINK_SPEC "%{z*} %{h*} %{V} %{v:%{!V:-V}} \
%{static:-dn -Bstatic} \
%{shared:-G -dy} \
%{symbolic:-Bsymbolic -G -dy} \
%{pg:-L/usr/lib/libp}%{p:-L/usr/lib/libp}"
#ifdef CROSS_COMPILE
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
%{!pg:%{p:mcrt1.o%s} \
%{!p:crt1.o%s}}}} \
%{pg:gcrti.o%s}%{!pg:crti.o%s} \
crtbegin.o%s \
%{ansi:values-Xc.o%s} \
%{!ansi:%{traditional:values-Xt.o%s} \
%{!traditional:values-Xa.o%s}}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:crtn.o%s}"
#else
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
%{!pg:%{p:/lib/mcrt1.o%s} \
%{!p:/lib/crt1.o%s}}} \
%{pg:gcrti.o%s}%{!pg:/lib/crti.o%s}} \
crtbegin.o%s \
%{ansi:/lib/values-Xc.o%s} \
%{!ansi:%{traditional:/lib/values-Xt.o%s} \
%{!traditional:/lib/values-Xa.o%s}}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:/lib/crtn.o}"
#endif
/* CROSS_COMPILE */
#if !defined (no_abort) || defined (CRT_BEGIN) || defined (CRT_END)
#undef abort
char
insn
;
int
insn_
;
char
*
file_
;
int
line_
;
#define abort() \
(insn_ = (int) insn, \
file_ = __FILE__, \
line_ = __LINE__, \
fancy_abort ())
#define abort_helper() \
do { \
extern void abort_aux (); \
atexit (abort_aux); \
} while (0)
#define _abort_aux
#endif
/* no abort */
/* The maximum alignment which the object file format can support.
page alignment would seem to be enough */
#undef MAX_OFILE_ALIGNMENT
#define MAX_OFILE_ALIGNMENT 0x1000
/* Must use data section for relocatable constants when pic. */
#undef SELECT_RTX_SECTION
#define SELECT_RTX_SECTION(MODE,RTX) \
{ \
if (flag_pic && symbolic_operand (RTX)) \
data_section (); \
else \
const_section (); \
}
/* This supplements FUNCTION_ARG's definition in i386.h to check
TARGET_WARN_PASS_STRUCT */
#undef FUNCTION_ARG
#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
((((MODE) == BLKmode && TARGET_WARN_PASS_STRUCT) ? \
warning ("argument is a structure"),0 : 0), \
(function_arg (&CUM, MODE, TYPE, NAMED)))
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