| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
| |
With /Z7, no .pdb file is generated, so trying to link it during build
fails on my machine even though it's okay on CI.
By the way, in my local testing, no .pdb is generated in cwd at runtime
even without the /Fd option. I guess we can pass it just in case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With MSVC, MJIT uses the /Fd option on an installed PDB file when
compiling. Combined with the /Zi option, this causes the PDB file to be
modified every time MJIT compiles. Concurrent modifications to the same
PDB file is known to cause problems. MSVC even has an option, /FS to
deal with it. When running MJIT tests in parallel, sometimes this leads
to corrupting the PDB file, breaking subsequent compilations. On CI,
we get messages like these:
rb_mjit_header-3.1.0.pdb is not the pdb file that was used when this precompiled header was created, recreate the precompiled header.
To avoid this race, use the /Z7 option when building precompiled header,
which asks the compiler to put debug info into the .obj file,
eliminating the need for pointing the compiler to the PDB file for the
precompiled header.
The /Fd option is changed to use a unique path based on the name of the
dll output. Because of the /debug linker flag, we generate a PDB file
at runtime even though we use /Z7.
There are a couple things missing from this change:
- Because MJIT uses the interpreter's CFLAGS build option and that
contains /Zi, putting /Z7 at the end leads to a build warning
- With /Z7 no PDB file is built anymore, so the code for installing
the PDB file can be removed
There might also be other problems with this change I haven't noticed
while developing this change using Github Actions. I don't have a
Windows dev environment with Visual Studio so I can't finish this
change easily. Please feel free to complete this change if it makes
sense.
Note:
- On master, you can see the PDB file changing with llvm-pdbutil or a
simple checksum. There is an age field in the file that is bumped
- I'm not sure if users can specify compile flags on MSVC. If they
couldn't, maybe it's easier to change MJIT's compile options to
use /Z7 when building the precompile header.
- MJIT could pass different options at runtime to generate fewer
files. Right now it inherits the /DEBUG linker flag which causes
a PDB file to be generated at runtime even though /Z7 is used.
Relevant MSVC docs:
- [/Zi,/Z7](https://docs.microsoft.com/en-us/cpp/build/reference/z7-zi-zi-debug-information-format?view=msvc-160)
- [/DEBUG](https://docs.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info?view=msvc-160)
- [/FS](https://docs.microsoft.com/en-us/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-160)
|
| |
|
|
|
|
|
| |
Now that we're using the jit function entry point, we don't need the
scraper. Thank you for your service, scraper. ❤️
|
|
|
|
| |
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[BCryptGenRandom] is available since Windows Vista / Windows
Server 2008.
Regarding [CryptGenRandom]:
> This API is deprecated. New and existing software should start
> using Cryptography Next Generation APIs. Microsoft may remove
> this API in future releases.
[BCryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
[CryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
|
| |
|
|
|
|
|
| |
* Get rid of command substitution for cmd.exe.
* Separate RM1 command to remove single file sans directory.
|
| |
|
| |
|
| |
|
|
|
|
| |
Not to be concatenated with the preceding `--with-`* option.
|
| |
|
|
|
|
|
|
| |
This reverts commit ac86fcbfd0bab8667d277aa575bc5b81e5135d3c.
This change broke "--disable-shared --with-static-linked-ext".
|
| |
|
|
|
|
|
| |
Hostx64\x86\nmake.exe sets AS to ml64 which targets amd64, but we
need assembler for x86.
|
| |
|
|
|
|
| |
It is included in libruby, which is linked into the main programs.
|
|
|
|
|
|
| |
Pointed out by xtkoba (Tee KOBAYASHI).
Fixes [Bug #17946]
|
|
|
|
|
| |
Use MACHINE for x86 CPU family, ARCH is CPU model name (i386) and
cannot be x86.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement long path support on Windows by applying Microsoft's
recommended application manifest.
To make this work on both Visual C++ and MinGW, include the manifest as
a resource when generating the resource files. This way it will be
embedded into the executables generated by both compilers.
It's important for the manifest resource to have ID 1, otherwise GCC
will embed a default manifest.
Note that in addition to this, the user needs to have [long paths enabled]
either by modifying the registry or by enabling a group policy.
[long paths enabled]: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As it is overridden by the definition in common.mk, instead define
YEAR, MONTH and DAY which are used there.
This macro is useful for daily build&installation by the
combination with "relative-load", for example:
```sh
$ ./configure --prefix=/. --enable-load-relative \
--with-destdir='$(HOME)/.rbenv/versions/$(RUBY_RELEASE_DATE)'
```
This can install images usable by rbenv per days.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
19cc24b34b0490b7c2779eec521fe0089e05f183 and fixups.
|
|
|
|
|
| |
As ruby_set_debug_option() is called before ruby_sysinit(),
CRITICAL_SECTIONs are not initialized yet.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
As final path name includes the namespace prefix, so expand room
for it in path name buffer.
|
| |
|
| |
|
|
|
|
|
| |
Output preprocessed files under the corresponding directory to the
source files.
|
| |
|
| |
|
|
|
|
|
|
| |
Should use the given codepage argument.
Co-Authored-By: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
|
|
| |
Makes no sense any longer.
|