source: trunk/src/binutils/ld/deffile.h@ 1036

Last change on this file since 1036 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.4 KB
Line 
1/* deffile.h - header for .DEF file parser
2 Copyright 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
3 Written by DJ Delorie dj@cygnus.com
4
5 This file is part of GLD, the Gnu Linker.
6
7 GLD is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GLD is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GLD; see the file COPYING. If not, write to the Free
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
21
22#ifndef DEFFILE_H
23#define DEFFILE_H
24
25#include "ansidecl.h"
26
27/* DEF storage definitions. Note that any ordinal may be zero, and
28 any pointer may be NULL, if not defined by the DEF file. */
29
30typedef struct def_file_section {
31 char *name; /* always set */
32 char *class; /* may be NULL */
33 char flag_read, flag_write, flag_execute, flag_shared;
34} def_file_section;
35
36typedef struct def_file_export {
37 char *name; /* always set */
38 char *internal_name; /* always set, may == name */
39 int ordinal; /* -1 if not specified */
40 int hint;
41 char flag_private, flag_constant, flag_noname, flag_data;
42} def_file_export;
43
44typedef struct def_file_module {
45 struct def_file_module *next;
46 void *user_data;
47 char name[1]; /* extended via malloc */
48} def_file_module;
49
50typedef struct def_file_import {
51 char *internal_name; /* always set */
52 def_file_module *module; /* always set */
53 char *name; /* may be NULL; either this or ordinal will be set */
54 int ordinal; /* may be -1 */
55 int data; /* = 1 if data */
56} def_file_import;
57
58typedef struct def_file {
59 /* From the NAME or LIBRARY command. */
60 char *name;
61 int is_dll; /* -1 if NAME/LIBRARY not given */
62 bfd_vma base_address; /* (bfd_vma)(-1) if unspecified */
63
64 /* From the DESCRIPTION command. */
65 char *description;
66
67 /* From the STACK/HEAP command, -1 if unspecified. */
68 int stack_reserve, stack_commit;
69 int heap_reserve, heap_commit;
70
71 /* From the SECTION/SEGMENT commands. */
72 int num_section_defs;
73 def_file_section *section_defs;
74
75 /* From the EXPORTS commands. */
76 int num_exports;
77 def_file_export *exports;
78
79 /* Used by imports for module names. */
80 def_file_module *modules;
81
82 /* From the IMPORTS commands. */
83 int num_imports;
84 def_file_import *imports;
85
86 /* From the VERSION command, -1 if not specified. */
87 int version_major, version_minor;
88} def_file;
89
90extern def_file *def_file_empty PARAMS ((void));
91
92/* The second arg may be NULL. If not, this .def is appended to it. */
93extern def_file * def_file_parse
94 PARAMS ((const char *, def_file *));
95extern void def_file_free
96 PARAMS ((def_file *));
97extern def_file_export * def_file_add_export
98 PARAMS ((def_file *, const char *, const char *, int));
99extern def_file_import * def_file_add_import
100 PARAMS ((def_file *, const char *, const char *, int, const char *));
101extern void def_file_add_directive
102 PARAMS ((def_file *, const char *, int));
103extern def_file_module *def_get_module
104 PARAMS ((def_file *, const char *));
105#ifdef DEF_FILE_PRINT
106extern void def_file_print
107 PARAMS ((FILE *, def_file *));
108#endif
109
110#endif /* DEFFILE_H */
Note: See TracBrowser for help on using the repository browser.