mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
83d3415ef5
Currently the code fetches _gdb_expr address/types at multiple places, guessing its parameters at multiple places etc. Fetch it once, verify it has expected type and then rely on it. While the patch tries to clean up the code it is still horrible due to the missing C++ sub-classing. gdb/ChangeLog 2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com> * compile/compile-object-load.c (get_regs_type): Add parameter func_sym. Rely on its parameter count. (compile_object_load): Replace lookup_minimal_symbol_text by lookup_global_symbol_from_objfile. Verify FUNC_SYM. Set it in the return value. * compile/compile-object-load.h (struct compile_module): Replace func_addr by func_sym. * compile/compile-object-run.c: Include block.h. (compile_object_run): Reset module variable after it is freed. Use FUNC_SYM instead of FUNC_ADDR. Rely on it.
47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
/* Header file to load module for 'compile' command.
|
|
Copyright (C) 2014-2015 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
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
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
|
|
|
|
struct compile_module
|
|
{
|
|
/* objfile for the compiled module. */
|
|
struct objfile *objfile;
|
|
|
|
/* .c file OBJFILE was built from. It needs to be xfree-d. */
|
|
char *source_file;
|
|
|
|
/* 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;
|
|
};
|
|
|
|
extern struct compile_module *compile_object_load
|
|
(const char *object_file, const char *source_file,
|
|
enum compile_i_scope_types scope, void *scope_data);
|
|
|
|
#endif /* GDB_COMPILE_OBJECT_LOAD_H */
|