This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Ping] Port of VTV for Cygwin and MinGW
- From: Caroline Tice <cmtice at google dot com>
- To: Patrick Wollgast <patrick dot wollgast at rub dot de>
- Cc: bkoz at gnu dot org, ktietz at redhat dot com, GCC Patches <gcc-patches at gcc dot gnu dot org>, libstdc++ at gcc dot gnu dot org
- Date: Mon, 22 Sep 2014 23:16:26 -0700
- Subject: Re: [Ping] Port of VTV for Cygwin and MinGW
- Authentication-results: sourceware.org; auth=none
- References: <53FF0C8C dot 8090507 at rub dot de> <5411213F dot 1070104 at rub dot de> <CABtf2+RU7frwOXOX2FF8Tmfc6ssrpfFVj1Vuue4cZt19FpSWtQ at mail dot gmail dot com> <CABtf2+QWxvv1FUW_-kD3d0FBhYQWkZcPWAx8ASies_4j7thmoA at mail dot gmail dot com> <541B5B7E dot 2090300 at rub dot de>
Ok, your patch looks OK to me, but I can only approve the libvtv file
changes. The changes in the other files also seem ok to me, but
someone else will have to approve the modifications in them:
gcc/config/i386/cygwin.h
gcc/config/i386/mingw-w64.h
gcc/config/i386/mingw32.h
gcc/cp/vtable-class-hierarchy.c
gcc/varasm.c
libgcc/Makefile.in
libgcc/config.host
libiberty/obstack.c
libstdc++-v3/acinclude.m4
libstdc++-v3/libsupc++/Makefile.am
libstdc++-v3/libsupc++/vtv_stubs.cc
-- Caroline Tice
cmtice@google.com
On Thu, Sep 18, 2014 at 3:23 PM, Patrick Wollgast
<patrick.wollgast@rub.de> wrote:
> Added Benjamin De Kosnik as a c++ runtime libs maintainer and Kai Tietz
> as Windows/Cygwin/MinGW maintainer.
>
>>> In changes to gcc/config/i386/cygwin.h mingw-w64.h and mingw32.h, you forgot to handle the "fvtable-verify=preinit" options. fvtable-veriy=preinit should cause vtv_start_preinit.o to be added to the STARTFILE_SPEC and vtv_end_preinit.o to be added to the ENDFILE_SPEC (as in gcc/config/gnu-user.h). I expect you will also need to add it to your LIB_SPEC definitions in those config files.
>>>
>
> Like discussed via email I set preinit=std. This required additional
> changes in gcc/cp/vtable-class-hierarchy.c.
>
>>> in libgcc/config.host, the indentation looks wrong on the line 660 (where you add the extra parts for vtable verification for the case "i[34567]86-*-mingw*)". It also looks wrong on line 709 (again, adding extra parts, for case "x86_64-*-mingw*)". The rest of the changes in that file look ok, but someone else will need to approve them.
>>>
>
> Indentation fixed.
>
>>> The changes in libgcc/Makefile.in and gcc/varasm.c look ok to me, but someone will will have to approve them since I don't have authority to approve changes there.
>>>
>>> in libstdc++-v3/libsupc++:
>>>
>>> Your change in Makefile.am looks ok to me; your changes in vtv_stubs.cc look ok, except that you appear to have messed up the indentations in the function headers (both for the declarations and the actual functions). Also there is a typo in your comment: 'build' should be 'built'. But content-wise, the change looks fine. Again, someone else will have to actually approve these changes since I do not have that authority.
>>>
>
> Typo and indentation fixed.
>
>>> in libstdc++-v3/src/Makefile.am also looks ok to me; someone else will have to give final approval.
>>>
>>>
>>> in libvtv/Makefile.am, you need to fix the indentation at line 64 (vtv_stubs.cc):
>>>
>>> vtv_stubs_sources = \
>>> vtv_start.c \
>>> vtv_stubs.cc \
>>> vtv_end.c
>>>
>
> Indentation fixed.
>
>>> the rest of the changes in that file look good.
>>>
>>> Why did you make a copy of obstack.c in libvtv rather than using the one in libiberty? It would be better not to make a second copy of the source file if that can be avoided...
>>>
>
> I removed obstack.c from libvtv and added the changes from
> libvtv/obstack.c to libiberty/obstack.c with #ifdefs.
>
>>> in libvtv/vtv_malloc.cc:
>>>
>>> lines 207-213: Fix the indentation on the second line of call to VirtualAlloc.
>>> #if defined (__CYGWIN__) || defined (__MINGW32__)
>>> if ((allocated = VirtualAlloc(NULL, size, MEM_RESERVE|MEM_COMMIT,
>>> PAGE_READWRITE)) == 0)
>>> #else
>>> if ((allocated = mmap (NULL, size, PROT_READ | PROT_WRITE,"
>>> MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)) == 0)
>>> #endif
>>>
>>> Remove extra blank line at line 216.
>>>
>
> Line removed and indentation fixed.
>
>>> in libvtv/vtv_rts.cc:
>>>
>>> Your version of the function read_section_offset_and_length has several lines that exceed the 80 character limit; please fix that. Your function iterate_modules also has one or two lines that are too long, and it needs a function comment.
>>>
>
> Character per line are now correct and comment added.
>
>>> in libvtv/vtv_utils.cc:
>>>
>>> In the function __vtv_open_log, you seem to have the following code twice:
>>>
>>> #ifdef __MINGW32__
>>> mkdir (logs_prefix);
>>> #else
>>> mkdir (logs_prefix, S_IRWXU);
>>> #endif
>>>
>>> was there a reason for this, or is this an accident (in which case the second occurrence should be removed)?
>>>
>
> Should have been 'log_dir' instead of 'logs_prefix' the 2nd time. Fixed now.
>
> regards
> Patrick