gold/
[deliverable/binutils-gdb.git] / ld / deffile.h
CommitLineData
252b5132 1/* deffile.h - header for .DEF file parser
aa820537
AM
2 Copyright 1998, 1999, 2000, 2002, 2003, 2005, 2006, 2007, 2009
3 Free Software Foundation, Inc.
252b5132
RH
4 Written by DJ Delorie dj@cygnus.com
5
f96b4a7b 6 This file is part of the GNU Binutils.
252b5132 7
f96b4a7b 8 This program is free software; you can redistribute it and/or modify
252b5132 9 it under the terms of the GNU General Public License as published by
f96b4a7b 10 the Free Software Foundation; either version 3, or (at your option)
252b5132
RH
11 any later version.
12
f96b4a7b 13 The program is distributed in the hope that it will be useful,
252b5132
RH
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GLD; see the file COPYING. If not, write to the Free
75be928b
NC
20 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
21 02110-1301, USA. */
252b5132 22
1069dd8d
ILT
23#ifndef DEFFILE_H
24#define DEFFILE_H
25
252b5132 26/* DEF storage definitions. Note that any ordinal may be zero, and
5cc18311 27 any pointer may be NULL, if not defined by the DEF file. */
252b5132 28
e47d05ad
KH
29typedef struct def_file_section {
30 char *name; /* always set */
31 char *class; /* may be NULL */
32 char flag_read, flag_write, flag_execute, flag_shared;
33} def_file_section;
34
35typedef struct def_file_export {
36 char *name; /* always set */
37 char *internal_name; /* always set, may == name */
7fcab871 38 char *its_name; /* optional export table name refered to. */
e47d05ad
KH
39 int ordinal; /* -1 if not specified */
40 int hint;
a8d701fd 41 char flag_private, flag_constant, flag_noname, flag_data, flag_forward;
e47d05ad
KH
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 */
7fcab871 54 char *its_name; /* optional import table name refered to. */
e47d05ad 55 int ordinal; /* may be -1 */
939ba9d0 56 int data; /* = 1 if data */
e47d05ad
KH
57} def_file_import;
58
c1711530
DK
59typedef struct def_file_aligncomm {
60 struct def_file_aligncomm *next; /* Chain pointer. */
61 char *symbol_name; /* Name of common symbol. */
62 unsigned int alignment; /* log-2 alignment. */
63} def_file_aligncomm;
64
e47d05ad 65typedef struct def_file {
939ba9d0 66 /* From the NAME or LIBRARY command. */
e47d05ad
KH
67 char *name;
68 int is_dll; /* -1 if NAME/LIBRARY not given */
69 bfd_vma base_address; /* (bfd_vma)(-1) if unspecified */
70
939ba9d0 71 /* From the DESCRIPTION command. */
e47d05ad
KH
72 char *description;
73
939ba9d0 74 /* From the STACK/HEAP command, -1 if unspecified. */
e47d05ad
KH
75 int stack_reserve, stack_commit;
76 int heap_reserve, heap_commit;
77
939ba9d0 78 /* From the SECTION/SEGMENT commands. */
e47d05ad
KH
79 int num_section_defs;
80 def_file_section *section_defs;
81
939ba9d0 82 /* From the EXPORTS commands. */
e47d05ad
KH
83 int num_exports;
84 def_file_export *exports;
85
939ba9d0 86 /* Used by imports for module names. */
e47d05ad
KH
87 def_file_module *modules;
88
939ba9d0 89 /* From the IMPORTS commands. */
e47d05ad
KH
90 int num_imports;
91 def_file_import *imports;
92
939ba9d0 93 /* From the VERSION command, -1 if not specified. */
e47d05ad 94 int version_major, version_minor;
c1711530
DK
95
96 /* Only expected from .drectve sections, not .DEF files. */
97 def_file_aligncomm *aligncomms;
98
e47d05ad 99} def_file;
252b5132 100
1579bae1 101extern def_file *def_file_empty (void);
252b5132 102
939ba9d0 103/* The second arg may be NULL. If not, this .def is appended to it. */
1579bae1
AM
104extern def_file *def_file_parse (const char *, def_file *);
105extern void def_file_free (def_file *);
106extern def_file_export *def_file_add_export (def_file *, const char *,
7fcab871 107 const char *, int,
db17156e 108 const char *, int *);
1579bae1 109extern def_file_import *def_file_add_import (def_file *, const char *,
7fcab871 110 const char *, int, const char *,
db17156e 111 const char *, int *);
1579bae1
AM
112extern void def_file_add_directive (def_file *, const char *, int);
113extern def_file_module *def_get_module (def_file *, const char *);
252b5132 114#ifdef DEF_FILE_PRINT
1579bae1 115extern void def_file_print (FILE *, def_file *);
252b5132 116#endif
1069dd8d
ILT
117
118#endif /* DEFFILE_H */
This page took 0.555602 seconds and 4 git commands to generate.