source: trunk/libs/newlib/src/include/coff/m88k.h @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 4.9 KB
Line 
1/* coff information for 88k bcs
2   
3   Copyright 2001, 2010 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9   
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14   
15   You should have received a copy of the GNU General Public License
16   along with this program; if not, write to the Free Software
17   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18   MA 02110-1301, USA.  */
19
20#define DO_NOT_DEFINE_SCNHDR
21#define L_LNNO_SIZE 4
22#define DO_NOT_DEFINE_SYMENT
23#define DO_NOT_DEFINE_AUXENT
24#include "coff/external.h"
25
26#define MC88MAGIC  0540           /* 88k BCS executable */
27#define MC88DMAGIC 0541           /* DG/UX executable   */
28#define MC88OMAGIC 0555           /* Object file        */
29
30#define MC88BADMAG(x) (((x).f_magic != MC88MAGIC) \
31                    && ((x).f_magic != MC88DMAGIC) \
32                    && ((x).f_magic != MC88OMAGIC))
33
34#define PAGEMAGIC3   0414 /* Split i&d, zero mapped */
35#define PAGEMAGICBCS 0413
36
37/********************** SECTION HEADER **********************/
38
39struct external_scnhdr
40{
41  char          s_name[8];      /* section name                 */
42  char          s_paddr[4];     /* physical address, aliased s_nlib */
43  char          s_vaddr[4];     /* virtual address              */
44  char          s_size[4];      /* section size                 */
45  char          s_scnptr[4];    /* file ptr to raw data for section */
46  char          s_relptr[4];    /* file ptr to relocation       */
47  char          s_lnnoptr[4];   /* file ptr to line numbers     */
48  char          s_nreloc[4];    /* number of relocation entries */
49  char          s_nlnno[4];     /* number of line number entries*/
50  char          s_flags[4];     /* flags                        */
51};
52
53#define SCNHDR  struct external_scnhdr
54#define SCNHSZ  44
55
56/* Names of "special" sections.  */
57#define _TEXT   ".text"
58#define _DATA   ".data"
59#define _BSS    ".bss"
60#define _COMMENT ".comment"
61
62
63/********************** SYMBOLS **********************/
64
65#define E_SYMNMLEN      8       /* # characters in a symbol name        */
66#define E_FILNMLEN      14      /* # characters in a file name          */
67#define E_DIMNUM        4       /* # array dimensions in auxiliary entry */
68
69struct external_syment
70{
71  union
72  {
73    char e_name[E_SYMNMLEN];
74
75    struct
76    {
77      char e_zeroes[4];
78      char e_offset[4];
79    } e;
80
81  } e;
82
83  char e_value[4];
84  char e_scnum[2];
85  char e_type[2];
86  char e_sclass[1];
87  char e_numaux[1];
88  char pad2[2];
89};
90
91#define N_BTMASK        017
92#define N_TMASK         060
93#define N_BTSHFT        4
94#define N_TSHIFT        2
95
96/* Note that this isn't the same shape as other coffs */
97union external_auxent
98{
99  struct
100  {
101    char x_tagndx[4];           /* str, un, or enum tag indx */
102    /* 4 */
103   
104    union
105    {
106      char x_fsize[4];          /* size of function */
107
108      struct
109      {
110        char  x_lnno[4];        /* declaration line number */
111        char  x_size[4];        /* str/union/array size */
112      } x_lnsz;
113
114    } x_misc;
115   
116    /* 12 */
117    union
118    {
119      struct                    /* if ISFCN, tag, or .bb */
120      {
121        char x_lnnoptr[4];      /* ptr to fcn line # */
122        char x_endndx[4];               /* entry ndx past block end */
123      } x_fcn;
124
125      struct                    /* if ISARY, up to 4 dimen. */
126      {
127        char x_dimen[E_DIMNUM][2];
128      } x_ary;
129
130    } x_fcnary;
131    /* 20 */
132   
133  } x_sym;
134 
135  union
136  {
137    char x_fname[E_FILNMLEN];
138
139    struct
140    {
141      char x_zeroes[4];
142      char x_offset[4];
143    } x_n;
144
145  } x_file;
146 
147  struct
148  {
149    char x_scnlen[4];           /* section length */
150    char x_nreloc[4];           /* # relocation entries */
151    char x_nlinno[4];           /* # line numbers */
152  } x_scn;
153 
154  struct
155  {
156    char x_tvfill[4];           /* tv fill value */
157    char x_tvlen[2];            /* length of .tv */
158    char x_tvran[2][2];         /* tv range */
159  } x_tv;                       /* info about .tv section (in auxent of symbol .tv)) */
160};
161
162#define GET_LNSZ_SIZE(abfd, ext) \
163  H_GET_32 (abfd, ext->x_sym.x_misc.x_lnsz.x_size)
164#define GET_LNSZ_LNNO(abfd, ext) \
165  H_GET_32 (abfd, ext->x_sym.x_misc.x_lnsz.x_lnno)
166#define PUT_LNSZ_LNNO(abfd, in, ext) \
167  H_PUT_32 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_lnno)
168#define PUT_LNSZ_SIZE(abfd, in, ext) \
169  H_PUT_32 (abfd, in, ext->x_sym.x_misc.x_lnsz.x_size)
170#define GET_SCN_NRELOC(abfd, ext) \
171  H_GET_32 (abfd, ext->x_scn.x_nreloc)
172#define GET_SCN_NLINNO(abfd, ext) \
173  H_GET_32 (abfd, ext->x_scn.x_nlinno)
174#define PUT_SCN_NRELOC(abfd, in, ext) \
175  H_PUT_32 (abfd, in, ext->x_scn.x_nreloc)
176#define PUT_SCN_NLINNO(abfd, in, ext) \
177  H_PUT_32 (abfd,in, ext->x_scn.x_nlinno)
178
179#define SYMENT  struct external_syment
180#define SYMESZ  20
181#define AUXENT  union external_auxent
182#define AUXESZ  20
183
184/********************** RELOCATION DIRECTIVES **********************/
185
186struct external_reloc
187{
188  char r_vaddr[4];
189  char r_symndx[4];
190  char r_type[2];
191  char r_offset[2];
192};
193
194#define RELOC struct external_reloc
195#define RELSZ  12
196
197#define NO_TVNDX
Note: See TracBrowser for help on using the repository browser.