Commit Graph

189 Commits

Author SHA1 Message Date
daan f7b94fe21c experiment with bcrypt api again 2020-09-06 08:33:27 -07:00
daan e740242978 link with advapi32 on windows 2020-09-06 08:29:08 -07:00
daan 53cbc68de3 display compiler in cmake summary 2020-07-26 00:21:10 -07:00
daan 95afd0509f make segment abandoned_next atomic; tsan passes without warnings now (issue #130) 2020-07-25 23:50:22 -07:00
daan 73c109a04e add cmake option to build with ubsan 2020-07-25 19:55:36 -07:00
daan 529d74a282 use O1 with thread sanitizer 2020-07-22 12:45:53 -07:00
Daan 56b58a8021
Merge pull request #267 from devnexen/haiku_support
haiku support.
2020-07-21 18:32:40 -07:00
daan 01da026314 add option to build with thread sanitizer 2020-07-21 09:10:45 -07:00
David Carlier 7e48eb033c haiku support.
TLS unsupported thus disabled.
2020-06-28 13:53:45 +00:00
Uwe L. Korn 1f08317f3c Add option to install directly in CMAKE_INSTALL_PREFIX 2020-05-30 10:36:37 +02:00
daan fd9faee5d4 update cmake with nicer message which targets are build 2020-05-04 11:01:11 -07:00
Daan ff4f1c3e5d
Merge branch 'dev' into cmake-build-variants 2020-05-04 09:51:09 -07:00
Daan 866fd0e8f5
Merge pull request #240 from andronat/master
Use position independent code (PIC) for static and object libraries.
2020-05-01 14:15:17 -07:00
Anastasios Andronidis 5c03e9dc79 Compile static and obj targets with PIC 2020-05-01 21:53:51 +01:00
daan 9a33f23b5f fix MI_SHOW_ERRORS on msvc 2020-04-28 11:11:23 -07:00
Daan 07e80aebb7
Merge branch 'dev' into xmalloc 2020-04-28 10:53:34 -07:00
Daan 9ba16f2df9
Merge pull request #232 from asl/cmake-err-warn-default
Add cmake option to specify whether warnings / errors are enabled by default
2020-04-28 10:51:30 -07:00
Anton Korobeynikov d4363bbaf8 Add possibility to selectively enable / disable builing of different targets. 2020-04-28 18:12:43 +03:00
Anton Korobeynikov 079b886feb Add cmake option to specify whether warnings / errors are enabled by default.
Currently warnings / errors are enabled by default in debug build.
Otherwise they could be enabled only via environmental variable or
API option call. Add possibility to specify the default during the
build time. This simplifies e.g. integration of the library into
bigger projects as no source changes would be required.
2020-04-28 16:44:44 +03:00
Anton Korobeynikov 2f1fc1df5c Add xmalloc()-like functionality.
xmalloc is a non-standard extension forcing malloc() to
abort should the memory allocation failed instead of returning a
null pointer. Such functionality is quite useful as it provides one
single point of error handling if the caller of malloc() does not
check the result (as it often does!) and segfault is ocurring somewhere
else. If more fine-grained control is necessary one could register a custom
error handler, however, this might not be an option while interposing.
2020-04-28 16:38:47 +03:00
Anton Korobeynikov 07d72f4fba Do not forget to include malloc zone implementation in the static object 2020-04-21 15:08:27 +03:00
David Carlier 80aeb1bd1d Fix compiler detection 2020-04-15 05:34:07 +01:00
David Carlier 6c5039bad1 Android build fix proposal.
malloc_usable_size has different signature on this platform.
thread and real time apis are part of bionic.
2020-04-14 14:20:56 +01:00
daan 69a0846478 add MI_PADDING flag to cmake to supress use of padding in debug mode 2020-04-07 10:01:18 -07:00
David Carlier 2884affbd7 Using host data rather. 2020-03-07 12:19:48 +00:00
David Carlier 854e81c11d build fix for arm, adding native arch flag to be able to generate
yield asm instruction.
2020-03-07 09:18:45 +00:00
Orkhan Hasanli b41183e8a3 Creation of symbolic link was failing. #166 2020-03-04 20:45:20 -05:00
daan 9062f39764 enable interpose separate from zones on macOS 2020-02-08 20:08:52 -08:00
daan 03b363a1c2 first working tls on macOS using interpose; still slow 2020-01-29 22:46:44 -08:00
daan 4faf412f53 move 'memory.c' to 'region.c' 2020-01-25 13:28:49 -08:00
daan 6fb434a99b use -fvisibility=hidden on clang as well 2020-01-23 10:31:47 -08:00
daan 9d7ac76d93 fix compilation under Intel C compiler (icc) 2020-01-19 18:35:45 -08:00
daan dbe721de39 dont compile test-stress.c as C++ code (or we get atomic compilation errors) 2020-01-17 15:45:12 -08:00
daan f4ee1760b8 Suppress C source compiled as C++ warning on clang 2020-01-17 15:39:41 -08:00
daan ba87a39d9f updated random cookie generation using OS primitives and chacha20 2019-12-22 19:37:49 -08:00
daan 6568059cc6 merge from dev 2019-11-21 16:28:28 -08:00
daan 74dbfc30be improved security by encoding NULL values; double free mitigation on by default; more precise free list corruption detection 2019-11-21 15:21:23 -08:00
Daan Leijen 56b9fac4bf merge from dev 2019-11-20 13:31:04 -08:00
Daan Leijen dccffea662 fix pr #173 by @zerodefect to use case-insensitive matching of the build type; also use MI_DEBUG_FULL option (instead of MI_CHECK_FULL) 2019-11-14 11:01:05 -08:00
daan 17ade3fca5 merge from dev 2019-11-13 17:52:20 -08:00
daan d4f54dcf30 remove numaif dependency on linux 2019-11-12 10:37:15 -08:00
Daan Leijen f0e02bab03 pr #168 by @zerodefect to update the install location 2019-11-08 12:22:03 -08:00
daan 6ccfb5a93e merge from dev 2019-11-07 11:00:50 -08:00
daan 56887aeb2f add MI_SECURE_FULL=ON as a cmake option to include double free mitigation 2019-11-07 10:59:45 -08:00
daan 378716c467 refactor and improve atomic bitmap usage 2019-11-07 10:26:52 -08:00
daan 9d6a5acb22 fix unix build warnings 2019-11-03 13:34:54 -08:00
daan 2c12d7f223 optimized numa calls; better Linux support 2019-11-01 22:01:52 -07:00
daan 2d10c78587 fix linux compilation 2019-11-01 20:19:00 -07:00
daan 2affdbbd2e stronger secure mode when defining MI_SECURE=4: checks for double free, corrupted free list, and invalid pointer frees. Performance is impacted but not too much -- more perf testing is needed 2019-10-18 18:11:04 -07:00
daan 3a697abf1f set SONAME and use symbolic link at install (issue #9 and #58) 2019-09-15 20:26:30 -07:00
daan 33f4ec4ac6 put new-delete overrides in separate header file 2019-09-15 19:19:00 -07:00
daan efe083a548 Merge branch 'master' into dev 2019-09-09 08:06:35 -07:00
Antoine Pitrou b69a4b52c0 Fix #147: provide CMake option for alternate TLS mechanism
This allows use of dlopen() with mimalloc on Unix.
2019-09-04 12:02:16 +02:00
daan d7982f8733 make output name not depend on build type capitalization (issue #144) 2019-09-02 09:57:39 -07:00
daan 8ef8ddecc5 Merge branch 'master' into dev 2019-09-02 09:53:34 -07:00
Antoine Pitrou cbc392434c Add an option to disable building tests 2019-08-28 17:26:56 +02:00
daan cf7bb70117 Merge branch 'master' into dev 2019-08-27 10:01:20 -07:00
Jim Huang 99e071cf2c Link with -lrt for older glibc
Quoted from Linux Programmer's Manual (2017-09-15):
    #include <time.h>
    int clock_gettime(clockid_t clk_id, struct timespec *tp);
    Link with -lrt (only for glibc versions before 2.17).

This patch adds additional checks for librt availability and append
target_link_libraries accordingly. librt is absent on macOS.

Fixed #139
2019-08-24 21:24:56 +08:00
daan 62de76a327 fix C++ compilation of stress test 2019-08-12 08:55:20 -07:00
daan 7b105c4810 improve layout of page for x64 2019-08-11 10:31:00 -07:00
daan ab022e4271 fix mimalloc-redirect path on windows cmake build 2019-07-23 15:00:13 -07:00
daan c02a0c9b49 ensure cmake uses C++ compilation with MSVC 2019-07-23 15:00:13 -07:00
daan f2f45ad5df fix cmake build on windows 2019-07-23 15:00:13 -07:00
daan 189ad0f81d small optimizations, use bitwise aligne 2019-07-23 15:00:13 -07:00
daan 306a542336 add mimalloc-override header file and use C++ compilation with msvc 2019-07-18 20:28:29 -07:00
daan ae1794a852 remove accidental test in cmake 2019-07-15 13:36:12 -07:00
daan ea9dbd1036 set better default options for performance 2019-07-15 13:19:26 -07:00
daan 8dc0b5345b Merge branch 'dev' into dev-exp 2019-07-14 16:50:38 -07:00
daan a6aa905731 make sure older cmake versions work for build 2019-07-14 14:47:59 -07:00
daan f844665c9f merge from dev-win 2019-07-10 22:57:37 -07:00
daan 12d3297db5 add allocator stress test to the test targets 2019-07-10 21:52:28 -07:00
daan 35b590de21 Merge branch 'dev' into dev-exp 2019-07-09 15:12:18 -07:00
daan cf8815854c fix cmake issues with OBJECT install 2019-07-09 11:32:24 -07:00
daan 493dfc4b82 merge with dev 2019-07-08 15:42:42 -07:00
daan fc35f6069a Add NO_SYSTEM_ENVIRONMENT_PATH and example of linking with the object file; pr #67 2019-07-08 13:37:41 -07:00
daan c3528203b5 fix compilation with C++, fix overrides in C++ to adhere to the spec (issue #26) 2019-07-07 18:11:21 -07:00
daan dd59a917ce Expose mi prefixed public standard implementations of various posix, unix, and c++ allocation functions. See issue #75 2019-07-07 13:44:33 -07:00
daan 8cb36c62e6 merge with dev branch 2019-07-02 16:44:35 -07:00
daan c465f6ae35 Merge branch 'master' into dev 2019-07-02 16:32:52 -07:00
daan 06bcea1761 Initial commit of separate memory region layer and improved large OS pages support, see 'memory.c' 2019-07-02 07:23:24 -07:00
Jan Christoph Uhde 408b76d103 make includes available for projects that add mimalloc as subdirectory 2019-07-02 11:12:04 +02:00
myd7349 a5b22af7ec fix object install error 2019-06-29 21:53:47 +08:00
daan ae47a2b13e Add initial testing file, test target, and readme about testing, issue #10, pr #57 2019-06-27 13:36:19 -07:00
Jim Huang 256eb97849 Avoid unnecessary symbol exposure with ELF-based systems
GCC's default visibility is "public" but can be changed to
"hidden" with the argument "-fvisibility=hidden".

Tested with x86_64 / Ubuntu Linux 18.04 LTS:

[before]
$ nm -g -C libmimalloc.so | grep "T " | wc -l
142

[after]
$ nm -g -C libmimalloc.so | grep "T " | wc -l
93

This patch does not change the build on macOS.
2019-06-25 10:00:22 +08:00
daan 91cb4cee8a use MI_ prefix for all options to better support subdirectory cmake, issue #3 2019-06-24 18:54:03 -07:00
Daan 30b8624d6e
Merge pull request #22 from myd7349/win32-cmake-patch
Fix CMake configuration on Windows
2019-06-24 18:19:49 -07:00
myd7349 b7c8d8f007 Fix CMake configuration on Windows
- Do not define MI_MALLOC_OVERRIDE when built as a static library
- Use different output names for shared lib and static lib
2019-06-25 08:02:17 +08:00
Jim Huang a667971cbf Apple rebrands "OS X" as "macOS"
In 2012, with the release of OS X 10.8 Mountain Lion, the name of the
system was shortened from Mac OS X to OS X. In 2016, with the release
of macOS 10.12 Sierra, the name was changed from OS X to macOS to
streamline it with the branding of Apple's other primary operating
systems: iOS, watchOS, and tvOS.

Reference: https://en.wikipedia.org/wiki/MacOS
2019-06-24 10:15:50 +08:00
daan b3212eef72 add cmake file 2019-06-19 16:52:36 -07:00