Subversion Repositories Kolibri OS

Rev

Rev 5191 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5191 Rev 6324
1
/* IBM RS/6000 "XCOFF" file definitions for BFD.
1
/* IBM RS/6000 "XCOFF" file definitions for BFD.
2
   Copyright (C) 1990, 1991, 2001, 2010 Free Software Foundation, Inc.
2
   Copyright (C) 1990-2015 Free Software Foundation, Inc.
3
   Written by Mimi Phuong-Thao Vo of IBM
3
   Written by Mimi Phuong-Thao Vo of IBM
4
   and John Gilmore of Cygnus Support.
4
   and John Gilmore of Cygnus Support.
5
 
5
 
6
   This program is free software; you can redistribute it and/or modify
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 3 of the License, or
8
   the Free Software Foundation; either version 3 of the License, or
9
   (at your option) any later version.
9
   (at your option) any later version.
10
 
10
 
11
   This program is distributed in the hope that it will be useful,
11
   This program is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
14
   GNU General Public License for more details.
15
 
15
 
16
   You should have received a copy of the GNU General Public License
16
   You should have received a copy of the GNU General Public License
17
   along with this program; if not, write to the Free Software
17
   along with this program; if not, write to the Free Software
18
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19
   MA 02110-1301, USA.  */
19
   MA 02110-1301, USA.  */
20
 
20
 
21
/********************** FILE HEADER **********************/
21
/********************** FILE HEADER **********************/
22
 
22
 
23
struct external_filehdr {
23
struct external_filehdr {
24
	char f_magic[2];	/* magic number			*/
24
	char f_magic[2];	/* magic number			*/
25
	char f_nscns[2];	/* number of sections		*/
25
	char f_nscns[2];	/* number of sections		*/
26
	char f_timdat[4];	/* time & date stamp		*/
26
	char f_timdat[4];	/* time & date stamp		*/
27
	char f_symptr[4];	/* file pointer to symtab	*/
27
	char f_symptr[4];	/* file pointer to symtab	*/
28
	char f_nsyms[4];	/* number of symtab entries	*/
28
	char f_nsyms[4];	/* number of symtab entries	*/
29
	char f_opthdr[2];	/* sizeof(optional hdr)		*/
29
	char f_opthdr[2];	/* sizeof(optional hdr)		*/
30
	char f_flags[2];	/* flags			*/
30
	char f_flags[2];	/* flags			*/
31
};
31
};
32
 
32
 
33
        /* IBM RS/6000 */
33
        /* IBM RS/6000 */
34
#define U802WRMAGIC     0730    /* writeable text segments **chh**      */
34
#define U802WRMAGIC     0730    /* writeable text segments **chh**      */
35
#define U802ROMAGIC     0735    /* readonly sharable text segments      */
35
#define U802ROMAGIC     0735    /* readonly sharable text segments      */
36
#define U802TOCMAGIC    0737    /* readonly text segments and TOC       */
36
#define U802TOCMAGIC    0737    /* readonly text segments and TOC       */
37
 
37
 
38
#define BADMAG(x)	\
38
#define BADMAG(x)	\
39
	((x).f_magic != U802ROMAGIC && (x).f_magic != U802WRMAGIC && \
39
	((x).f_magic != U802ROMAGIC && (x).f_magic != U802WRMAGIC && \
40
	 (x).f_magic != U802TOCMAGIC)
40
	 (x).f_magic != U802TOCMAGIC)
41
 
41
 
42
#define	FILHDR	struct external_filehdr
42
#define	FILHDR	struct external_filehdr
43
#define	FILHSZ	20
43
#define	FILHSZ	20
44
 
44
 
45
 
45
 
46
/********************** AOUT "OPTIONAL HEADER" **********************/
46
/********************** AOUT "OPTIONAL HEADER" **********************/
47
 
47
 
48
 
48
 
49
typedef struct
49
typedef struct
50
{
50
{
51
  unsigned char	magic[2];	/* type of file			*/
51
  unsigned char	magic[2];	/* type of file			*/
52
  unsigned char	vstamp[2];	/* version stamp		*/
52
  unsigned char	vstamp[2];	/* version stamp		*/
53
  unsigned char	tsize[4];	/* text size in bytes, padded to FW bdry */
53
  unsigned char	tsize[4];	/* text size in bytes, padded to FW bdry */
54
  unsigned char	dsize[4];	/* initialized data "  "	*/
54
  unsigned char	dsize[4];	/* initialized data "  "	*/
55
  unsigned char	bsize[4];	/* uninitialized data "   "	*/
55
  unsigned char	bsize[4];	/* uninitialized data "   "	*/
56
  unsigned char	entry[4];	/* entry pt.			*/
56
  unsigned char	entry[4];	/* entry pt.			*/
57
  unsigned char	text_start[4];	/* base of text used for this file */
57
  unsigned char	text_start[4];	/* base of text used for this file */
58
  unsigned char	data_start[4];	/* base of data used for this file */
58
  unsigned char	data_start[4];	/* base of data used for this file */
59
  unsigned char	o_toc[4];	/* address of TOC */
59
  unsigned char	o_toc[4];	/* address of TOC */
60
  unsigned char	o_snentry[2];	/* section number of entry point */
60
  unsigned char	o_snentry[2];	/* section number of entry point */
61
  unsigned char	o_sntext[2];	/* section number of .text section */
61
  unsigned char	o_sntext[2];	/* section number of .text section */
62
  unsigned char	o_sndata[2];	/* section number of .data section */
62
  unsigned char	o_sndata[2];	/* section number of .data section */
63
  unsigned char	o_sntoc[2];	/* section number of TOC */
63
  unsigned char	o_sntoc[2];	/* section number of TOC */
64
  unsigned char	o_snloader[2];	/* section number of .loader section */
64
  unsigned char	o_snloader[2];	/* section number of .loader section */
65
  unsigned char	o_snbss[2];	/* section number of .bss section */
65
  unsigned char	o_snbss[2];	/* section number of .bss section */
66
  unsigned char	o_algntext[2];	/* .text alignment */
66
  unsigned char	o_algntext[2];	/* .text alignment */
67
  unsigned char	o_algndata[2];	/* .data alignment */
67
  unsigned char	o_algndata[2];	/* .data alignment */
68
  unsigned char	o_modtype[2];	/* module type (??) */
68
  unsigned char	o_modtype[2];	/* module type (??) */
69
  unsigned char o_cputype[2];	/* cpu type */
69
  unsigned char o_cputype[2];	/* cpu type */
70
  unsigned char	o_maxstack[4];	/* max stack size (??) */
70
  unsigned char	o_maxstack[4];	/* max stack size (??) */
71
  unsigned char o_maxdata[4];	/* max data size (??) */
71
  unsigned char o_maxdata[4];	/* max data size (??) */
72
  unsigned char	o_resv2[12];	/* reserved */
72
  unsigned char	o_resv2[12];	/* reserved */
73
}
73
}
74
AOUTHDR;
74
AOUTHDR;
75
 
75
 
76
#define AOUTSZ 72
76
#define AOUTSZ 72
77
#define SMALL_AOUTSZ (28)
77
#define SMALL_AOUTSZ (28)
78
#define AOUTHDRSZ 72
78
#define AOUTHDRSZ 72
79
 
79
 
80
/********************** SECTION HEADER **********************/
80
/********************** SECTION HEADER **********************/
81
 
81
 
82
 
82
 
83
struct external_scnhdr {
83
struct external_scnhdr {
84
	char		s_name[8];	/* section name			*/
84
	char		s_name[8];	/* section name			*/
85
	char		s_paddr[4];	/* physical address, aliased s_nlib */
85
	char		s_paddr[4];	/* physical address, aliased s_nlib */
86
	char		s_vaddr[4];	/* virtual address		*/
86
	char		s_vaddr[4];	/* virtual address		*/
87
	char		s_size[4];	/* section size			*/
87
	char		s_size[4];	/* section size			*/
88
	char		s_scnptr[4];	/* file ptr to raw data for section */
88
	char		s_scnptr[4];	/* file ptr to raw data for section */
89
	char		s_relptr[4];	/* file ptr to relocation	*/
89
	char		s_relptr[4];	/* file ptr to relocation	*/
90
	char		s_lnnoptr[4];	/* file ptr to line numbers	*/
90
	char		s_lnnoptr[4];	/* file ptr to line numbers	*/
91
	char		s_nreloc[2];	/* number of relocation entries	*/
91
	char		s_nreloc[2];	/* number of relocation entries	*/
92
	char		s_nlnno[2];	/* number of line number entries*/
92
	char		s_nlnno[2];	/* number of line number entries*/
93
	char		s_flags[4];	/* flags			*/
93
	char		s_flags[4];	/* flags			*/
94
};
94
};
95
 
95
 
96
#define	SCNHDR	struct external_scnhdr
96
#define	SCNHDR	struct external_scnhdr
97
#define	SCNHSZ	40
97
#define	SCNHSZ	40
98
 
98
 
99
/********************** LINE NUMBERS **********************/
99
/********************** LINE NUMBERS **********************/
100
 
100
 
101
/* 1 line number entry for every "breakpointable" source line in a section.
101
/* 1 line number entry for every "breakpointable" source line in a section.
102
 * Line numbers are grouped on a per function basis; first entry in a function
102
 * Line numbers are grouped on a per function basis; first entry in a function
103
 * grouping will have l_lnno = 0 and in place of physical address will be the
103
 * grouping will have l_lnno = 0 and in place of physical address will be the
104
 * symbol table index of the function name.
104
 * symbol table index of the function name.
105
 */
105
 */
106
struct external_lineno {
106
struct external_lineno {
107
	union {
107
	union {
108
		char l_symndx[4];	/* function name symbol index, iff l_lnno == 0*/
108
		char l_symndx[4];	/* function name symbol index, iff l_lnno == 0*/
109
		char l_paddr[4];	/* (physical) address of line number	*/
109
		char l_paddr[4];	/* (physical) address of line number	*/
110
	} l_addr;
110
	} l_addr;
111
	char l_lnno[2];	/* line number		*/
111
	char l_lnno[2];	/* line number		*/
112
};
112
};
113
 
113
 
114
 
114
 
115
#define	LINENO	struct external_lineno
115
#define	LINENO	struct external_lineno
116
#define	LINESZ	6
116
#define	LINESZ	6
117
 
117
 
118
 
118
 
119
/********************** SYMBOLS **********************/
119
/********************** SYMBOLS **********************/
120
 
120
 
121
#define E_SYMNMLEN	8	/* # characters in a symbol name	*/
121
#define E_SYMNMLEN	8	/* # characters in a symbol name	*/
122
#define E_FILNMLEN	14	/* # characters in a file name		*/
122
#define E_FILNMLEN	14	/* # characters in a file name		*/
123
#define E_DIMNUM	4	/* # array dimensions in auxiliary entry */
123
#define E_DIMNUM	4	/* # array dimensions in auxiliary entry */
124
 
124
 
125
struct external_syment 
125
struct external_syment 
126
{
126
{
127
  union {
127
  union {
128
    char e_name[E_SYMNMLEN];
128
    char e_name[E_SYMNMLEN];
129
    struct {
129
    struct {
130
      char e_zeroes[4];
130
      char e_zeroes[4];
131
      char e_offset[4];
131
      char e_offset[4];
132
    } e;
132
    } e;
133
  } e;
133
  } e;
134
  char e_value[4];
134
  char e_value[4];
135
  char e_scnum[2];
135
  char e_scnum[2];
136
  char e_type[2];
136
  char e_type[2];
137
  char e_sclass[1];
137
  char e_sclass[1];
138
  char e_numaux[1];
138
  char e_numaux[1];
139
};
139
};
140
 
140
 
141
 
141
 
142
 
142
 
143
#define N_BTMASK	(017)
143
#define N_BTMASK	(017)
144
#define N_TMASK		(060)
144
#define N_TMASK		(060)
145
#define N_BTSHFT	(4)
145
#define N_BTSHFT	(4)
146
#define N_TSHIFT	(2)
146
#define N_TSHIFT	(2)
147
  
147
  
148
 
148
 
149
union external_auxent {
149
union external_auxent {
150
	struct {
150
	struct {
151
		char x_tagndx[4];	/* str, un, or enum tag indx */
151
		char x_tagndx[4];	/* str, un, or enum tag indx */
152
		union {
152
		union {
153
			struct {
153
			struct {
154
			    char  x_lnno[2]; /* declaration line number */
154
			    char  x_lnno[2]; /* declaration line number */
155
			    char  x_size[2]; /* str/union/array size */
155
			    char  x_size[2]; /* str/union/array size */
156
			} x_lnsz;
156
			} x_lnsz;
157
			char x_fsize[4];	/* size of function */
157
			char x_fsize[4];	/* size of function */
158
		} x_misc;
158
		} x_misc;
159
		union {
159
		union {
160
			struct {		/* if ISFCN, tag, or .bb */
160
			struct {		/* if ISFCN, tag, or .bb */
161
			    char x_lnnoptr[4];	/* ptr to fcn line # */
161
			    char x_lnnoptr[4];	/* ptr to fcn line # */
162
			    char x_endndx[4];	/* entry ndx past block end */
162
			    char x_endndx[4];	/* entry ndx past block end */
163
			} x_fcn;
163
			} x_fcn;
164
			struct {		/* if ISARY, up to 4 dimen. */
164
			struct {		/* if ISARY, up to 4 dimen. */
165
			    char x_dimen[E_DIMNUM][2];
165
			    char x_dimen[E_DIMNUM][2];
166
			} x_ary;
166
			} x_ary;
167
		} x_fcnary;
167
		} x_fcnary;
168
		char x_tvndx[2];		/* tv index */
168
		char x_tvndx[2];		/* tv index */
169
	} x_sym;
169
	} x_sym;
170
 
170
 
171
        struct {
171
        struct {
172
                union {
172
                union {
173
                        char x_fname[E_FILNMLEN];
173
                        char x_fname[E_FILNMLEN];
174
                        struct {
174
                        struct {
175
                                char x_zeroes[4];
175
                                char x_zeroes[4];
176
                                char x_offset[4];
176
                                char x_offset[4];
177
                        } x_n;
177
                        } x_n;
178
                } x_n;
178
                } x_n;
179
                char x_ftype[1];
179
                char x_ftype[1];
180
        } x_file;
180
        } x_file;
181
 
181
 
182
	struct {
182
	struct {
183
		char x_scnlen[4];			/* section length */
183
		char x_scnlen[4];			/* section length */
184
		char x_nreloc[2];	/* # relocation entries */
184
		char x_nreloc[2];	/* # relocation entries */
185
		char x_nlinno[2];	/* # line numbers */
185
		char x_nlinno[2];	/* # line numbers */
186
	} x_scn;
186
	} x_scn;
187
 
187
 
188
        struct {
188
        struct {
189
		char x_tvfill[4];	/* tv fill value */
189
		char x_tvfill[4];	/* tv fill value */
190
		char x_tvlen[2];	/* length of .tv */
190
		char x_tvlen[2];	/* length of .tv */
191
		char x_tvran[2][2];	/* tv range */
191
		char x_tvran[2][2];	/* tv range */
192
	} x_tv;		/* info about .tv section (in auxent of symbol .tv)) */
192
	} x_tv;		/* info about .tv section (in auxent of symbol .tv)) */
193
 
193
 
194
	struct {
194
	struct {
195
		unsigned char x_scnlen[4];
195
		unsigned char x_scnlen[4];
196
		unsigned char x_parmhash[4];
196
		unsigned char x_parmhash[4];
197
		unsigned char x_snhash[2];
197
		unsigned char x_snhash[2];
198
		unsigned char x_smtyp[1];
198
		unsigned char x_smtyp[1];
199
		unsigned char x_smclas[1];
199
		unsigned char x_smclas[1];
200
		unsigned char x_stab[4];
200
		unsigned char x_stab[4];
201
		unsigned char x_snstab[2];
201
		unsigned char x_snstab[2];
202
	} x_csect;
202
	} x_csect;
203
 
203
 
204
};
204
};
205
 
205
 
206
#define	SYMENT	struct external_syment
206
#define	SYMENT	struct external_syment
207
#define	SYMESZ	18
207
#define	SYMESZ	18
208
#define	AUXENT	union external_auxent
208
#define	AUXENT	union external_auxent
209
#define	AUXESZ	18
209
#define	AUXESZ	18
210
#define DBXMASK 0x80		/* for dbx storage mask */
210
#define DBXMASK 0x80		/* for dbx storage mask */
211
#define SYMNAME_IN_DEBUG(symptr) ((symptr)->n_sclass & DBXMASK)
211
#define SYMNAME_IN_DEBUG(symptr) ((symptr)->n_sclass & DBXMASK)
212
 
212
 
213
 
213
 
214
 
214
 
215
/********************** RELOCATION DIRECTIVES **********************/
215
/********************** RELOCATION DIRECTIVES **********************/
216
 
216
 
217
 
217
 
218
struct external_reloc {
218
struct external_reloc {
219
  char r_vaddr[4];
219
  char r_vaddr[4];
220
  char r_symndx[4];
220
  char r_symndx[4];
221
  char r_size[1];
221
  char r_size[1];
222
  char r_type[1];
222
  char r_type[1];
223
};
223
};
224
 
224
 
225
 
225
 
226
#define RELOC struct external_reloc
226
#define RELOC struct external_reloc
227
#define RELSZ 10
227
#define RELSZ 10
228
 
228
 
229
#define DEFAULT_DATA_SECTION_ALIGNMENT 4
229
#define DEFAULT_DATA_SECTION_ALIGNMENT 4
230
#define DEFAULT_BSS_SECTION_ALIGNMENT 4
230
#define DEFAULT_BSS_SECTION_ALIGNMENT 4
231
#define DEFAULT_TEXT_SECTION_ALIGNMENT 4
231
#define DEFAULT_TEXT_SECTION_ALIGNMENT 4
232
/* For new sections we havn't heard of before */
232
/* For new sections we havn't heard of before */
233
#define DEFAULT_SECTION_ALIGNMENT 4
233
#define DEFAULT_SECTION_ALIGNMENT 4
234
 
234
 
235
/* The ldhdr structure.  This appears at the start of the .loader
235
/* The ldhdr structure.  This appears at the start of the .loader
236
   section.  */
236
   section.  */
237
 
237
 
238
struct external_ldhdr
238
struct external_ldhdr
239
{
239
{
240
  bfd_byte l_version[4];
240
  bfd_byte l_version[4];
241
  bfd_byte l_nsyms[4];
241
  bfd_byte l_nsyms[4];
242
  bfd_byte l_nreloc[4];
242
  bfd_byte l_nreloc[4];
243
  bfd_byte l_istlen[4];
243
  bfd_byte l_istlen[4];
244
  bfd_byte l_nimpid[4];
244
  bfd_byte l_nimpid[4];
245
  bfd_byte l_impoff[4];
245
  bfd_byte l_impoff[4];
246
  bfd_byte l_stlen[4];
246
  bfd_byte l_stlen[4];
247
  bfd_byte l_stoff[4];
247
  bfd_byte l_stoff[4];
248
};
248
};
249
 
249
 
250
#define LDHDRSZ (8 * 4)
250
#define LDHDRSZ (8 * 4)
251
 
251
 
252
struct external_ldsym
252
struct external_ldsym
253
{
253
{
254
  union
254
  union
255
    {
255
    {
256
      bfd_byte _l_name[E_SYMNMLEN];
256
      bfd_byte _l_name[E_SYMNMLEN];
257
      struct
257
      struct
258
	{
258
	{
259
	  bfd_byte _l_zeroes[4];
259
	  bfd_byte _l_zeroes[4];
260
	  bfd_byte _l_offset[4];
260
	  bfd_byte _l_offset[4];
261
	} _l_l;
261
	} _l_l;
262
    } _l;
262
    } _l;
263
  bfd_byte l_value[4];
263
  bfd_byte l_value[4];
264
  bfd_byte l_scnum[2];
264
  bfd_byte l_scnum[2];
265
  bfd_byte l_smtype[1];
265
  bfd_byte l_smtype[1];
266
  bfd_byte l_smclas[1];
266
  bfd_byte l_smclas[1];
267
  bfd_byte l_ifile[4];
267
  bfd_byte l_ifile[4];
268
  bfd_byte l_parm[4];
268
  bfd_byte l_parm[4];
269
};
269
};
270
 
270
 
271
#define LDSYMSZ (8 + 3 * 4 + 2 + 2)
271
#define LDSYMSZ (8 + 3 * 4 + 2 + 2)
272
 
272
 
273
struct external_ldrel
273
struct external_ldrel
274
{
274
{
275
  bfd_byte l_vaddr[4];
275
  bfd_byte l_vaddr[4];
276
  bfd_byte l_symndx[4];
276
  bfd_byte l_symndx[4];
277
  bfd_byte l_rtype[2];
277
  bfd_byte l_rtype[2];
278
  bfd_byte l_rsecnm[2];
278
  bfd_byte l_rsecnm[2];
279
};
279
};
280
 
280
 
281
#define LDRELSZ (2 * 4 + 2 * 2)
281
#define LDRELSZ (2 * 4 + 2 * 2)
282
 
282
 
283
struct external_exceptab
283
struct external_exceptab
284
{
284
{
285
  union {
285
  union {
286
    bfd_byte e_symndx[4];
286
    bfd_byte e_symndx[4];
287
    bfd_byte e_paddr[4];
287
    bfd_byte e_paddr[4];
288
  } e_addr;
288
  } e_addr;
289
  bfd_byte e_lang[1];
289
  bfd_byte e_lang[1];
290
  bfd_byte e_reason[1];
290
  bfd_byte e_reason[1];
291
};
291
};
292
 
292
 
293
#define EXCEPTSZ (4 + 2)
293
#define EXCEPTSZ (4 + 2)
294
 
294
 
295
/******************** Core files *************************/
295
/******************** Core files *************************/
296
 
296
 
297
struct external_core_dumpx
297
struct external_core_dumpx
298
{
298
{
299
  unsigned char c_signo[1];
299
  unsigned char c_signo[1];
300
  unsigned char c_flag[1];
300
  unsigned char c_flag[1];
301
  unsigned char c_entries[2];
301
  unsigned char c_entries[2];
302
 
302
 
303
  unsigned char c_version[4];
303
  unsigned char c_version[4];
304
 
304
 
305
  unsigned char c_fdsinfox[8];
305
  unsigned char c_fdsinfox[8];
306
  unsigned char c_loader[8];
306
  unsigned char c_loader[8];
307
  unsigned char c_lsize[8];
307
  unsigned char c_lsize[8];
308
 
308
 
309
  unsigned char c_n_thr[4];
309
  unsigned char c_n_thr[4];
310
  unsigned char c_reserved0[4];
310
  unsigned char c_reserved0[4];
311
  unsigned char c_thr[8];
311
  unsigned char c_thr[8];
312
 
312
 
313
  unsigned char c_segs[8];
313
  unsigned char c_segs[8];
314
  unsigned char c_segregion[8];
314
  unsigned char c_segregion[8];
315
 
315
 
316
  unsigned char c_stack[8];
316
  unsigned char c_stack[8];
317
  unsigned char c_stackorg[8];
317
  unsigned char c_stackorg[8];
318
  unsigned char c_size[8];
318
  unsigned char c_size[8];
319
 
319
 
320
  unsigned char c_data[8];
320
  unsigned char c_data[8];
321
  unsigned char c_dataorg[8];
321
  unsigned char c_dataorg[8];
322
  unsigned char c_datasize[8];
322
  unsigned char c_datasize[8];
323
  unsigned char c_sdorg[8];
323
  unsigned char c_sdorg[8];
324
  unsigned char c_sdsize[8];
324
  unsigned char c_sdsize[8];
325
 
325
 
326
  unsigned char c_vmmregions[8];
326
  unsigned char c_vmmregions[8];
327
  unsigned char c_vmm[8];
327
  unsigned char c_vmm[8];
328
 
328
 
329
  unsigned char c_impl[4];
329
  unsigned char c_impl[4];
330
  unsigned char c_pad[4];
330
  unsigned char c_pad[4];
331
  unsigned char c_cprs[8];
331
  unsigned char c_cprs[8];
332
  unsigned char c_reserved[7 * 8];
332
  unsigned char c_reserved[7 * 8];
333
 
333
 
334
  /* Followed by:
334
  /* Followed by:
335
     - context of the faulting thread.
335
     - context of the faulting thread.
336
     - user structure.  */
336
     - user structure.  */
337
};
337
};
338
 
338
 
339
 
339
 
340
/* Core file verion.  */
340
/* Core file verion.  */
341
#define CORE_DUMPX_VERSION 0x0feeddb1
341
#define CORE_DUMPX_VERSION 0x0feeddb1
342
#define CORE_DUMPXX_VERSION 0x0feeddb2
342
#define CORE_DUMPXX_VERSION 0x0feeddb2
343
 
343
 
344
struct external_ld_info32
344
struct external_ld_info32
345
{
345
{
346
  unsigned char ldinfo_next[4];
346
  unsigned char ldinfo_next[4];
347
  unsigned char core_offset[4];
347
  unsigned char core_offset[4];
348
  unsigned char ldinfo_textorg[4];
348
  unsigned char ldinfo_textorg[4];
349
  unsigned char ldinfo_textsize[4];
349
  unsigned char ldinfo_textsize[4];
350
  unsigned char ldinfo_dataorg[4];
350
  unsigned char ldinfo_dataorg[4];
351
  unsigned char ldinfo_datasize[4];
351
  unsigned char ldinfo_datasize[4];
352
  unsigned char ldinfo_filename[2];
352
  unsigned char ldinfo_filename[2];
353
};
353
};