1. 01 Jan, 2019 1 commit
  2. 03 Jan, 2018 1 commit
  3. 04 Jan, 2017 1 commit
  4. 09 Nov, 2015 1 commit
    • Correct libvtv obstack use · 37697711
      Fixes a compile error with both old and new obstacks due to
      obstack_chunk_free having the wrong signature.  Also, setting chunk
      size and alignment before obstack_init is pointless since they are
      overwritten.
      
      	* vtv_malloc.cc (obstack_chunk_free): Correct param type.
      	(__vtv_malloc_init): Use obstack_specify_allocation.
      
      From-SVN: r229985
      Alan Modra committed
  5. 27 Aug, 2015 1 commit
  6. 02 Aug, 2015 1 commit
    • re PR bootstrap/66521 (xgcc: cc1plus segfaults when compiling… · b0cca5ec
      re PR bootstrap/66521 (xgcc: cc1plus segfaults when compiling libstdc++-v3/src/c++11/ostream-inst.cc)
      
      Fix PR 66521
      
      libvtv/ChangeLog
      
      2015-08-01  Caroline Tice  <cmtice@google.com>
      
              PR 66521
              * Makefile.am: Update to match latest tree.
              * Makefile.in: Regenerate.
              * testsuite/lib/libvtv: Brought up to date.
              * vtv_malloc.cc (VTV_DEBUG): Update function call to match renamed
              function (old bug!).
              * vtv_rts.cc (debug_functions, debug_init, debug_verify_vtable): Update
              initializations to work correctly with VTV_DEBUG defined.
      
      gcc/ChangeLog:
      
      2015-08-01  Caroline Tice  <cmtice@google.com>
      
              PR 66521
              * vtable-verify.c (vtbl_mangled_name_types, vtbl_mangled_name_ids): New
              global variables.
              (vtbl_find_mangled_name):  New function.
              (vtbl_register_mangled_name):  New function.
              (vtbl_map_get_node):  If DECL_ASSEMBLER_NAME is "<anon>", look up
              mangled name in mangled name vectors.
              (find_or_create_vtbl_map_node):  Ditto.
              (var_is_used_for_virtual_call_p):  Add recursion_depth parameter;
              update recursion_depth on function entry; pass it to every recursive
              call; automatically exit if depth > 25 (give up looking at that point).
              (verify_bb_vtables):  Initialize recursion_depth and pass it to
              var_is_used_for_virtual_call_p.
              * vtable-verify.h (vtbl_mangbled_name_types, vtbl_mangled_name_ids): New
              global variable decls.
              (vtbl_register_mangled_name): New extern function decl.
      
      gcc/cp/ChangeLog:
      2015-08-01  Caroline Tice  <cmtice@google.com>
      
              PR 66521
              * mangle.c : Add vtable-verify.h to include files.
              (get_mangled_vtable_map_var_name):  If the DECL_ASSEMBLER_NAME
              is "<anon>" get the real mangled name for the class instead, and
              also store the real mangled name in a vector for use later.
      
      From-SVN: r226471
      Caroline Tice committed
  7. 29 Jan, 2015 1 commit
    • Committing VTV Cygwin patch for Patrick Wollgast · f7f049fa
      * gcc/config/i386/cygwin.h (STARTFILE_SPEC): Add vtv_start.o,
          if -fvtable-verify=preinit/std is used.
      * gcc/config/i386/mingw-w64.h (STARTFILE_SPEC): Likewise.
      * gcc/config/i386/mingw32.h (STARTFILE_SPEC): Likewise.
      * gcc/config/i386/cygwin.h (ENDFILE_SPEC): Add vtv_end.o,
          if -fvtable-verify=preinit/std is used.
      * gcc/config/i386/mingw32.h (ENDFILE_SPEC): Likewise.
      * gcc/config/i386/cygwin.h (LIB_SPEC): Pass -lvtv and -lpsapi,
          if -fvtable-verify=preinit/std is used.
      * gcc/config/i386/mingw-w64.h (LIB_SPEC): Likewise.
      * gcc/config/i386/mingw32.h (LIB_SPEC): Likewise.
      
      * gcc/cp/vtable-class-hierarchy.c (vtv_generate_init_routine): Add
          check for not TARGET_PECOFF at the VTV_PREINIT_PRIORITY checks.
      
      * gcc/varasm.c (assemble_variable): Add code to properly set the comdat
          section and name for the .vtable_map_vars section in case the
          target is PE or COFF.
      
      
      * libgcc/Makefile.in: Move rules to build vtv_*.o out of the check
          for CUSTOM_CRTSTUFF.
      * libgcc/config.host (i[34567]86-*-cygwin*, x86_64-*-cygwin*, i[34567]86-*-mingw*)
          (x86_64-*-mingw*): Only add vtv_*.o to extra_parts if enable_vtable_verify.
      
      
      * libstdc++-v3/acinclude.m4: Define VTV_CYGMIN.
      * libstdc++-v3/configure: Regenerate.
      
      * libstdc++-v3/libsupc++/Makefile.am: Add vtv_sources only to
          libsupc___la_SOURCES and libsupc__convenience_la_SOURCES if VTV_CYGMIN is
          not set.
      * libstdc++-v3/libsupc++/Makefile.in: Regenerated.
      * libstdc++-v3/libsupc++/vtv_stubs.cc: Add none weak declaration of every
          function for Cygwin and MinGW.
      
      * libstdc++-v3/src/Makefile.am: Add libvtv.la to toolexeclib_LTLIBRARIES,
          if VTV_CYGMIN is set. Define libvtv_la_SOURCES, libvtv_la_LDFLAGS,
          libvtv_la_AM_CXXFLAGS and libvtv_la_LINK if VTV_CYGMIN is set.
      * libstdc++-v3/src/Makefile.in: Regenerate.
      
      
      * libvtv/Makefile.am : Add libvtv.la to toolexeclib_LTLIBRARIES, if VTV_CYGMIN
          is set. Define libvtv_la_LIBADD, libvtv_la_LDFLAGS, libvtv_stubs_la_LDFLAGS
          and libvtv_stubs_la_SOURCES if VTV_CYGMIN is set. Add obstac.c to
          libvtv_la_SOURCES if VTV_CYGMIN is set.
      * libvtv/Makefile.in : Regenerate.
      * libvtv/aclocal.m4 : Regenerate.
      * libvtv/configure : Regenerate.
      * libvtv/configure.ac : Add ACX_LT_HOST_FLAGS. Define VTV_CYGMIN.
      * libvtv/configure.tgt : (x86_64-*-cygwin*, i?86-*-cygwin*, x86_64-*-mingw*)
          (i?86-*-mingw*): Add to supported targets.
      * libvtv/vtv_fail.cc : Skip inclusion of execinfo.h on Cygwin and MinGW.
      (log_error_message): Skip calls to backtrace and backtrace_symbols_fd on Cygwin
          and MinGW.
      * libvtv/vtv_malloc.cc : Include windows.h and skip sys/mman.h inclusion on
          Cygwin and MinGW. Add sysconf port on Cygwin and MinGW.
      (obstack_chunk_alloc): Exchange call to mmap with call to VirtualAlloc on Cygwin
          and MinGW.
      (__vtv_malloc_init): Exchange call to sysconf with call to port of sysconf on
          Cygwin and MinGW.
      * libvtv/vtv_malloc.h : Declare mprotect and define PROT_READ and PROT_WRITE on
          Cygwin and MinGW.
      * libvtv/map.h : Include stdint.h on MinGW.
      * libvtv/rts.cc : Include windows.h, winternl.h and psapi.h, skip include of
          execinfo.h, sys/mman.h and link.h on Cygwin and MinGW.
          Add port of __fortify_fail on Cygwin and MinGW.
          Change ElfW (Addr) to uintptr_t on Cygwin and MinGW.
      (read_section_offset_and_length): Add port for Cygwin and MinGW
      (iterate_modules): New function.
      (vtv_unprotect_vtable_vars): Use iterate_modules instead of dl_iterate_phdr on
          Cygwin and MinGW.
      (vtv_protect_vtable_vars): Likewise.
      (count_all_pages): Likewise.
      (dl_iterate_phdr_count_pages): Don't build on Cygwin and MinGW.
      * libvtv/utils.cc : Include windows.h and skip execinfo.h inclusion on
          Cygwin and MinGW.
      (__vtv_open_log): Exchange call to getuid and getpid with GetCurrentProcessId and
          adjust call to snprintf accordingly on Cygwin and MinGW.
          Adjust calls to mkdir on MinGW.
          Adjust call to open on Cygwin and MinGW.
      (__vtv_add_to_log): Adjust call to snprintf on Cygwin and MinGW.
      (__vtv_log_verification_failure): Don't generate a backtrace on Cygwin and MinGW.
      
      From-SVN: r220232
      Caroline Tice committed
  8. 07 Aug, 2013 1 commit
    • Commit the vtable verification feature. · 2077db1b
      Commit the vtable verification feature.  This feature is designed to
      detect, at run time, if/when the vtable pointer in a C++ object has
      been corrupted, before allowing virtual calls through that pointer. 
      If pointer corruption is detected, execution of the program is halted.
      
      libstdc++-v3 ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * fragment.am: Add XTEMPLATE_FLAGS.
              * configure.ac: Add definitions for --enable-vtable-verify.
              * acinclude.m4:  Add --enable-vtable-verify and
              --disable-vtable-verify; define --enable-vtable-verify; define
              VTV_CXXFLAGS, VTV_PCH_CXXFLAGS and VTV_CXXLINKFLAGS.
              * config/abi/pre/gnu.ver: Export symbols for vtable verification.
              * libsupc++/Makefile.am: Define vtv_sources and add it to
              libsupc___la_SOURCES and libsupc__convenience_la_SOURCES.
              * libsupc++/vtv_stubs.cc: New file.
              * include/Makefile.am: Add VTV_PCH_CXXFLAGS to PCHFLAGS.
              * src/Makefile.am: Add VTV_CXXFLAGS to AM_CXXFLAGS; add
              VTV_CXXLINKFLAGS to CXXLINK.
              * src/c++98/Makefile.am: Comment out XTEMPLATE_FLAGS; add VTV_CXXFLAGS
              to AM_CXXFLAGS; add VTV_CXXXLINKFLAGS to CXXLINK.
              * src/C++11/Makefile.am: Ditto.
              * doc/xml/manual/configure.xml: Add entry for --enable-vtable-verify.
              * scripts/testsuite_flags.in: Add cxxvtvflags to Usage; cause
              cxxvtvflags to use VTV_CXXFLAGS and VTV_CXXLINKFLAGS.
              * testsuite/lib/libstdc++.exp: Add cxxvtvflags; add code to locate
              libvtv if --enable-vtable-verify was used; set cxxvtvflags; add
              cxxvtvflags to cxx_final.
              * testsuite/18_support/bad_exception/23591_thread-1.c: Add
              -fvtable-verify=none to compiler flags.
              * testsuite/17_intro/freestanding.cc: Add -fvtable-verify=none
              to compiler flags.
              * configure: Regenerated.
              * Makefile.in: Regenerated.
              * python/Makefile.in: Regenerated.
              * include/Makefile.in: Regenerated.
              * libsupc++/Makefile.in: Regenerated.
              * config.h.in: Regenerated.
              * po/Makefile.in: Regenerated.
              * src/Makefile.in: Regenerated.
              * src/c++98/Makefile.in: Regenerated.
              * src/c++11/Makefile.in: Regenerated.
              * doc/Makefile.in: Regenerated.
              * testsuite/Makefile.in: Regenerated.
      
      top level ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * configure.ac: Add target-libvtv to target_libraries; disable libvtv
              on non-linux systems; add target-libvtv to noconfigdirs; add
              libsupc++/.libs to C++ library search paths.
              * configure: Regenerated.
              * Makefile.def: Add libvtv to target_modules; make libvtv depend on
              libstdc++ and libgcc.
              * Makefile.in: Regenerated.
      
      include/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * vtv-change-permission.h: New file.
      
      contrib/ChangeLog:
      2013-08-06  Caroline Tice4  <cmtice@google.com>
      
              * gcc_update: Add libvtv files.
      
      libgcc/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              config.host (extra_parts): Add vtv_start.o, vtv_end.o
              vtv_start_preinit.o and vtv_end_preinit.o.
              configure.ac: Add code to check/set enable_vtable_verify.
              Makefile.in: Add rules to build vtv_*.o, if enable_vtable_verify is
              true.
              vtv_start_preinit.c: New file.
              vtv_end_preinit.c: New file.
              vtv_start.c: New file.
              vtv_end.c: New file.
              configure: Regenerated.
      
      gcc/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * gcc.c (VTABLE_VERIFICATION_SPEC): New definition.
              (LINK_COMMAND_SPEC): Add VTABLE_VERIFICATION_SPEC.
              * tree-pass.h: Add pass_vtable_verify.
              * varasm.c (assemble_variable): Add code to properly set the comdat
              section and name for the .vtable_map_vars section.
              (assemble_vtyv_preinit_initializer): New function.
              (default_sectin_type_flags):  Make sure .vtable_map_vars section has
              LINK_ONCE flag.
              * output.h: Add function decl for assemble_vtv_preinit_initializer.
              * vtable-verify.c: New file.
              * vtable-verify.h: New file.
              * flag-types.h (enum vtv_priority): Defintions for flag_vtable_verify
              initialiation levels.
              * timevar.def (TV_VTABLE_VERIFICATION): New definition.
              * passes.def: Insert pass_vtable_verify.
              * aclocal.m4: Reorder includes.
              * doc/invoke.texi: Add documentation for the flags -fvtable-verify=,
      	-fvtv-debug and -fvtv-counts.
              * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add vtv_start*.o,
      as appropriate, if -fvtable-verify=... is used.
              (GNU_USER_TARGET_ENDFILE_SPEC): Add vtv_end*.o as appropriate, if
              -fvtable-verify=... is used.
              * Makefile.in (OBJS):  Add vtable-verify.o to list.
              (vtable-verify.o): Add new build rule.
              (GTFILES): Add vtable-verify.c to list.
              * common.opt (fvtable-verify=): New flag.
              (vtv_priority): Values for fvtable-verify= flag.
              (fvtv-counts): New flag.
      (fvtv-debug): New flag.
              * tree.h (save_vtable_map_decl): New extern function decl.
      
      
      gcc/cp/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * Make-lang.in (*CXX_AND_OBJCXX_OBJS):  Add vtable-class-hierarchy.o to
              list.
              (vtable-class-hierarchy.o): Add build rule.
              * cp-tree.h (vtv_start_verification_constructor_init_function): New
              extern function decl.
              (vtv_finish_verification_constructor_init_function): New extern
              function decl.
              (build_vtbl_address): New extern function decl.
              (get_mangled_vtable_map_var_name): New extern function decl.
              (vtv_compute_class_hierarchy_transitive_closure): New extern function
              decl.
              (vtv_generate_init_routine): New extern function decl.
              (vtv_save_class_info): New extern function decl.
              (vtv_recover_class_info): New extern function decl.
              (vtv_build_vtable_verify_fndecl): New extern function decl.
              * class.c (finish_struct_1): Add call to vtv_save_class_info if
              flag_vtable_verify is true.
              * config-lang.in: Add vtable-class-hierarchy.c to gtfiles list.
              * vtable-class-hierarchy.c: New file.
              * mangle.c (get_mangled_vtable_map_var_name):  New function.
              * decl2.c (start_objects): Update function comment.
              (cp_write_global_declarations): Call vtv_recover_class_info,
              vtv_compute_class_hierarchy_transitive_closure and
              vtv_build_vtable_verify_fndecl, before calling
              finalize_compilation_unit, and call vtv_generate_init_rount after, IFF
              flag_vtable_verify is true.
              (vtv_start_verification_constructor_init_function): New function.
              (vtv_finish_verification_constructor_init_function): New function.
              * init.c (build_vtbl_address): Remove static qualifier from function.
      
      libvtv/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              Initial check-in of new vtable verification feature.
              * configure.ac : New file.
              * acinclude.m4 : New file.
              * Makefile.am : New file.
              * aclocal.m4 : New file.
              * configure.tgt : New file.
              * configure: New file (generated).
              * Makefile.in: New file (generated).
              * vtv_set.h : New file.
              * vtv_utils.cc : New file.
              * vtv_utils.h : New file.
              * vtv_malloc.cc : New file.
              * vtv_rts.cc : New file.
              * vtv_malloc.h : New file.
              * vtv_rts.h : New file.
              * vtv_fail.cc : New file.
              * vtv_fail.h : New file.
              * vtv_map.h : New file.
              * scripts/run-testsuite.sh : New file.
              * scripts/sum-vtv-counts.c : New file.
              * testsuite/parts-test-main.h : New file.
              * testusite/dataentry.cc : New file.
              * testsuite/temp_deriv.cc : New file.
              * testsuite/register_pair.cc : New file.
              * testsuite/virtual_inheritance.cc : New file.
              * testsuite/field-test.cc : New file.
              * testsuite/nested_vcall_test.cc : New file.
              * testsuite/template-list-iostream.cc : New file.
              * testsuite/register_pair_inserts.cc : New file.
              * testsuite/register_pair_inserts_mt.cc : New file.
              * testsuite/event.list : New file.
              * testsuite/parts-test-extra-parts-views.cc : New file.
              * testsuite/parts-test-extra-parts-views.h : New file.
              * testsuite/environment-fail-32.s : New file.
              * testsuite/parts-test-extra-parts.h : New file.
              * testsuite/temp_deriv2.cc : New file.
              * testsuite/dlopen_mt.cc : New file.
              * testsuite/event.h : New file.
              * testsuite/template-list.cc : New file.
              * testsuite/replace-fail.cc : New file.
              * testsuite/Makefile.am : New file.
              * testsuite/Makefile.in: New file (generated).
              * testsuite/mempool_negative.c : New file.
              * testsuite/parts-test-main.cc : New file.
              * testsuite/event-private.cc : New file.
              * testsuite/thunk.cc : New file.
              * testsuite/event-defintiions.cc : New file.
              * testsuite/event-private.h : New file.
              * testsuite/parts-test.list : New file.
              * testusite/register_pair_mt.cc : New file.
              * testsuite/povray-derived.cc : New file.
              * testsuite/event-main.cc : New file.
              * testsuite/environment.cc : New file.
              * testsuite/template-list2.cc : New file.
              * testsuite/thunk_vtable_map_attack.cc : New file.
              * testsuite/parts-test-extra-parts.cc : New file.
              * testsuite/environment-fail-64.s : New file.
              * testsuite/dlopen.cc : New file.
              * testsuite/so.cc : New file.
              * testsuite/temp_deriv3.cc : New file.
              * testsuite/const_vtable.cc : New file.
              * testsuite/mempool_positive.c : New file.
              * testsuite/dup_name.cc : New file.
      
      From-SVN: r201555
      Caroline Tice committed