1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22: #ifndef DEFFILE_H
23: #define DEFFILE_H
24:
25:
26:
27:
28: typedef struct def_file_section {
29: char *name;
30: char *class;
31: char flag_read, flag_write, flag_execute, flag_shared;
32: } def_file_section;
33:
34: typedef struct def_file_export {
35: char *name;
36: char *internal_name;
37: int ordinal;
38: int hint;
39: char flag_private, flag_constant, flag_noname, flag_data, flag_forward;
40: } def_file_export;
41:
42: typedef struct def_file_module {
43: struct def_file_module *next;
44: void *user_data;
45: char name[1];
46: } def_file_module;
47:
48: typedef struct def_file_import {
49: char *internal_name;
50: def_file_module *module;
51: char *name;
52: int ordinal;
53: int data;
54: } def_file_import;
55:
56: typedef struct def_file {
57:
58: char *name;
59: int is_dll;
60: bfd_vma base_address;
61:
62:
63: char *description;
64:
65:
66: int stack_reserve, stack_commit;
67: int heap_reserve, heap_commit;
68:
69:
70: int num_section_defs;
71: def_file_section *section_defs;
72:
73:
74: int num_exports;
75: def_file_export *exports;
76:
77:
78: def_file_module *modules;
79:
80:
81: int num_imports;
82: def_file_import *imports;
83:
84:
85: int version_major, version_minor;
86: } def_file;
87:
88: extern def_file *def_file_empty (void);
89:
90:
91: extern def_file *def_file_parse (const char *, def_file *);
92: extern void def_file_free (def_file *);
93: extern def_file_export *def_file_add_export (def_file *, const char *,
94: const char *, int);
95: extern def_file_import *def_file_add_import (def_file *, const char *,
96: const char *, int, const char *);
97: extern void def_file_add_directive (def_file *, const char *, int);
98: extern def_file_module *def_get_module (def_file *, const char *);
99: #ifdef DEF_FILE_PRINT
100: extern void def_file_print (FILE *, def_file *);
101: #endif
102:
103: #endif