[MinGW-Notify] [mingw] #41070: Please include libgccjit with MinGW GCC distribution

アーカイブの一覧に戻る
MinGW Notification List mingw****@lists*****
Thu Feb 4 07:31:00 JST 2021


#41070: Please include libgccjit with MinGW GCC distribution

  Open Date: 2020-12-23 17:28
Last Update: 2021-02-03 22:31

URL for this Ticket:
    https://osdn.net//projects/mingw/ticket/41070
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=41070

---------------------------------------------------------------------

Last Changes/Comment on this Ticket:
2021-02-03 22:31 Updated by: keith

Comment:

Reply To davidmalcolm
Looking at the patches themselves:
27-libgccjit-invalid-assertion.patch(1KB)
- Patch to correct invalid assumption in DIR_SEPARATOR verification assertion
Nicholas completely rewrote this code for Windows as part of c83027f32d9cca84959c7d6a1e519a0129731501.  Sorry again for not realizing it earlier.  I'd appreciate it if you could look over gcc/jit/jit-w32.c in his patch to see if you know of a better way to securely create a temporary directory on Windows (or, indeed, if there are other issues).
Sorry, but I simply could not accept Nicolas' gcc/jit/jit-w32.c, for MinGW.
The file, itself, implements two publicly visible functions:
print_last_error()This is basically a reproduction of the technique used by MinGW, in our implementation of dlerror(), except that print_last_error() dumps diagnostics directly to stderr, whereas dllerror() stores the diagnostic in a memory buffer, for subsequent use by the calling program, (in similar fashion to strerror()).  Furthermore, dlerror() guarantees that the diagnostic does not end with any trailing newline; print_last_error() offers no such guarantee.Since libgccjit, (without Nicolas' modification), already uses dlerror(), and MinGW already offers a serviceable implementation thereof, I fail to see a need for print_last_error().
win_mkdtemp()This substitute for mkdtemp(), (of which, once again, MinGW already has a perfectly serviceable implementation), presents real issues, from a MinGW perspective, and is, ultimately, the reason why I must reject this, as a viable MinGW patch.  Specifically:
The function gratuitously calls the Microsoft rand_s() function, to generate a random portion of the directory name with 10**6 (expressed in FORTRAN exponentiation syntax) degrees of freedom; this function is unsupported on any version of Windows, prior to Vista, when linking with MSVCRT.DLL, (as MinGW must do), but MinGW is committed to supporting earlier versions; the MinGW implementation of mkdtemp() suffers no such dependency limitation, (since it uses CryptGenRandom() instead of rand_s(), so is supported by all 32-bit Windows versions since Win95-OSR2), and additionally, offers 36**6 degrees of freedom in the generated directory name.
The function gratuitously makes implicit calls to ADVAPI32.DLL functions, for the purpose of associating a "user-only" ACL with the created temporary directory.  While the called functions should be available in WinNT versions of ADVAPI32.DLL, they are not available in Win9x versions.  Currently, MinGW's mkdtemp() makes no attempt to assign any such ACL; it could be easily adapted to do so, (although I am unconvinced of a necessity to do so), but any such adaptation would be required to use explicit linking, (via LoadLibrary() and GetProcAddress()), to preserve compatibility with Win9x.
Given the above, when I eventually progress to working from a tarball to which Nicolas' gcc/jit/jit-w32.c patch has been applied, I will be obliged to revert it, and persist with my own local patches.

---------------------------------------------------------------------
Ticket Status:

      Reporter: eliz
         Owner: keith
          Type: Feature Request
        Status: Open [Owner assigned]
      Priority: 5 - Medium
     MileStone: (None)
     Component: GCC
      Severity: 5 - Medium
    Resolution: None
---------------------------------------------------------------------

Ticket details:

ease add libgccjit to the binaries included in the MinGW GCC distributions.
This is required to be able to build projects that use libgccjit for JIT compilation of code.
One example of this is "gccemacs", a branch of GNU Emacs development (soon to land
on the master branch of Emacs) that compiles Emacs Lisp programs into native x86 code
for faster runtime performance.
Thank you.


-- 
Ticket information of MinGW - Minimalist GNU for Windows project
MinGW - Minimalist GNU for Windows Project is hosted on OSDN

Project URL: https://osdn.net/projects/mingw/
OSDN: https://osdn.net

URL for this Ticket:
    https://osdn.net/projects/mingw/ticket/41070
RSS feed for this Ticket:
    https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=41070



More information about the MinGW-Notify mailing list
アーカイブの一覧に戻る