RTEMS Linker  0.0.1
RTEMS Tools Project
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
/Users/chris/Development/rtems/src/apps/rtl-host.chrisj/rld-outputter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011, Chris Johns <chrisj@rtems.org>
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 /**
17  * @file
18  *
19  * @ingroup rtems-ld
20  *
21  * @brief RTEMS Linker outputter handles the various output formats.
22  *
23  */
24 
25 #if !defined (_RLD_OUTPUTTER_H_)
26 #define _RLD_OUTPUTTER_H_
27 
28 #include <rld-files.h>
29 
30 namespace rld
31 {
32  namespace outputter
33  {
34  /**
35  * Output the object file list as a string.
36  *
37  * @param entry The name of the entry point symbol.
38  * @param exit The name of the exit point symbol.
39  * @param dependents The list of dependent object files
40  * @param cache The file cache for the link. Includes the object list
41  * the user requested.
42  * @return std::string The list as a text string.
43  */
44  std::string script_text (const std::string& entry,
45  const std::string& exit,
46  const files::object_list& dependents,
47  const files::cache& cache);
48  /**
49  * Output the object files as an archive format file with the metadata as
50  * the first ELF file.
51  *
52  * @param name The name of the archive.
53  * @param entry The name of the entry point symbol.
54  * @param exit The name of the exit point symbol.
55  * @param dependents The list of dependent object files
56  * @param cache The file cache for the link. Includes the object list
57  * the user requested.
58  */
59  void archive (const std::string& name,
60  const std::string& entry,
61  const std::string& exit,
62  const files::object_list& dependents,
63  const files::cache& cache);
64 
65  /**
66  * Output the object file list as a script.
67  *
68  * @param name The name of the script.
69  * @param entry The name of the entry point symbol.
70  * @param exit The name of the exit point symbol.
71  * @param dependents The list of dependent object files
72  * @param cache The file cache for the link. Includes the object list
73  * the user requested.
74  */
75  void script (const std::string& name,
76  const std::string& entry,
77  const std::string& exit,
78  const files::object_list& dependents,
79  const files::cache& cache);
80 
81  /**
82  * Output the object files in an archive with the metadata.
83  *
84  * @param name The name of the script.
85  * @param entry The name of the entry point symbol.
86  * @param exit The name of the exit point symbol.
87  * @param dependents The list of dependent object files
88  * @param cache The file cache for the link. Includes the object list
89  * the user requested.
90  */
91  void elf_application (const std::string& name,
92  const std::string& entry,
93  const std::string& exit,
94  const files::object_list& dependents,
95  const files::cache& cache);
96 
97  /**
98  * Output the object files in an archive with the metadata.
99  *
100  * @param name The name of the script.
101  * @param entry The name of the entry point symbol.
102  * @param exit The name of the exit point symbol.
103  * @param dependents The list of dependent object files
104  * @param cache The file cache for the link. Includes the object list
105  * the user requested.
106  * @param symbols The symbol table used to resolve the application.
107  */
108  void application (const std::string& name,
109  const std::string& entry,
110  const std::string& exit,
111  const files::object_list& dependents,
112  const files::cache& cache,
113  const symbols::table& symbols);
114 
115  }
116 }
117 
118 #endif