X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=README.md;h=a8318c823cca7dd026c284ce1521d95df731e7a1;hp=2d6dcaa2a4bfba1199c7dee5bcad5ec743acebf8;hb=4d1f67b9026ca2a11854929f66833ad3d13dd2da;hpb=5b46e39d0e4d2592853c7bfc11add02b1101c04b diff --git a/README.md b/README.md index 2d6dcaa..a8318c8 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Tested on: - FreeBSD 8.2/8.3/9.0/9.1/10.0 i386/amd64 - Solaris 10/11 i386 - Cygwin i386/amd64 - - MacOSX amd64 + - MacOS amd64/arm64 Should also work on: @@ -72,6 +72,9 @@ Should also work on: Linux ARM depends on running a Linux kernel 2.6.15 or better, GCC 4.4 or better. +The C compiler used needs to support at least C99. The C++ compiler used +needs to support at least C++11. + The GCC compiler versions 3.3, 3.4, 4.0, 4.1, 4.2, 4.3, 4.4 and 4.5 are supported, with the following exceptions: @@ -86,19 +89,13 @@ supported, with the following exceptions: - Alpha, ia64 and ARM architectures depend on GCC 4.x with atomic builtins support. For ARM this was introduced with GCC 4.4: http://gcc.gnu.org/gcc-4.4/changes.html. + - Linux aarch64 depends on GCC 5.1 or better because prior versions + perform unsafe access to deallocated stack. Clang version 3.0 (based on LLVM 3.0) is supported. -Building on MacOS X (Darwin) requires a work-around for processor -detection: - - - 32-bit: - - ./configure --build=i686-apple-darwin11 - - - 64-bit: - - ./configure --build=x86_64-apple-darwin11 +Glibc >= 2.4 should work but the older version we test against is +currently 2.17. For developers using the Git tree: @@ -106,7 +103,7 @@ This source tree is based on the autotools suite from GNU to simplify portability. Here are some things you should have on your system in order to compile the git repository tree : - - GNU autotools (automake >=1.10, autoconf >=2.50, autoheader >=2.50) + - GNU autotools (automake >=1.12, autoconf >=2.69) (make sure your system wide `automake` points to a recent version!) - GNU Libtool >=2.2 (for more information, go to http://www.gnu.org/software/autoconf/) @@ -388,7 +385,7 @@ For always-on debugging self-checks: ./configure --enable-rcu-debug For fine grained enabling of debugging self-checks, build -urserspace-rcu with DEBUG_RCU defined and compile dependent +userspace-rcu with DEBUG_RCU defined and compile dependent applications with DEBUG_RCU defined when necessary. Warning: Enabling this feature result in a performance penalty. @@ -439,6 +436,33 @@ In addition to the usual `make check` target, Userspace RCU features - `make bench`: long (many hours) benchmarks. +Known issues +------------ + +There is an application vs library compatibility issue between +applications built using Userspace RCU 0.10 headers linked against +Userspace RCU 0.11 or 0.12 shared objects. The problem occurs as +follows: + + - An application executable is built with _LGPL_SOURCE defined, includes + any of the Userspace RCU 0.10 urcu flavor headers, and is built + without the -fpic compiler option. + + - The Userspace RCU 0.10 library shared objects are updated to 0.11 + or 0.12 without rebuilding the application. + + - The application will hang, typically when RCU grace period + (synchronize_rcu) is invoked. + +Some possible work-arounds for this are: + + - Rebuild the application against Userspace RCU 0.11+. + + - Rebuild the application with -fpic. + + - Upgrade Userspace RCU to 0.13+ without installing 0.11 nor 0.12. + + Contacts --------