1. 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
  2. 06 Jun, 2013 1 commit
  3. 24 May, 2013 2 commits
  4. 21 May, 2013 1 commit
  5. 16 May, 2013 1 commit
    • Obsolete Solaris 9 support · 0baddc45
      	gcc:
      	* config.gcc: Obsolete *-*-solaris2.9*.
      	* doc/install.texi (Specific, *-*-solaris2*): Document it.
      
      	contrib:
      	* config-list.mk (LIST): Add -enable-obsolete for
      	sparc-sun-solaris2.9, i686-solaris2.9.
      
      From-SVN: r198969
      Rainer Orth committed
  6. 13 May, 2013 1 commit
  7. 30 Apr, 2013 1 commit
  8. 18 Apr, 2013 2 commits
  9. 22 Mar, 2013 1 commit
  10. 06 Mar, 2013 1 commit
    • make-obstacks-texi.pl: New. · 34d3a672
      contrib/
      2013-03-06  Tobias Burnus  <burnus@net-b.de>
      
              * make-obstacks-texi.pl: New.
      
      libiberty/
      2013-03-06  Tobias Burnus  <burnus@net-b.de>
      
              * libiberty.texi: Update comment, remove lowersections.
              * obstacks.texi: Regenerate.
      
      From-SVN: r196486
      Tobias Burnus committed
  11. 27 Feb, 2013 1 commit
  12. 06 Feb, 2013 4 commits
  13. 04 Feb, 2013 2 commits
  14. 16 Jan, 2013 1 commit
  15. 15 Jan, 2013 2 commits
  16. 04 Jan, 2013 1 commit
  17. 05 Dec, 2012 1 commit
  18. 03 Dec, 2012 1 commit
  19. 30 Nov, 2012 2 commits
  20. 29 Nov, 2012 4 commits
  21. 28 Nov, 2012 2 commits
  22. 19 Nov, 2012 1 commit
  23. 14 Nov, 2012 1 commit
  24. 12 Nov, 2012 2 commits
  25. 07 Nov, 2012 1 commit
    • Add a contrib script for comparing the performance of two sets of · bff0e529
      compiler runs.
      
      Usage documentation is in the script.
      
      The script produces output of the form:
      
      $ compare_two_ftime_report_sets "Log0/*perf" "Log3/*perf" 
      
      Arithmetic sample for timevar log files
      "Log0/*perf"
      and selecting lines containing "TOTAL" with desired confidence 95 is 
      trial count is 4, mean is 443.022 (95% confidence in 440.234 to 445.811),
      std.deviation is 1.75264, std.error is 0.876322
      
      Arithmetic sample for timevar log files
      "Log3/*perf"
      and selecting lines containing "TOTAL" with desired confidence 95 is 
      trial count is 4, mean is 441.302 (95% confidence in 436.671 to 445.934),
      std.deviation is 2.91098, std.error is 1.45549
      
      The first sample appears to be 0.39% larger,
      with 60% confidence of being larger.
      To reach 95% confidence, you need roughly 14 trials,
      assuming the standard deviation is stable, which is iffy.
      
      Tested on x86_64 builds.
      
      
      Index: contrib/ChangeLog
      
      2012-11-05  Lawrence Crowl  <crowl@google.com>
      
      	* compare_two_ftime_report_sets: New.
      
      From-SVN: r193277
      Lawrence Crowl committed
  26. 02 Nov, 2012 1 commit
    • Add a new option --clean_build to validate_failures.py · b436bf38
      This is useful when you have two builds of the same compiler.  One with
      your changes.  The other one, a clean build at the same revision.
      Instead of using a manifest file, --clean_build will compare the
      results it gather from the patched build against those it gathers from
      the clean build.
      
      Usage
      
      $ cd /top/of/patched/gcc/bld
      $ validate_failures.py --clean_build=clean/bld-gcc
      Source directory: /usr/local/google/home/dnovillo/gcc/trunk
      Build target:     x86_64-unknown-linux-gnu
      Getting actual results from build directory .
              ./x86_64-unknown-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum
              ./x86_64-unknown-linux-gnu/libffi/testsuite/libffi.sum
              ./x86_64-unknown-linux-gnu/libgomp/testsuite/libgomp.sum
              ./x86_64-unknown-linux-gnu/libgo/libgo.sum
              ./x86_64-unknown-linux-gnu/boehm-gc/testsuite/boehm-gc.sum
              ./x86_64-unknown-linux-gnu/libatomic/testsuite/libatomic.sum
              ./x86_64-unknown-linux-gnu/libmudflap/testsuite/libmudflap.sum
              ./x86_64-unknown-linux-gnu/libitm/testsuite/libitm.sum
              ./x86_64-unknown-linux-gnu/libjava/testsuite/libjava.sum
              ./gcc/testsuite/g++/g++.sum
              ./gcc/testsuite/gnat/gnat.sum
              ./gcc/testsuite/ada/acats/acats.sum
              ./gcc/testsuite/gcc/gcc.sum
              ./gcc/testsuite/gfortran/gfortran.sum
              ./gcc/testsuite/obj-c++/obj-c++.sum
              ./gcc/testsuite/go/go.sum
              ./gcc/testsuite/objc/objc.sum
      Getting actual results from build directory clean/bld-gcc
              clean/bld-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libffi/testsuite/libffi.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libgomp/testsuite/libgomp.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libgo/libgo.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/boehm-gc/testsuite/boehm-gc.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libatomic/testsuite/libatomic.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libmudflap/testsuite/libmudflap.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libitm/testsuite/libitm.sum
              clean/bld-gcc/x86_64-unknown-linux-gnu/libjava/testsuite/libjava.sum
              clean/bld-gcc/gcc/testsuite/g++/g++.sum
              clean/bld-gcc/gcc/testsuite/gnat/gnat.sum
              clean/bld-gcc/gcc/testsuite/ada/acats/acats.sum
              clean/bld-gcc/gcc/testsuite/gcc/gcc.sum
              clean/bld-gcc/gcc/testsuite/gfortran/gfortran.sum
              clean/bld-gcc/gcc/testsuite/obj-c++/obj-c++.sum
              clean/bld-gcc/gcc/testsuite/go/go.sum
              clean/bld-gcc/gcc/testsuite/objc/objc.sum
      
      SUCCESS: No unexpected failures.
      
      2012-11-02  Diego Novillo  <dnovillo@google.com>
      
      	* testsuite-management/validate_failures.py: Add option
      	--clean_build to compare test results against another
      	build.
      
      From-SVN: r193105
      Diego Novillo committed
  27. 01 Nov, 2012 1 commit
    • This patch renames sbitmap iterators to unify them with the bitmap iterators. · d4ac4ce2
      Remove the unused EXECUTE_IF_SET_IN_SBITMAP_REV, which has an unconventional
      interface.
      
      Rename the sbitmap_iter_* functions to match bitmap's bmp_iter_* functions.
      Add an additional parameter to the initialization and next functions to
      match the interface in bmp_iter_*.  This extra parameter is mostly hidden
      by the use of the EXECUTE_IF macros.
      
      Rename the EXECUTE_IF_SET_IN_SBITMAP macro to EXECUTE_IF_SET_IN_BITMAP.  Its
      implementation is now identical to that in bitmap.h.  To prevent redefinition
      errors, both definitions are now guarded by #ifndef.  An alternate strategy
      is to simply include bitmap.h from sbitmap.h.  As this would increase build
      time, I have elected to use the #ifndef version.  I do not have a strong
      preference here.
      
      The sbitmap_iterator type is still distinctly named because it is often
      declared in contexts where the bitmap type is not obvious.  There are less
      than 40 uses of this type, so the burden to modify it when changing bitmap
      types is not large.
      
      Tested on x86-64, config-list.mk testing.
      
      
      Index: gcc/ChangeLog
      
      2012-10-31  Lawrence Crowl  <crowl@google.com>
      
      	* sbitmap.h (sbitmap_iter_init): Rename bmp_iter_set_init and add
      	unused parameter to match bitmap iterator.  Update callers.
      	(sbitmap_iter_cond): Rename bmp_iter_set.  Update callers.
      	(sbitmap_iter_next): Rename bmp_iter_next and add unused parameter to
      	match bitmap iterator.  Update callers.
      	(EXECUTE_IF_SET_IN_SBITMAP_REV): Remove unused.
      	(EXECUTE_IF_SET_IN_SBITMAP): Rename EXECUTE_IF_SET_IN_BITMAP and
      	adjust to be identical to the definition in bitmap.h.  Conditionalize
      	the definition based on not having been defined.  Update callers.
      	* bitmap.h (EXECUTE_IF_SET_IN_BITMAP): Conditionalize the definition
      	based on not having been defined.  (To match the above.)
      
      From-SVN: r193069
      Lawrence Crowl committed