Commit Graph

448 Commits

Author SHA1 Message Date
kobalicek
d38b12a2b5 Switched to a newer testing framework, fixed warnings on AArch64 2023-03-05 15:28:27 +01:00
kobalicek
76520a513d Use MFD_CLOEXEC when using memfd_create, documentation update 2023-03-05 13:23:53 +01:00
kobalicek
915186f6c5 [Bug] Virtual memory changes - addressing remaining issues on NetBSD
Changes related to VirtMem
  * Moved memory mapping code to mapMemory() and unmapMemory() helper functions
  * Added MemoryFlags::kMapShared to optionally allow MAP_SHARED when necessary
  * Clarified that MAP_SHARED is used by dual mapping by default
  * Extends MemoryFlags::kMMapMax... to use PROT_MPROTECT on NetBSD
  * Changed NetBSD dual mapping code to use MAP_SHARED to avoid COW

Changes related to JitAllocator
  * Propagate error from VirtMem (not just OOM) when VirtMem allocation failed
  * Added more tests to verify that RW + RX regions share the same content
2023-03-02 15:53:45 +01:00
Nicolas Roussel
d4dfd8e865 [Bug] Don't compile formatter API of disabled backends (#400) 2023-02-28 18:34:59 +01:00
kobalicek
c87476dd5d [Bug] Use ReadWrite scope to fill memory in JitAllocator::shrink() (MAP_JIT) 2023-02-27 20:41:08 +01:00
kobalicek
965d19506f [CI] Updated build matrix, updated docs regarding CI 2023-02-25 00:46:33 +01:00
kobalicek
8552e286c2 [CI] Updated to use build-actions new prepare-environment 2023-02-23 16:18:07 +01:00
kobalicek
d5b2cd2ba8 [Bug] Don't check for TARGET_OS_XXX before checking for __APPLE__ (VirtMem) 2023-02-23 08:43:42 +01:00
kobalicek
9d33c892f7 [Bug] Use mremap() to allocate a dual mapped region on NetBSD
In addition, always enable DualMapping when RWX pages are not
possible to allocate in JitAllocator, because otherwise the
allocator would not be able to allocate memory for JIT code
execution.

New CI runners to test FreeBSD, NetBSD, and OpenBSD are also
provided.
2023-02-23 00:40:20 +01:00
uvxwx
8c31a8f34f JitRuntime: removed duplicate code (#397) 2023-02-18 19:48:58 +01:00
kobalicek
e136425673 [Bug] Added unsigned case to imul with 16-bit and 32-bit immediate 2023-01-18 16:49:19 +01:00
kobalicek
f97475e5ab Fixed a signed/unsigned conversion warning when compiling for OSX target 2023-01-17 13:08:22 +01:00
kobalicek
3ee3846283 [ABI] Raised ABI version due to recent changes 2023-01-16 14:55:03 +01:00
kobalicek
0186d3022d [ABI] Optimized size of instruction name data (X86, AArch64) 2023-01-16 00:25:48 +01:00
kobalicek
001c5231e6 [ABI] Added more CPU feature identifiers and detection (X86) 2023-01-16 00:16:56 +01:00
kobalicek
1ed8b77f5b [ABI] Added CpuFeatures to Target and CodeHolder, improved test_perf 2023-01-16 00:10:56 +01:00
kobalicek
a9ac13536e [Bug] Removed a debugging printf() 2023-01-08 21:49:01 +01:00
kobalicek
8a33b814d6 [Bug] Assign inline comments to Invoke/Func nodes, annotate without Logger 2023-01-08 14:34:36 +01:00
kobalicek
6a414ea141 Added a possibility to reset a red zone in FuncFrame 2023-01-08 14:34:07 +01:00
kobalicek
9f6d677615 [Bug] Fixed push/pop RW instruction data (segment and GP interfering each other) 2023-01-08 13:54:47 +01:00
kobalicek
5c18fcafc5 [Bug] Don't repeat comment as inline comment when formatting a Builder/Compiler Node 2023-01-07 11:57:56 +01:00
kobalicek
5b5b0b3877 [CI] Updated CI configurations 2022-12-10 15:07:55 +01:00
kobalicek
45f3b764b3 [Bug] Fixed a ModRM/MR check in X86 assembler (mov instruction) (fixes #392) 2022-11-26 00:05:25 +01:00
Matthias Moninger
0c03ed2f74 Use static constexpr for RegTraits to make it possible to use asmjit in CLR environment (fixes #386) 2022-11-10 16:58:41 +01:00
aegistudio
5af57595a9 [Bug] Fixed LDURSW instruction on AArch64 (#389)
The instruction was wrongly described as supporting both W/X registers, however, it only supports X register.
2022-11-10 10:11:05 +01:00
Herman Semenov
ae63ced6dd Fixed offset index predicate in arm::Mem::post() (#388) 2022-11-04 09:54:19 +01:00
kobalicek
8f2c237b83 Added x86::Mem::cloneResized() to complement cloneAdjusted() and cloneBroadcasted() 2022-10-18 18:43:48 +02:00
kobalicek
15a6036618 Fixed iOS compilation (reworked MAP_JIT detection, and pthread_jit_write_protect_np() support) 2022-10-09 19:30:14 +02:00
Viktor Chlumský
bb3dc125fa Visual Studio 2015/2017 compatibility (#383) 2022-10-09 13:05:20 +02:00
Peter Meerwald-Stadler
8dd64c32ac [Doc] Fixed some typos (#382) 2022-10-07 10:58:58 +02:00
kobalicek
052b4430e9 Fixed indirect jumps to a single label (Compiler) (fixes #380) 2022-09-18 10:26:53 +02:00
kobalicek
5c469e3f7c Reversed the order of visualizing shuffles (via ExplainImm) to reflect their composition 2022-07-24 17:04:00 +02:00
kobalicek
3502a8fe0d [Build] Changed CMAKE_CXX_SIMULATE_ID to CMAKE_CXX_COMPILER_FRONTEND_VARIANT as that seems to be the valid variable for detecting a MSVC frontend 2022-07-24 13:51:53 +02:00
kobalicek
2ae2d897f4 [CI] Use newer macos images as the older ones were deprecated 2022-07-21 21:52:33 +02:00
kobalicek
c59847629d Use casting to suppress -Wbitwise-instead-of-logical warning instead of suppressing it globally 2022-07-02 10:03:51 +02:00
Orvid King
d3fbf7c9bc Fix an instance of -Wdeprecated-copy (#376) 2022-06-29 00:34:28 +02:00
kobalicek
35f92e8706 [Bug] The compiler should not bail when there is data before the FuncEnd node 2022-06-27 12:10:40 +02:00
kobalicek
70209cddd7 [Bug] Added a missing JitAllocator::query() (fixes #375) 2022-06-25 21:28:19 +02:00
kobalicek
06d0badec5 Suppress -Wbitwise-instead-of-logical warning that was introduced by clang 14 2022-06-22 00:30:34 +02:00
kobalicek
d0cdd70168 [Bug] Fixed incorrect encoding of LDRSH instruction with [base+imm] addressing (AArch64) (fixes #372) 2022-06-20 09:16:39 +02:00
kobalicek
24863770d6 [Doc] Updated documentation to use new API (fixes not fixed #368) 2022-06-17 12:35:21 +02:00
kobalicek
4244182486 [Doc] Updated documentation to use new API instead of the removed one (fixes #368) 2022-06-17 12:32:34 +02:00
kobalicek
d925605671 [Bug] Fixed incorrect encoding of LDRSB and LDRSH with [base+index] (AArch64) (fixes #370) 2022-06-17 12:26:34 +02:00
kobalicek
33a31f04e8 [Bug] Fixed queryFeatures() to properly return AVX-512 requirements of shift instructions that use memory operands
[Bug] Fixed queryFeatures() to properly return AVX-512 requirements of some floating-point conversion instructions
[Opt] Slightly improved the performance of BitWordIterator and friends possibly taking advantage of BMI extensions
[API] Removed BitWordFlipIterator that was never used by the library
[Enh] Log the whole instruction if the validation fails in asmjit::Builder
2022-06-05 22:59:38 +02:00
kobalicek
a4cb51b532 [Bug] Fixed not cloberring YMM|ZMM registers in function calls that preserve only low 128-bits of vector registers 2022-04-10 00:32:57 +02:00
kobalicek
8fdee13aea [Opt] Added a feature to the Compiler to remove dead moves (moves to itself) when it's provable that it's safe 2022-04-06 13:20:00 +02:00
Adrian Vogelsgesang
752eb38a4d [Bug] Fix formatting of anonymous labels (#362)
Anonymous labels accidentally called `sb.append` instead of
`sb.appendFormat` which messes up the label's formatting.
2022-04-05 13:18:10 +02:00
Adrian Vogelsgesang
a876e4d1cd Fixed typos in comments (#361) 2022-04-02 00:26:56 +02:00
kobalicek
e41f1c0fd7 Cleaned up AArch64 RAPass to not shadow variables in _rewrite() (Fixes #359) 2022-04-01 00:41:54 +02:00
kobalicek
7342f7d78d Added a pseudo instruction 'loadAddressOf()' to load a memory address into a register (Compiler/AArch64) 2022-03-27 22:33:35 +02:00