Port of VTV for Cygwin and MinGW
Patrick Wollgast
patrick.wollgast@rub.de
Thu Aug 28 11:04:00 GMT 2014
This patch contains a port of VTV -fvtable-verify=std for Cygwin and MinGW.
Since weak symbols on Windows and Linux are implemented differently, and
VTV should have the possibility to be switched on and off, the structure
of the feature had to be modified.
On Linux libstdc++ contains the weak stub functions of VTV. For Cygwin
and MinGW they have been removed, due to the difference of weak symbols.
On Linux and on Windows libstdc++ itself gets build with
-fvtable-verify=std. Since libvtv gets build after libstdc++, and
libstdc++ doesn't contain the stub functions any more, 'undefined
reference' errors are thrown during linking of libstdc++. To prevent
these errors during the linking process a libvtv-0.dll gets build from
the stub functions before libstdc++-6.dll is linked.
At the end of the build process two VTV dlls have been build. One is
called libvtv-0.dll, containing the real functions, the other is called
libvtv_stubs-0.dll, containing the stub functions. Depending on whether
libvtv-0.dll is first found in the dll search path or
libvtv_stubs-0.dll, renamed to libvtv-0.dll, the real functions or the
stub functions are used.
Testing:
The test builds were configured the following way:
Linux 64bit (from patched and unpatched trunk):
/path/to/configure --prefix=/prefix/gcc-vtv-bin-64
--enable-libstdcxx-threads --enable-vtable-verify=yes
MinGW 32bit cross compiled:
/path/to/configure --target=i686-w64-mingw32
--prefix=/prefix/mingw-vtv-bin-32 --with-gnu-ld --with-gnu-as
--enable-fully-dynamic-string --disable-multilib
--enable-libstdcxx-threads --enable-vtable-verify=yes
MinGW 64bit cross compiled:
/path/to/configure --target=x86_64-w64-mingw32
--prefix=/prefix/mingw-vtv-bin-64 --with-gnu-ld --with-gnu-as
--enable-fully-dynamic-string --disable-multilib
--enable-libstdcxx-threads --enable-vtable-verify=yes
Cygwin 64bit:
/path/to/configure --enable-languages=c,c++ --enable-libstdcxx-threads
--enable-vtable-verify=yes
At Linux the patched and unpatched version resulted in the same number
of passed tests with 'make check-target-libvtv'.
Since MinGW was cross compiled the test cases couldn't be built and run
with 'make check-target-libvtv'. Therefore they were built with the
attached makefiles and tested afterwards on Windows 7 64bit. Some test
cases contain Linux specific parts and weren't tested. See the makefiles
for further information. Additionally virtual_func_test_min_UAF.cpp was
also built and tested. All built tests passed.
Cygwin was just tested on gcc 4.9.0, because the current trunk isn't
building for me. Even the clean trunk without the patch attached to this
mail. On Cygwin with gcc 4.9.0 VTV worked.
Besides the test cases Botan was also built and tested (gcc 4.9.0) with
MinGW 32bit and VTV.
regards
-------------- next part --------------
* config/i386/cygwin.h (STARTFILE_SPEC): Add vtv_start.o,
if -fvtable-verify=std is used.
* config/i386/mingw-w64.h (STARTFILE_SPEC): Likewise.
* config/i386/mingw32.h (STARTFILE_SPEC): Likewise.
* config/i386/cygwin.h (ENDFILE_SPEC): Add vtv_end.o,
if -fvtable-verify=std is used.
* config/i386/mingw32.h (ENDFILE_SPEC): Likewise.
* config/i386/cygwin.h (LIB_SPEC): Pass -lvtv and -lpsapi,
if -fvtable-verify=std is used.
* config/i386/mingw-w64.h (LIB_SPEC): Likewise.
* config/i386/mingw32.h (LIB_SPEC): Likewise.
* 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/obstack.c : New file.
* 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 and mprotect 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.
-------------- next part --------------
all:
### -O2
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/bb_tests.cc -o ./bb_tests-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/const_vtable.cc -o ./const_vtable-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dataentry.cc -o ./dataentry-O2.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-lib.cpp -o ./derived-lib-O2.exe
# no lib.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-main.cpp -o ./derived-main-O2.exe
# no lib.h
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dup_name.cc -o ./dup_name-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/environment.cc -o ./environment-O2.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-defintions.cpp -o ./event-defintions-O2.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-main.cpp -o ./event-main-O2.exe
# undefined reference to 'Event::Event()'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-private.cpp -o ./event-private-O2.exe
# undefined reference to 'Event::*()'
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/mul_inh.cc -o ./mul_inh-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/nested_vcall_test.cc -o ./nested_vcall_test-O2.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.cpp -o ./parts-test-extra-parts-views-O2.exe
# undefined reference to 'ExtraParts::*()'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts.cpp -o ./parts-test-extra-parts-O2.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-main.cpp -o ./parts-test-main-O2.exe
# undefined reference to 'ExtraPartsViews::ExtraPartsViews()'
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/povray-derived.cc -o ./povray-derived-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair.cc -o ./register_set_pair-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc -o ./register_set_pair_inserts-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list-iostream.cc -o ./template-list-iostream-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list.cc -o ./template-list-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list2.cc -o ./template-list2-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/test1.cc -o ./test1-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk.cc -o ./thunk-O2.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc -o ./thunk_vtable_map_attack-O2.exe
# no sigjmp_buf, etc.
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/v8-test-2.cc -o ./v8-test-2-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtfunc-test.cc -o ./virtfunc-test-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtual_inheritance.cc -o ./virtual_inheritance-O2.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/xlan-test.cc -o ./xlan-test-O2.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc -o ./mempool_negative-O2.exe
# no sigjmp_buf, etc.
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc -o ./mempool_positive-O2.exe
# no siginfo_t, etc.
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc -o ./register_set_pair_inserts_mt-O2.exe
# no pthread_*
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc -o ./register_set_pair_mt-O2.exe
# no pthread_*
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen.cc -o ./dlopen-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen_mt.cc -o ./dlopen_mt-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/field-test.cc -o ./field-test-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/replace-fail.cc -o ./replace-fail-O2.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/so.cc -o ./so-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv.cc -o ./temp_deriv-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv2.cc -o ./temp_deriv2-O2.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv3.cc -o ./temp_deriv3-O2.exe
# no dlfcn.h
### -O0
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/bb_tests.cc -o ./bb_tests-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/const_vtable.cc -o ./const_vtable-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dataentry.cc -o ./dataentry-O0.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-lib.cpp -o ./derived-lib-O0.exe
# no lib.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-main.cpp -o ./derived-main-O0.exe
# no lib.h
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dup_name.cc -o ./dup_name-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/environment.cc -o ./environment-O0.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-defintions.cpp -o ./event-defintions-O0.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-main.cpp -o ./event-main-O0.exe
# undefined reference to 'Event::Event()'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-private.cpp -o ./event-private-O0.exe
# undefined reference to 'Event::*()'
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/mul_inh.cc -o ./mul_inh-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/nested_vcall_test.cc -o ./nested_vcall_test-O0.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.cpp -o ./parts-test-extra-parts-views-O0.exe
# undefined reference to 'ExtraParts::*()'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts.cpp -o ./parts-test-extra-parts-O0.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-main.cpp -o ./parts-test-main-O0.exe
# undefined reference to 'ExtraPartsViews::ExtraPartsViews()'
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/povray-derived.cc -o ./povray-derived-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair.cc -o ./register_set_pair-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc -o ./register_set_pair_inserts-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list-iostream.cc -o ./template-list-iostream-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list.cc -o ./template-list-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list2.cc -o ./template-list2-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/test1.cc -o ./test1-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk.cc -o ./thunk-O0.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc -o ./thunk_vtable_map_attack-O0.exe
# no sigjmp_buf, etc.
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/v8-test-2.cc -o ./v8-test-2-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtfunc-test.cc -o ./virtfunc-test-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtual_inheritance.cc -o ./virtual_inheritance-O0.exe
i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/xlan-test.cc -o ./xlan-test-O0.exe
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc -o ./mempool_negative-O0.exe
# no sigjmp_buf, etc.
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc -o ./mempool_positive-O0.exe
# no siginfo_t, etc.
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc -o ./register_set_pair_inserts_mt-O0.exe
# no pthread_*
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc -o ./register_set_pair_mt-O0.exe
# no pthread_*
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen.cc -o ./dlopen-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen_mt.cc -o ./dlopen_mt-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/field-test.cc -o ./field-test-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/replace-fail.cc -o ./replace-fail-O0.exe
# undefined reference to 'WinMain'
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/so.cc -o ./so-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv.cc -o ./temp_deriv-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv2.cc -o ./temp_deriv2-O0.exe
# no dlfcn.h
#i686-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv3.cc -o ./temp_deriv3-O0.exe
# no dlfcn.h
-------------- next part --------------
all:
### -O2
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/bb_tests.cc -o ./bb_tests-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/const_vtable.cc -o ./const_vtable-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dataentry.cc -o ./dataentry-O2.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-lib.cpp -o ./derived-lib-O2.exe
# no lib.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-main.cpp -o ./derived-main-O2.exe
# no lib.h
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dup_name.cc -o ./dup_name-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/environment.cc -o ./environment-O2.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-defintions.cpp -o ./event-defintions-O2.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-main.cpp -o ./event-main-O2.exe
# undefined reference to 'Event::Event()'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-private.cpp -o ./event-private-O2.exe
# undefined reference to 'Event::*()'
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/mul_inh.cc -o ./mul_inh-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/nested_vcall_test.cc -o ./nested_vcall_test-O2.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.cpp -o ./parts-test-extra-parts-views-O2.exe
# undefined reference to 'ExtraParts::*()'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts.cpp -o ./parts-test-extra-parts-O2.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-main.cpp -o ./parts-test-main-O2.exe
# undefined reference to 'ExtraPartsViews::ExtraPartsViews()'
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/povray-derived.cc -o ./povray-derived-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair.cc -o ./register_set_pair-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc -o ./register_set_pair_inserts-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list-iostream.cc -o ./template-list-iostream-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list.cc -o ./template-list-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list2.cc -o ./template-list2-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/test1.cc -o ./test1-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk.cc -o ./thunk-O2.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc -o ./thunk_vtable_map_attack-O2.exe
# no sigjmp_buf, etc.
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/v8-test-2.cc -o ./v8-test-2-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtfunc-test.cc -o ./virtfunc-test-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtual_inheritance.cc -o ./virtual_inheritance-O2.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/xlan-test.cc -o ./xlan-test-O2.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc -o ./mempool_negative-O2.exe
# no sigjmp_buf, etc.
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc -o ./mempool_positive-O2.exe
# no siginfo_t, etc.
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc -o ./register_set_pair_inserts_mt-O2.exe
# no pthread_*
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc -o ./register_set_pair_mt-O2.exe
# no pthread_*
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen.cc -o ./dlopen-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen_mt.cc -o ./dlopen_mt-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/field-test.cc -o ./field-test-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/replace-fail.cc -o ./replace-fail-O2.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/so.cc -o ./so-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv.cc -o ./temp_deriv-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv2.cc -o ./temp_deriv2-O2.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O2 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv3.cc -o ./temp_deriv3-O2.exe
# no dlfcn.h
### -O0
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/bb_tests.cc -o ./bb_tests-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/const_vtable.cc -o ./const_vtable-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dataentry.cc -o ./dataentry-O0.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-lib.cpp -o ./derived-lib-O0.exe
# no lib.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/derived-main.cpp -o ./derived-main-O0.exe
# no lib.h
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/dup_name.cc -o ./dup_name-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/environment.cc -o ./environment-O0.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-defintions.cpp -o ./event-defintions-O0.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-main.cpp -o ./event-main-O0.exe
# undefined reference to 'Event::Event()'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/event-private.cpp -o ./event-private-O0.exe
# undefined reference to 'Event::*()'
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/mul_inh.cc -o ./mul_inh-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/nested_vcall_test.cc -o ./nested_vcall_test-O0.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.cpp -o ./parts-test-extra-parts-views-O0.exe
# undefined reference to 'ExtraParts::*()'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-extra-parts.cpp -o ./parts-test-extra-parts-O0.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/parts-test-main.cpp -o ./parts-test-main-O0.exe
# undefined reference to 'ExtraPartsViews::ExtraPartsViews()'
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/povray-derived.cc -o ./povray-derived-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair.cc -o ./register_set_pair-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc -o ./register_set_pair_inserts-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list-iostream.cc -o ./template-list-iostream-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list.cc -o ./template-list-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/template-list2.cc -o ./template-list2-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/test1.cc -o ./test1-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk.cc -o ./thunk-O0.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc -o ./thunk_vtable_map_attack-O0.exe
# no sigjmp_buf, etc.
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/v8-test-2.cc -o ./v8-test-2-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtfunc-test.cc -o ./virtfunc-test-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/virtual_inheritance.cc -o ./virtual_inheritance-O0.exe
x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.cc/xlan-test.cc -o ./xlan-test-O0.exe
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc -o ./mempool_negative-O0.exe
# no sigjmp_buf, etc.
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc -o ./mempool_positive-O0.exe
# no siginfo_t, etc.
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc -o ./register_set_pair_inserts_mt-O0.exe
# no pthread_*
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc -o ./register_set_pair_mt-O0.exe
# no pthread_*
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen.cc -o ./dlopen-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/dlopen_mt.cc -o ./dlopen_mt-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/field-test.cc -o ./field-test-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/replace-fail.cc -o ./replace-fail-O0.exe
# undefined reference to 'WinMain'
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/so.cc -o ./so-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv.cc -o ./temp_deriv-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv2.cc -o ./temp_deriv2-O0.exe
# no dlfcn.h
#x86_64-w64-mingw32-g++ -v -fvtable-verify=std -O0 /home/a/Projects/gcc/libvtv/testsuite/other-tests/temp_deriv3.cc -o ./temp_deriv3-O0.exe
# no dlfcn.h
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vtv_cygmin.patch
Type: text/x-patch
Size: 53478 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20140828/4206efb3/attachment.bin>
More information about the Libstdc++
mailing list