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
5b7f1820
Commit
5b7f1820
authored
Mar 11, 1992
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r433
parent
d1b765a5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
6 deletions
+54
-6
gcc/sdbout.c
+54
-6
No files found.
gcc/sdbout.c
View file @
5b7f1820
/* Output sdb-format symbol table information from GNU compiler.
Copyright (C) 1988
-1990
Free Software Foundation, Inc.
Copyright (C) 1988
, 1992
Free Software Foundation, Inc.
This file is part of GNU CC.
...
...
@@ -51,7 +51,7 @@ AT&T C compiler. From the example below I would conclude the following:
#include "insn-config.h"
#include "reload.h"
/* Mips systems use the SDB functions to dump out
it's
symbols, but
/* Mips systems use the SDB functions to dump out symbols, but
do not supply usable syms.h include files. */
#if defined(USG) && !defined(MIPS)
#include <syms.h>
...
...
@@ -405,8 +405,9 @@ sdbout_record_type_name (type)
{
t
=
TYPE_NAME
(
type
);
}
#if 0 /* Don't use typedef names. */
else if (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL)
#if 1
/* As a temprary hack, use typedef names for C++ only. */
else
if
(
TREE_CODE
(
TYPE_NAME
(
type
))
==
TYPE_DECL
&&
TYPE_LANG_SPECIFIC
(
type
))
{
t
=
DECL_NAME
(
TYPE_NAME
(
type
));
}
...
...
@@ -575,7 +576,8 @@ sdbout_syms (syms)
{
while
(
syms
)
{
sdbout_symbol
(
syms
,
1
);
if
(
TREE_CODE
(
syms
)
!=
LABEL_DECL
)
sdbout_symbol
(
syms
,
1
);
syms
=
TREE_CHAIN
(
syms
);
}
}
...
...
@@ -724,7 +726,8 @@ sdbout_symbol (decl, local)
else
if
(
GET_CODE
(
value
)
==
MEM
&&
(
GET_CODE
(
XEXP
(
value
,
0
))
==
MEM
||
(
GET_CODE
(
XEXP
(
value
,
0
))
==
REG
&&
REGNO
(
XEXP
(
value
,
0
))
!=
FRAME_POINTER_REGNUM
)))
&&
REGNO
(
XEXP
(
value
,
0
))
!=
FRAME_POINTER_REGNUM
&&
REGNO
(
XEXP
(
value
,
0
))
!=
STACK_POINTER_REGNUM
)))
/* If the value is indirect by memory or by a register
that isn't the frame pointer
then it means the object is variable-sized and address through
...
...
@@ -761,6 +764,23 @@ sdbout_symbol (decl, local)
PUT_SDB_INT_VAL
(
DEBUGGER_AUTO_OFFSET
(
XEXP
(
value
,
0
)));
PUT_SDB_SCL
(
C_AUTO
);
}
else
if
(
GET_CODE
(
value
)
==
MEM
&&
GET_CODE
(
XEXP
(
value
,
0
))
==
CONST
)
{
/* Handle an obscure case which can arise when optimizing and
when there are few available registers. (This is *always*
the case for i386/i486 targets). The DECL_RTL looks like
(MEM (CONST ...)) even though this variable is a local `auto'
or a local `register' variable. In effect, what has happened
is that the reload pass has seen that all assignments and
references for one such a local variable can be replaced by
equivalent assignments and references to some static storage
variable, thereby avoiding the need for a register. In such
cases we're forced to lie to debuggers and tell them that
this variable was itself `static'. */
PUT_SDB_DEF
(
name
);
PUT_SDB_VAL
(
XEXP
(
XEXP
(
value
,
0
),
0
));
PUT_SDB_SCL
(
C_STAT
);
}
else
{
/* It is something we don't know how to represent for SDB. */
...
...
@@ -948,6 +968,7 @@ sdbout_one_type (type)
int
size
=
int_size_in_bytes
(
type
);
int
member_scl
;
tree
tem
;
int
i
,
n_baseclasses
=
0
;
/* Record the type tag, but not in its permanent place just yet. */
sdbout_record_type_name
(
type
);
...
...
@@ -978,6 +999,33 @@ sdbout_one_type (type)
PUT_SDB_SIZE
(
size
);
PUT_SDB_ENDEF
;
/* Print out the base class information with fields
named after the types they hold. */
if
(
TYPE_BINFO
(
type
)
&&
TYPE_BINFO_BASETYPES
(
type
))
n_baseclasses
=
TREE_VEC_LENGTH
(
TYPE_BINFO_BASETYPES
(
type
));
for
(
i
=
0
;
i
<
n_baseclasses
;
i
++
)
{
tree
child
=
TREE_VEC_ELT
(
BINFO_BASETYPES
(
TYPE_BINFO
(
type
)),
i
);
tree
child_type
=
BINFO_TYPE
(
child
);
tree
child_type_name
;
if
(
TYPE_NAME
(
child_type
)
==
0
)
continue
;
if
(
TREE_CODE
(
TYPE_NAME
(
child_type
))
==
IDENTIFIER_NODE
)
child_type_name
=
TYPE_NAME
(
child_type
);
else
if
(
TREE_CODE
(
TYPE_NAME
(
child_type
))
==
TYPE_DECL
)
child_type_name
=
DECL_NAME
(
TYPE_NAME
(
child_type
));
else
continue
;
CONTIN
;
PUT_SDB_DEF
(
IDENTIFIER_POINTER
(
child_type_name
));
PUT_SDB_INT_VAL
(
TREE_INT_CST_LOW
(
BINFO_OFFSET
(
child
)));
PUT_SDB_SCL
(
member_scl
);
sdbout_type
(
BINFO_TYPE
(
child
));
PUT_SDB_ENDEF
;
}
/* output the individual fields */
if
(
TREE_CODE
(
type
)
==
ENUMERAL_TYPE
)
...
...
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