Skip to content
Snippets Groups Projects
  1. Jan 16, 2023
  2. Jan 03, 2022
  3. Jan 04, 2021
  4. Jan 01, 2020
  5. Jan 01, 2019
  6. Jan 03, 2018
  7. Jan 31, 2017
    • Alexandre Oliva's avatar
      Introduce C++ support in libcc1 · 8db29d88
      Alexandre Oliva authored
      Extend libcc1's with an API for C++ support.
      
      Extend libcc1's C API to distinguish between integral types with the
      same width, as in C++.  Likewise for float types.
      
      Export small bits of functionality from the C++ front-end for use in
      libcc1.  Add support for the C++ front-end to look up names and
      addresses using a libcc1-registered binding oracle.  Add support for
      global friends.
      
      
      for  gcc/cp/ChangeLog
      
      	Introduce C++ support in libcc1.
      	* cp-tree.h (struct lang_identifier): Add oracle_looked_up.
      	(ansi_opname): Rename to...
      	(cp_operator_id): ... this.  Adjust all callers.
      	(ansi_assopname): Rename to...
      	(cp_assignment_operator_id): ... this.  Adjust all callers.
      	(cp_literal_operator_id): Declare.
      	(set_global_friend): Declare.
      	(is_global_friend): Declare.
      	(enum cp_oracle_request): New type.
      	(cp_binding_oracle_function): New type.
      	(cp_binding_oracle): Declare.
      	(cp_finish_injected_record_type): Declare.
      	* friend.c (global_friend): New var.
      	(set_global_friend): New fn.
      	(is_global_friend): New fn.
      	(is_friend): Call is_global_friend.
      	* name-lookup.c (cp_binding_oracle): New var.
      	(query_oracle): New fn.
      	(qualified_lookup_using_namespace): Call query_oracle.
      	(lookup_name_real_1): Likewise.
      	* parser.c (cp_literal_operator_id): Drop static.
      	* search.c (friend_accessible_p): Call is_global_friend.
      	* semantics.c (is_this_parameter): Accept a variable if the
      	binding oracle is enabled.
      
      for  include/ChangeLog
      
      	Introduce C++ support in libcc1.
      	* gcc-c-fe.def (int_type_v0): Rename from...
      	(int_type): ... this.  Introduce new version.
      	(float_type_v0): Rename from...
      	(float_type): ... this.  Introduce new version.
      	(char_type): New.
      	* gcc-c-interface.h (gcc_c_api_version): Add GCC_C_FE_VERSION_1.
      	(gcc_type_array): Move...
      	* gcc-interface.h: ... here.
      	* gcc-cp-fe.def: New.
      	* gcc-cp-interface.h: New.
      
      for  libcc1/ChangeLog
      
      	Introduce C++ support.
      	* Makefile.am (AM_CPPFLAGS): Move some -I flags to...
      	(CPPFLAGS_FOR_C_FAMILY, CPPFLAGS_FOR_C, CPPFLAGS_FOR_CXX): ...
      	new macros.
      	(plugin_LTLIBRARIES): Add libcp1plugin.la.
      	(BUILT_SOURCES, MOSTLYCLEANFILES): Add...
      	(cp-compiler-name.h): ... this.  New.
      	(c-compiler-name.h): Rename all over from...
      	(compiler-name.h): ... this.  Create it atomically.
      	(marshall_c_source, marshall_cxx_source): New macros.
      	(libcc1plugin_la_SOURCES): Rename plugin.cc to libcc1plugin.cc.
      	Add marshall_c_source expansion.
      	(libcc1plugin.lo_CPPFLAGS): New macro.
      	(libcp1plugin_la_LDFLAGS): Likewise.
      	(libcp1plugin_la_SOURCES): Likewise.
      	(libcp1plugin.lo_CPPFLAGS): Likewise.
      	(libcp1plugin_la_LIBADD): Likewise.
      	(libcp1plugin_la_DEPENDENCIES): Likewise.
      	(libcp1plugin_la_LINK): Likewise.
      	(libcc1_la_SOURCES): Added marshall_c_source and
      	marshall_cxx_source expansions.
      	* Makefile.in: Rebuild.
      	* compiler-name.h: Rename all over to...
      	* c-compiler-name.h: ... this.  Define C_COMPILER_NAME instead
      	of COMPILER_NAME.
      	* plugin.cc: Rename all over to...
      	* libcc1plugin.cc: ... this.  Include marshall-c.hh.
      	(address_rewriter): Drop cleaning up of VLA sizes.
      	(plugin_build_decl): Mark decls as external.
      	(plugin_tagbind): Propagate name to all variants.
      	(build_anonymous_node): New.
      	(plugin_build_record_type): Use it instead of make_node.
      	(plugin_build_union_type): Likewise.
      	(plugin_build_enum_type): Likewise.
      	(plugin_finish_record_or_union): Update all type variants.
      	(safe_lookup_builtin_type): New.
      	(plugin_int_check): Factor out of, and add checks to, ...
      	(plugin_int_type): ... this.  Rename to...
      	(plugin_int_type_v0): ... this.
      	(plugin_int_type): New interface, new implementation.
      	(plugin_char_type): New.
      	(plugin_float_type_v0): Rename from...
      	(plugin_float_type): ... this.  New interface, new implementation.
      	(plugin_init): Bump handshake version.
      	* libcc1.cc: Include marshall-c.hh.  Drop gcc-interface.h.
      	(call_binding_oracle): Rename to...
      	(c_call_binding_oracle): ... this, into anonymous namespace.
      	(call_symbol_address): Rename to...
      	(c_call_symbol_address): ... this, likewise.
      	(GCC_METHOD#): Move methods into cc1plugin::c:: namespace.
      	(libcc1::compiler::find): Refer to C_COMPILER_NAME.
      	(fork_exec): Bump to GCC_C_FE_VERSION_1.
      	(libcc1_compile): Prefix callbacks with c_.
      	(gcc_c_fe_context): Accept GCC_C_FE_VERSION_1.
      	* libcc1.sym: Export gcc_cp_fe_context.
      	* libcp1.cc: New, mostly copied and adjusted from libcc1.cc.
      	* libcp1plugin.cc: New, initially copied from libcc1plugin.cc.
      	* libcp1plugin.sym: New.
      	* marshall-c.hh: New.  Move C-specific types from...
      	* marshall.cc: ... this.
      	(cc1_plugin::marshall_array_start): New.
      	(cc1_plugin::marshall_array_elmts): New.
      	(cc1_plugin::marshall for gcc_type_array): Use the above.
      	(cc1_plugin::unmarshall_array_start): New.
      	(cc1_plugin::unmarshall_array_elmts): New.
      	(cc1_plugin::unmarshall for gcc_type_array): Use the above.
      	* marshall.hh: Declare the new array building blocks.
      	Drop C-specific unmarshall declarations.
      	* marshall-cp.hh: New.
      	* names.cc (GCC_METHOD#): Add LANG:: to method names.
      	(LANG): Define while including gcc-c-fe.def and gcc-cp-fe.def.
      	* names.hh: Include gcc-c-fe.def and gcc-cp-fe.def in the
      	corresponding namespaces.
      	* rpc.hh: Don't include marshall.hh.
      	[GCC_CP_INTERFACE_H] (argument_wrapper): Specialize for
      	gcc_vbase_array, gcc_cp_template_args, gcc_cp_function_args.
      
      From-SVN: r245051
      8db29d88
  8. Jan 04, 2017
  9. Jul 14, 2015
  10. Oct 27, 2014
    • Phil Muldoon's avatar
      Let GDB reuse GCC's parser. · ddc8de03
      Phil Muldoon authored
      2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
      	    Jan Kratochvil  <jan.kratochvil@redhat.com>
      	    Tom Tromey  <tromey@redhat.com>
      
      	* aclocal.m4: New file.
      	* callbacks.cc: New file.
      	* callbacks.hh: New file.
      	* cc1plugin-config.h.in: New file.
      	* configure: New file.
      	* configure.ac: New file.
      	* connection.cc: New file.
      	* connection.hh: New file.
      	* findcomp.cc: New file.
      	* findcomp.hh: New file.
      	* libcc1.cc: New file.
      	* libcc1plugin.sym: New file.
      	* libcc1.sym: New file.
      	* Makefile.am: New file.
      	* Makefile.in: New file.
      	* marshall.cc: New file.
      	* marshall.hh: New file.
      	* names.cc: New file.
      	* names.hh: New file.
      	* plugin.cc: New file.
      	* rpc.hh: New file.
      	* status.hh: New file.
      
      2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
      	    Jan Kratochvil  <jan.kratochvil@redhat.com>
      	    Tom Tromey  <tromey@redhat.com>
      
      	* gcc-c-fe.def: New file.
      	* gcc-c-interface.h: New file.
      	* gcc-interface.h: New file.
      
      2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
      	    Tom Tromey  <tromey@redhat.com>
      
      	* c-tree.h (enum c_oracle_request): New.
      	(c_binding_oracle_function): New typedef.
      	(c_binding_oracle, c_pushtag, c_bind): Declare.
      	* c-decl.c (c_binding_oracle): New global.
      	(I_SYMBOL_CHECKED): New macro.
      	(i_symbol_binding): New function.
      	(I_SYMBOL_BINDING, I_SYMBOL_DECL): Redefine.
      	(I_TAG_CHECKED): New macro.
      	(i_tag_binding): New function.
      	(I_TAG_BINDING, I_TAG_DECL): Redefine.
      	(I_LABEL_CHECKED): New macro.
      	(i_label_binding): New function.
      	(I_LABEL_BINDING, I_LABEL_DECL): Redefine.
      	(c_print_identifier): Save and restore c_binding_oracle.
      	(c_pushtag, c_bind): New functions.
      
      2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
      	    Tom Tromey  <tromey@redhat.com>
      
      	* aclocal.m4, configure: Rebuild.
      	* Makefile.in (aclocal_deps): Add gcc-plugin.m4.
      	* configure.ac: Use GCC_ENABLE_PLUGINS.
      	* stor-layout.c (finish_bitfield_layout): Now public.  Change
      	argument type to 'tree'.
      	(finish_record_layout): Update.
      	* stor-layout.h (finish_bitfield_layout): Declare.
      
      2014-10-27  Tom Tromey  <tromey@redhat.com>
      
      	* gcc-plugin.m4: New file.
      
      2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
      	    Tom Tromey  <tromey@redhat.com>
      
      	* Makefile.def: Add libcc1 to host_modules.
      	* configure.ac (host_tools): Add libcc1.
      	* Makefile.in, configure: Rebuild.
      
      From-SVN: r216748
      ddc8de03
Loading