[Ping] Port of VTV for Cygwin and MinGW

Caroline Tice cmtice@google.com
Tue Sep 23 06:16:00 GMT 2014


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



More information about the Gcc-patches mailing list