/* Header file to load module for 'compile' command.
- Copyright (C) 2014 Free Software Foundation, Inc.
+ Copyright (C) 2014-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#ifndef GDB_COMPILE_OBJECT_LOAD_H
-#define GDB_COMPILE_OBJECT_LOAD_H
+#ifndef COMPILE_COMPILE_OBJECT_LOAD_H
+#define COMPILE_COMPILE_OBJECT_LOAD_H
+
+#include "compile-internal.h"
+#include <list>
+
+struct munmap_list
+{
+public:
+
+ munmap_list () = default;
+ ~munmap_list ();
+
+ DISABLE_COPY_AND_ASSIGN (munmap_list);
+
+ /* Add a region to the list. */
+ void add (CORE_ADDR addr, CORE_ADDR size);
+
+private:
+
+ /* Track inferior memory reserved by inferior mmap. */
+
+ struct munmap_item
+ {
+ CORE_ADDR addr, size;
+ };
+
+ std::vector<munmap_item> items;
+};
struct compile_module
{
/* .c file OBJFILE was built from. It needs to be xfree-d. */
char *source_file;
- /* Inferior function address. */
- CORE_ADDR func_addr;
+ /* Inferior function GCC_FE_WRAPPER_FUNCTION. */
+ struct symbol *func_sym;
/* Inferior registers address or NULL if the inferior function does not
require any. */
CORE_ADDR regs_addr;
+
+ /* The "scope" of this compilation. */
+ enum compile_i_scope_types scope;
+
+ /* User data for SCOPE in use. */
+ void *scope_data;
+
+ /* Inferior parameter out value type or NULL if the inferior function does not
+ have one. */
+ struct type *out_value_type;
+
+ /* If the inferior function has an out value, this is its address.
+ Otherwise it is zero. */
+ CORE_ADDR out_value_addr;
+
+ /* Track inferior memory reserved by inferior mmap. */
+ struct munmap_list *munmap_list_head;
};
-extern struct compile_module *compile_object_load (const char *object_file,
- const char *source_file);
+extern struct compile_module *compile_object_load
+ (const compile_file_names &fnames,
+ enum compile_i_scope_types scope, void *scope_data);
-#endif /* GDB_COMPILE_OBJECT_LOAD_H */
+#endif /* COMPILE_COMPILE_OBJECT_LOAD_H */