summaryrefslogtreecommitdiff
path: root/linkers/rld-outputter.h
diff options
context:
space:
mode:
Diffstat (limited to 'linkers/rld-outputter.h')
-rw-r--r--linkers/rld-outputter.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/linkers/rld-outputter.h b/linkers/rld-outputter.h
new file mode 100644
index 0000000..7fe52b2
--- /dev/null
+++ b/linkers/rld-outputter.h
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2011, Chris Johns <chrisj@rtems.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/**
+ * @file
+ *
+ * @ingroup rtems-ld
+ *
+ * @brief RTEMS Linker outputter handles the various output formats.
+ *
+ */
+
+#if !defined (_RLD_OUTPUTTER_H_)
+#define _RLD_OUTPUTTER_H_
+
+#include <rld-files.h>
+
+namespace rld
+{
+ namespace outputter
+ {
+ /**
+ * Output the object file list as a string.
+ *
+ * @param entry The name of the entry point symbol.
+ * @param exit The name of the exit point symbol.
+ * @param dependents The list of dependent object files
+ * @param cache The file cache for the link. Includes the object list
+ * the user requested.
+ * @return std::string The list as a text string.
+ */
+ std::string script_text (const std::string& entry,
+ const std::string& exit,
+ const files::object_list& dependents,
+ const files::cache& cache);
+ /**
+ * Output the object files as an archive format file with the metadata as
+ * the first ELF file.
+ *
+ * @param name The name of the archive.
+ * @param entry The name of the entry point symbol.
+ * @param exit The name of the exit point symbol.
+ * @param dependents The list of dependent object files
+ * @param cache The file cache for the link. Includes the object list
+ * the user requested.
+ */
+ void archive (const std::string& name,
+ const std::string& entry,
+ const std::string& exit,
+ const files::object_list& dependents,
+ const files::cache& cache);
+
+ void archivera (const std::string& name,
+ const files::object_list& dependents,
+ files::cache& cache,
+ bool ra_exist,
+ bool ra_rap);
+
+ /**
+ * Output the object file list as a script.
+ *
+ * @param name The name of the script.
+ * @param entry The name of the entry point symbol.
+ * @param exit The name of the exit point symbol.
+ * @param dependents The list of dependent object files
+ * @param cache The file cache for the link. Includes the object list
+ * the user requested.
+ */
+ void script (const std::string& name,
+ const std::string& entry,
+ const std::string& exit,
+ const files::object_list& dependents,
+ const files::cache& cache);
+
+ /**
+ * Output the object files in an archive with the metadata.
+ *
+ * @param name The name of the script.
+ * @param entry The name of the entry point symbol.
+ * @param exit The name of the exit point symbol.
+ * @param dependents The list of dependent object files
+ * @param cache The file cache for the link. Includes the object list
+ * the user requested.
+ */
+ void elf_application (const std::string& name,
+ const std::string& entry,
+ const std::string& exit,
+ const files::object_list& dependents,
+ const files::cache& cache);
+
+ /**
+ * Output the object files in an archive with the metadata.
+ *
+ * @param name The name of the script.
+ * @param entry The name of the entry point symbol.
+ * @param exit The name of the exit point symbol.
+ * @param dependents The list of dependent object files
+ * @param cache The file cache for the link. Includes the object list
+ * the user requested.
+ * @param symbols The symbol table used to resolve the application.
+ */
+ void application (const std::string& name,
+ const std::string& entry,
+ const std::string& exit,
+ const files::object_list& dependents,
+ const files::cache& cache,
+ const symbols::table& symbols,
+ bool one_file);
+
+ }
+}
+
+#endif