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
35104543
Commit
35104543
authored
Aug 29, 1994
by
Stan Cox
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added coff and elf support.
From-SVN: r7999
parent
fd39ad06
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
8 deletions
+76
-8
gcc/listing
+76
-8
No files found.
gcc/listing
View file @
35104543
...
...
@@ -3,6 +3,9 @@
# listing is always written to stdout.
# Author: Igor Metz <metz@iam.unibe.ch>
# Revision 1.4 94/08/26 13:58:27 coxs <coxs@dg-rtp.dg.com>
# lister now guesses how to should be configured. Added elf and coff support.
#
# Revision 1.3 89/12/18 13:58:27 metz
# lister must now be configured before it can be used. This is done in the
# /bin/sh part of the code.
...
...
@@ -31,18 +34,46 @@
# i386 for i386 (Sun i386, ...)
# i386-linux for i386 (Linux, ...)
# uncomment the line you need:
# Guess what kind of objects we are creating and thus what type of assembler
# symbols to look for
ex /tmp/
$$
.c
<<
END
>/dev/null
a
main (){}
.
w
q
END
WD
=
`
pwd
`
cd
/tmp
gcc
-c
$$
.c
case
"
`
file
$$
.o
`
"
in
*
ELF
*
)
MYSYS
=
elf
;;
*
COFF
*
|
*
BCS
*
)
MYSYS
=
coff
;;
*
mc68k
*
|
*
M68000
*
)
MYSYS
=
mc68030
;;
*
SPARC
*
)
MYSYS
=
sparc
;;
*
386
*
)
MYSYS
=
i386
;;
esac
rm
$$
.c
$$
.o
cd
$WD
# uncomment the line you need if the above guesses incorrectly:
# MYSYS=mc68020
# MYSYS=mc68030
# MYSYS=sparc
# MYSYS=i386
# MYSYS=i386-linux
# MYSYS=`mach` # this will work on Suns with SunOS > 4.0.0
# MYSYS=elf
# MYSYS=coff
WHOAMI
=
$0
if
[
$#
-gt
0
]
;
then
FILENAME
=
$1
shift
fi
exec
gawk
-vsys
=
$MYSYS
-voptions
=
"
$*
"
'
exec
gawk
-v
whoami
=
$WHOAMI
-v
sys
=
$MYSYS
-voptions
=
"
$*
"
'
# commandline arguments:
# ARGV[0] = "gawk"
# ARGV[1] = processid
...
...
@@ -68,9 +99,26 @@ BEGIN {
# check processor architecture and set sourcecode line_hint accordingly
if (sys == "sparc" || sys == "i386") {
line_hint = "^[ \t]*\.stabn.*"
line_field = 3;
line_delimiter = ",";
line_offset = 0;
}
else if (sys == "mc68020" || sys == "mc68030" || sys == "i386-linux") {
line_hint = "^[ \t]*\.stabd.*"
line_field = 3;
line_delimiter = ",";
line_offset = 0;
}
else if (sys == "elf") {
line_hint = "section.*\.line"
line_field = 3;
line_delimiter = "\t";
line_offset = 0;
}
else if (sys == "coff") {
line_hint = "^[ \t]*ln"
line_field = 3;
line_delimiter = "\t";
}
else {
error("Processor type " sys " is not supported yet, sorry")
...
...
@@ -89,14 +137,15 @@ BEGIN {
while ( getline asm_code < asm_filename > 0 ) {
if ( (ignore_stabd==0) && (asm_code ~ line_hint)) {
while ( sys == "elf" && (asm_code !~ "word" && asm_code !~ "byte") &&
getline asm_code < asm_filename > 0);
# source line hint found. Split the line into fields separated by commas.
# num_of_fields is 4 for sparc, 3 for m68k
num_of_fields = split(asm_code, fields,
","
)
newlineno = fields[
3] + 0 # the line number we are looking for is field 3
num_of_fields = split(asm_code, fields,
line_delimiter
)
newlineno = fields[
line_field] + line_offset;
if (newlineno > oldlineno) {
while ( newlineno > c_lineno ) {
getline c_code < c_filename
while ( newlineno > c_lineno && getline c_code < c_filename > 0) {
c_lineno++
printf("%4d %s\n", c_lineno, c_code)
}
...
...
@@ -112,6 +161,25 @@ BEGIN {
ignore_stabd = 1
}
}
else if ( sys == "elf" && asm_code ~ "section.*\.debug" ) {
while ( asm_code !~ "^[ \t]*previous" &&
asm_code !~ "\.popsection" &&
getline asm_code < asm_filename > 0 );
if ( ! (getline asm_code < asm_filename > 0)) break;
}
else if ( sys == "coff" && asm_code ~ "^[ \t]*sdef" ) {
if ( asm_code ~ "\.bf" ) {
while ( asm_code !~ "^[ \t]*line" &&
getline asm_code < asm_filename > 0 ) {
num_of_fields = split(asm_code, fields, "\t")
line_offset = fields[line_field] - 1;
}
}
while ( asm_code !~ "^[ \t]*endef" &&
getline asm_code < asm_filename > 0 ) {
}
if ( ! (getline asm_code < asm_filename > 0)) break;
}
printf("\t\t\t%s\n", asm_code)
}
...
...
@@ -120,7 +188,7 @@ BEGIN {
}
function usage() {
printf("usage: %s filename compiler-options\n",
argv[0]
) > "/dev/stderr"
printf("usage: %s filename compiler-options\n",
whoami
) > "/dev/stderr"
}
function error(s) {
...
...
@@ -139,7 +207,7 @@ function parse_cmdline( i) {
if ( match(c_filename, ".C") || match(c_filename, ".cc") ) {
cmdline = "g++"
}
else if (match(c_filename, ".c")) {
else if (match(c_filename, ".c")
|| match(c_filename, ".i")
) {
cmdline = "gcc"
}
else {
...
...
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