Subversion Repositories tendra.SVN

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 7
Line -... Line 1...
-
 
1
/*
-
 
2
 * Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>.
-
 
3
 * All rights reserved.
-
 
4
 *
-
 
5
 * Redistribution and use in source and binary forms, with or without
-
 
6
 * modification, are permitted provided that the following conditions are met:
-
 
7
 *
-
 
8
 * 1. Redistributions of source code must retain the above copyright notice,
-
 
9
 *    this list of conditions and the following disclaimer.
-
 
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
-
 
11
 *    this list of conditions and the following disclaimer in the documentation
-
 
12
 *    and/or other materials provided with the distribution.
-
 
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
-
 
14
 *    may be used to endorse or promote products derived from this software
-
 
15
 *    without specific, prior written permission.
-
 
16
 *
-
 
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
-
 
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-
 
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-
 
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-
 
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-
 
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-
 
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-
 
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-
 
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-
 
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-
 
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
28
 *
-
 
29
 * $Id$
-
 
30
 */
1
/*
31
/*
2
    		 Crown Copyright (c) 1997
32
    		 Crown Copyright (c) 1997
3
    
33
 
4
    This TenDRA(r) Computer Program is subject to Copyright
34
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
35
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
36
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
37
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
38
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
39
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
40
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
41
    shall be deemed to be acceptance of the following conditions:-
12
    
42
 
13
        (1) Its Recipients shall ensure that this Notice is
43
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
44
        reproduced upon any copies or amended versions of it;
15
    
45
 
16
        (2) Any amended version of it shall be clearly marked to
46
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
47
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
48
        for the relevant amendment or amendments;
19
    
49
 
20
        (3) Its onward transfer from a recipient to another
50
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
51
        party shall be deemed to be that party's acceptance of
22
        these conditions;
52
        these conditions;
23
    
53
 
24
        (4) DERA gives no warranty or assurance as to its
54
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
55
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
56
        no liability whatsoever in relation to any use to which
27
        it may be put.
57
        it may be put.
28
*/
58
*/
Line 83... Line 113...
83
#include "out.h"
113
#include "out.h"
84
 
114
 
85
 
115
 
86
#ifdef NEEDS_DEBUG_ALIGN
116
#ifdef NEEDS_DEBUG_ALIGN
87
 
117
 
88
#define DWARF_MOD_VERSION	( DWARF_VERSION * 101 )
118
#define DWARF_MOD_VERSION	(DWARF_VERSION * 101)
89
#define DW_CIE_MOD_VERSION	( DW_CIE_VERSION * 101 )
119
#define DW_CIE_MOD_VERSION	(DW_CIE_VERSION * 101)
90
 
120
 
91
#else
121
#else
92
 
122
 
93
#define DWARF_MOD_VERSION	DWARF_VERSION
123
#define DWARF_MOD_VERSION	DWARF_VERSION
94
#define DW_CIE_MOD_VERSION	DW_CIE_VERSION
124
#define DW_CIE_MOD_VERSION	DW_CIE_VERSION
Line 97... Line 127...
97
 
127
 
98
 
128
 
99
extern long instr_count;
129
extern long instr_count;
100
extern long fde_count;
130
extern long fde_count;
101
 
131
 
102
#define count_ins(n)		if (instr_count >= 0) instr_count += n; \
132
#define count_ins(n)		if (instr_count >= 0)instr_count += n; \
103
				if (fde_count >= 0) fde_count += n
133
				if (fde_count >= 0)fde_count += n
104
#define lost_count_ins()	instr_count = fde_count = -1
134
#define lost_count_ins()	instr_count = fde_count = -1
105
#define any_output		instr_count
135
#define any_output		instr_count
106
#define reset_any_output	instr_count = 0
136
#define reset_any_output	instr_count = 0
107
 
137
 
108
 
138
 
109
#define d_outnl() outnl()
139
#define d_outnl()outnl()
110
 
140
 
111
extern void out8 PROTO_S ((void));
141
extern void out8(void);
112
extern void out16 PROTO_S ((void));
142
extern void out16(void);
113
extern void out32 PROTO_S ((void));
143
extern void out32(void);
114
extern void dot_align PROTO_S ((long n));
144
extern void dot_align(long n);
115
 
145
 
116
extern void out_string PROTO_S ((char * s));
146
extern void out_string(char * s);
117
extern void start_string PROTO_S ((char * s));
147
extern void start_string(char * s);
118
extern void end_string PROTO_S ((void));
148
extern void end_string(void);
119
extern void enter_section PROTO_S ((char * s));
149
extern void enter_section(char * s);
120
extern void exit_section PROTO_S ((void));
150
extern void exit_section(void);
121
extern void outnl_comment PROTO_S ((char * s));
151
extern void outnl_comment(char * s);
122
extern void outnl_comment_i PROTO_S ((char * s, long i));
152
extern void outnl_comment_i(char * s, long i);
123
extern void out_dwf_label PROTO_S ((long l, int set));
153
extern void out_dwf_label(long l, int set);
124
extern void out_code_label PROTO_S ((long l));
154
extern void out_code_label(long l);
125
extern void out_dwf_dist_to_label PROTO_S ((long l));
155
extern void out_dwf_dist_to_label(long l);
126
extern void out_dwf_labdiff PROTO_S ((long lo, long hi));
156
extern void out_dwf_labdiff(long lo, long hi);
127
extern void out_ext_label PROTO_S ((char * s));
157
extern void out_ext_label(char * s);
128
extern void out_producer PROTO_S ((char * s));
158
extern void out_producer(char * s);
129
 
159
 
130
extern int dw_is_const PROTO_S ((exp e));
160
extern int dw_is_const(exp e);
131
extern exp dw_has_location PROTO_S ((exp e));
161
extern exp dw_has_location(exp e);
132
extern void dw2_locate_exp PROTO_S ((exp e, int locate_const, int cx));
162
extern void dw2_locate_exp(exp e, int locate_const, int cx);
133
extern void dw2_prepare_locate PROTO_S ((exp id));
163
extern void dw2_prepare_locate(exp id);
134
extern void dw_at_procdetails PROTO_S ((void));
164
extern void dw_at_procdetails(void);
135
extern void dw2_locate_result PROTO_S ((shape sha));
165
extern void dw2_locate_result(shape sha);
136
extern void dw2_locate_val PROTO_S ((dg_where v));
166
extern void dw2_locate_val(dg_where v);
137
extern void dw2_offset_exp PROTO_S ((exp e));
167
extern void dw2_offset_exp(exp e);
138
extern void dw2_cie PROTO_S ((void));
168
extern void dw2_cie(void);
139
 
169
 
140
extern void dw2_data_aranges PROTO_S ((void));
170
extern void dw2_data_aranges(void);
141
extern void trace_dw_branch_exits PROTO_S ((exp e));
171
extern void trace_dw_branch_exits(exp e);
142
 
172
 
143
extern int dw_loc_equivalence PROTO_S ((exp a, exp b));
173
extern int dw_loc_equivalence(exp a, exp b);
144
extern void dw_allocated PROTO_S ((dg_name nm, exp id));
174
extern void dw_allocated(dg_name nm, exp id);
145
extern void dw_deallocated PROTO_S ((dg_name nm));
175
extern void dw_deallocated(dg_name nm);
146
extern void dw_all_deallocated PROTO_S ((void));
176
extern void dw_all_deallocated(void);
147
 
177
 
148
 
178
 
149
extern long dwarf_lab_num;
179
extern long dwarf_lab_num;
150
 
180
 
151
#define min_instr_size 4
181
#define min_instr_size 4
152
#define framecode_factor 4
182
#define framecode_factor 4
153
#define framedata_factor 4
183
#define framedata_factor 4
154
#define next_dwarf_label() (++dwarf_lab_num)
184
#define next_dwarf_label()(++dwarf_lab_num)
155
 
185
 
156
#define dw_line_base -2	/* small negative for short loop end-conditions */
186
#define dw_line_base -2	/* small negative for short loop end-conditions */
157
#define dw_line_range 16
187
#define dw_line_range 16
158
 
188
 
159
 
189
 
160
extern void note_data PROTO_S ((int ll, bool ro));
190
extern void note_data(int ll, bool ro);
161
 
191
 
162
 
192
 
163
#endif
193
#endif