aboutsummaryrefslogtreecommitdiff
path: root/libcc1/gdbctx.hh
AgeCommit message (Collapse)AuthorFilesLines
2023-01-16Update copyright years.Jakub Jelinek1-1/+1
2022-01-03Update copyright years.Jakub Jelinek1-1/+1
2021-05-05libcc1: fix a memory leakTom Tromey1-6/+2
libcc1 has a memory leak when calling fork_exec -- it allocates a new vector of arguments, but then does not free it anywhere. This patch changes this code to use std::vector instead. Note that the previous code tried to avoid bad_alloc. I don't believe this is very important. For one thing, plenty of other allocations do not bother with this. libcc1 * gdbctx.hh (do_compile): Use std::vector.
2021-05-05libcc1: share the GCC interface codeTom Tromey1-2/+251
Both the C and C++ side of the GDB plugin in libcc1 share a lot of code relating to the base GCC interface. It was all copy-and-pasted, but is essentially identical between the two. This is by design, as the base GCC API is intended to be shared. This patch merges the implementations into base_gdb_plugin, which was introduced earlier for this purpose. libcc1 * libcp1.cc (libcp1): Change parameters. Update. (libcp1_set_verbose, libcp1_set_arguments) (libcp1_set_triplet_regexp, libcp1_set_driver_filename) (libcp1_set_source_file, libcp1_set_print_callback, fork_exec) (libcp1_compile, libcp1_destroy, vtable): Remove. (libcp1::add_callbacks): New method, extracted from libcp1_compile. (gcc_c_fe_context): Update. * libcc1.cc (libcc1): Change parameters. Update. (libcc1_set_verbose, libcc1_set_arguments) (libcc1_set_triplet_regexp, libcc1_set_driver_filename) (libcc1_set_source_file, libcc1_set_print_callback, fork_exec) (libcc1_compile, libcc1_destroy, vtable): Remove. (libcc1::add_callbacks): New method, extracted from libcc1_compile. (gcc_c_fe_context): Update. * gdbctx.hh (base_gdb_plugin): Change parameters. (~base_gdb_plugin): New. <add_callbacks>: New virtual method. <plugin_name, fe_version, compiler_name, vtable>: New members. (get_self, do_set_verbose, do_set_arguments) (do_set_triplet_regexp, do_set_driver_filename) (do_set_arguments_v0, do_set_source_file, do_set_print_callback) (fork_exec, do_compile, do_compile_v0, do_destroy): New methods.
2021-05-05libcc1: share GDB plugin codeTom Tromey1-0/+105
The two GDB plugins in libcc1 share a fair amount of code. This was done by copy-and-paste, though in reality the underlying code is nearly identical. libcc1 * libcp1.cc (struct libcp1): Derive from base_gdb_plugin. Remove shared code. (class libcp1_connection): Remove. (rpc): Remove. (libcp1_set_verbose, libcp1_compile): Update. (cp_call_binding_oracle, cp_call_symbol_address) (cp_call_enter_scope, cp_call_leave_scope): Update. * libcc1.cc (struct libcc1): Derive from base_gdb_plugin. Remove shared code. (class libcc1_connection): Remove. (c_call_binding_oracle, c_call_symbol_address): Update. (rpc): Remove. (libcc1_set_verbose, libcc1_compile): Update. * gdbctx.hh: New file.