source: branches/branch-1-0/include/helpers/mapfile.h@ 231

Last change on this file since 231 was 226, checked in by umoeller, 23 years ago

Map file parser.

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1
2/*
3 *@@sourcefile mapfile.h:
4 * header file for map_vac.c.
5 *
6 * Note: Version numbering in this file relates to XWorkplace version
7 * numbering.
8 *
9 *@@include #include <os2.h>
10 *@@include #include "helpers\linklist.h"
11 *@@include #include "helpers\mapfile.h"
12 */
13
14/* Copyright (C) 2002 Ulrich M”ller.
15 * This file is part of the "XWorkplace helpers" source package.
16 * This is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published
18 * by the Free Software Foundation, in version 2 as it comes in the
19 * "COPYING" file of the XWorkplace main distribution.
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 */
25
26#if __cplusplus
27extern "C" {
28#endif
29
30#ifndef MAPFILE_HEADER_INCLUDED
31 #define MAPFILE_HEADER_INCLUDED
32
33 /* ******************************************************************
34 *
35 * Errors
36 *
37 ********************************************************************/
38
39 #define MAPERROR_FIRST 10000
40 #define MAPERROR_NO_MODULE_NAME (MAPERROR_FIRST)
41 #define MAPERROR_SYNTAX_SEGMENTS_START (MAPERROR_FIRST + 1)
42 // cannot handle initial line in segments block;
43 // line must have format
44 // " 0001:00000000 000001630H FREQ_CODE1 CODE 32-bit"
45 #define MAPERROR_SYNTAX_SEGMENTS_NOSEGNAME (MAPERROR_FIRST + 2)
46 // cannot find segment name
47 #define MAPERROR_SYNTAX_SEGMENTS_SEGTYPE (MAPERROR_FIRST + 3)
48 // unknown segment type
49 #define MAPERROR_SYNTAX_SEGMENTS_OTHER (MAPERROR_FIRST + 4)
50
51 #define MAPERROR_SYNTAX_EXPORTS_OBJOFS (MAPERROR_FIRST + 5)
52 #define MAPERROR_SYNTAX_EXPORTS_NAME1 (MAPERROR_FIRST + 6)
53 #define MAPERROR_SYNTAX_EXPORTS_OTHER (MAPERROR_FIRST + 7)
54
55 #define MAPERROR_SYNTAX_PUBLICS_OBJOFS (MAPERROR_FIRST + 8)
56 #define MAPERROR_SYNTAX_PUBLICS_OTHER (MAPERROR_FIRST + 9)
57
58 /* ******************************************************************
59 *
60 * Map definitions
61 *
62 ********************************************************************/
63
64 /*
65 *@@ SEGMENT:
66 *
67 */
68
69 typedef struct _SEGMENT
70 {
71 ULONG ulObjNo;
72 ULONG ulObjOfs;
73 ULONG cbSeg;
74 CHAR szSegName[30];
75 ULONG ulType;
76 #define SEGTYPE_CODE32 1 // CODE 32-bit
77 #define SEGTYPE_CODE16 2 // CODE 16-bit
78 #define SEGTYPE_CONST32 3 // CONST 32-bit
79 #define SEGTYPE_DATA16 4 // DATA16 16-bit
80 #define SEGTYPE_DATA32 5 // DATA 32-bit
81 #define SEGTYPE_EDC_CLASS32 6 // EDC_CLASS 32-bit
82 #define SEGTYPE_BSS32 7 // BSS 32-bit
83 #define SEGTYPE_STACK32 8 // STACK 32-bit
84
85 } SEGMENT, *PSEGMENT;
86
87 /*
88 *@@ EXPORT:
89 *
90 */
91
92 typedef struct _EXPORT
93 {
94 ULONG ulObjNo;
95 ULONG ulObjOfs;
96
97 ULONG ulName1Len,
98 ulName2Len;
99 CHAR szNames[1]; // ulName1Len chars, followed by \0,
100 // followed by ulName2Len chars, followed by \0
101 } EXPORT, *PEXPORT;
102
103 /*
104 *@@ PUBLIC:
105 *
106 */
107
108 typedef struct _PUBLIC
109 {
110 ULONG ulObjNo;
111 ULONG ulObjOfs;
112
113 ULONG ulNameLen,
114 ulImportLen;
115
116 ULONG ulImportIndex; // if ulImportLen != 0, the index from where
117 // the thing was imported
118
119 CHAR szName[1]; // ulNameLen chars, followed by \0,
120 // and if ulImportLen != 0, followed
121 // by ulImportLen chars, followed by \0
122
123 } PUBLIC, *PPUBLIC;
124
125 /*
126 *@@ MAPFILE:
127 *
128 */
129
130 typedef struct _MAPFILE
131 {
132 CHAR szModule[CCHMAXPATH];
133
134 LINKLIST llSegments;
135 LINKLIST llExports;
136 LINKLIST llPublics;
137
138 } MAPFILE, *PMAPFILE;
139
140 /* ******************************************************************
141 *
142 * Prototypes
143 *
144 ********************************************************************/
145
146 APIRET mapvRead(PCSZ pcszMapFilename,
147 PMAPFILE *ppMapFile,
148 PSZ pszLineBuf,
149 ULONG cbLineBuf,
150 PULONG pulLineError);
151
152 APIRET mapvClose(PMAPFILE *ppMapFile);
153
154#endif
155
156#if __cplusplus
157}
158#endif
159
Note: See TracBrowser for help on using the repository browser.