These defines were renamed in lldb git master, soon after the current
pinned version.
This fixes building with a later version of llvm than the pinned one.
These days, we have a working strip tool, so we can do a slightly
more straightforward procedure here.
In build-make.sh we still build with -Wl,-s, as we call a less
obvious install target there, in order to only install mingw32-make.sh,
not some header files and documentation.
Since clang 9.0.0 (34ec6929a1fb33716d0035dc0f1f164d7568b4dc
in llvm-project), it's no longer necessary to set this to be able
to use __cxa_thread_atexit (for TLS destructors). This brings the
behaviour closer to GCC, and reduces the amount of non-default
options used.
Notable changes since the previous version are:
- Added a lld option for requesting delay loading libraries
- Allowing using custom .edata from input object files in lld (for Wine)
- Fixed llvm-dlltool with symbol renaming with stdcall decorations
- Supporting merging resources from more than one resource object file in lld
- Improved error messages for duplicate or undefined symbols in lld
(including demangling C++ symbols and printing source locations
where possible)
- Made lld look for for more library name patterns, matching GNU ld
- Brushed up support for using LLDB for, and building on, mingw
- Implemented initial support for armv7 and aarch64 windows in LLDB
This contains new declarations that the latest version of llvm
requires, when building llvm for windows on aarch64.
Notable changes are:
- Fixed compatibility fallbacks for running libc++ on Windows 7
- Improved handling of multibyte functions with UCRT
- Fixed installing mingw-w64-crt and widl in paths that contain spaces
- Fixed sscanf with double output on arm/aarch64
- Improved math functions, in particular for arm/aarch64
This makes it easier to change the default win32 target when using
build-all.sh, and also makes it possible to change the version of
mingw-w64 that is used, which wasn't possible at all before.
On windows, we rename clang.exe to clang-$MAJOR.exe, and later
install clang.exe as a wrapper for the default architecture. But
if only building certain architectures, and the host architecture
isn't one of them, we shouldn't install any unprefixed clang.exe at
all.
For build-mingw-w64.sh to succeed when installing to such a path,
the mingw-w64 version has to be updated to the latest git master.
build-mingw-w64-libraries.sh still fails in this case, as libtool
fails to properly quote $LD in a test for whether the linker is GNU ld.
Since the default _WIN32_WINNT now is for Windows 7, psapi.h
redirects to PSAPI version 2, which is available in kernel32.dll
with a "K32" prefix on the function names (K32EnumProcessModules).
On some distributions, e.g. openSUSE, the libraries for 64 bit
architectures end up stored in <target>/<triplet>/lib64 instead of
plain "lib".
(This is caused by their use of a site script for configure, which
overrides libdir when the host triplet matches 64 bit architecture
names - even if it's a triple for cross compilation for a totally
different OS. This only affects the libraries and not mingw-w64-crt,
as the crt's makefiles manually set the output directory name.)
This fixes https://github.com/mstorsjo/llvm-mingw/issues/51.
This version contains fixes for wchar printf functions in how they
handle %s/%S formats.
This isn't the absolute latest version, as there's other commits further
ahead adding support for _FORTIFY_SOURCE (which has little to no effect
with Clang as it doesn't evaluate __builtin_object_size in inlined
contexts), and the commits for _FORTIFY_SOURCE caused a few regressions,
and things might still be a bit in flux (even though the current master
seems to work fine).
This makes cmake use relative paths to all source files, allowing ccache
to reuse compilation results from different source trees in different
directories.
Keep using LLVM_ENABLE_PROJECTS on msys, where symlinks aren't supported.
This updates compiler-rt, libunwind, libcxxabi and libcxx to a newer
version, matching the compiler.
This will be the official, canonical repo in the future.
For the non-dev Dockerfile build, this means that all the llvm based
subprojects need to be built in one RUN to avoid storing the llvm
checkout in the docker layers.
In this environment, symlinks don't exist but are made as copies.
In such cases, the -n option to ln doesn't work for making this
a no-op.
Alternatively, we could append "|| true", which would print an
error but continue.
When building on windows, the toolchain bin directory contains
prefixless wrappers named "gcc.exe" and "clang.exe", even though
the toolchain isn't functional yet at this stage. Restore the
original path before building widl.
A more complete solution might be to build widl first, before
adding the newly built toolchain to the path.
This version fixes deadlocks in winpthreads condvars (in certain
use patterns), uses the _UCRT define to request and signal the
use of UCRT, fixes the UCRT _vsnwprintf function, uses the
CRT's setjmp/longjmp on AArch64 if SEH is in use, and makes the
UCRT set the app type to console properly for such apps.
This version adds support for a version of the -pdb option to the MinGW
frontend to lld that can work without a parameter, and implements --help
and -v for the same frontend.
This saves a lot of diskspace, when symlinks are turned into full
copies of the tools on windows, as the symlinks only point to a small
wrapper instead of to the full tool.
When adding the terminator without incrementing arg and checking for
overflows with "arg > max_arg", we need to allocate space for one
extra element for the implicit terminator.
This contains the following changes relevant for mingw usage:
- A fix in a code generation bug affecting dwarf exception handling
on i686
- Setting the proper machine type in weak alias objects in import libraries,
making GNU binutils not reject such files outright
- Fixes for SEH generation for AArch64, for functions containing
jump tables
- Fixes to the calling convention of functions returning structs on AArch64
- Improvements in handling of dllexport of C++ template instantiations,
allowing building libc++ into a DLL without using --export-all-symbols
- Proper separators in the output of clang --print-search-dirs on
Windows
- A new flag --appcontainer to lld's mingw frontend
- Lld now has extra handling of crtend.o, fixing use of lld with gcc
based mingw setups, when using dwarf exceptions