Axel Naumann 061cd37390 Provide __cxa_atexit replacement through custom MemoryManager.
On some platforms, global destructors are registered through a call to
__cxa_atexit(dtor, 0/*args*/, __dso_handle). While __cxa_atexit can be resolved
by the regular MemoryManager, __dso_handle (representing the "current shared
library" such that the corresponding atexit function can be called on its
dlclose) can not be resolved by MCJIT. Instead, we provide our own, poining to
the ExecutionEngine, which in turn holds a "current module" that corresponds in
spirit to the shared library handle.

__cxa_atexit, on the other hand, needs to be re-wired: the interpreter needs to
destruct globals upon its destruction, and those globals from a certain module
when that module is unloaded.

Both is done through a custom MemoryManager, significantly reducing the
complexity of the previous ("JIT without MC") implementation.

The custom MemoryManager also forwards in case of a unknown symbols to the LazyFunctionCreators instead of using the generic
ExecutionEngine::InstallLazyFunctionCreator() which has no effect with MCJIT.
2015-02-11 10:57:36 +01:00
2014-08-13 16:08:36 +02:00
2014-02-27 12:49:09 +01:00
2014-12-16 11:06:04 +01:00
2014-11-06 12:13:29 +01:00
2014-01-07 11:43:53 +01:00
2014-08-13 16:08:36 +02:00
2014-05-15 13:51:55 +02:00
2014-05-11 18:27:58 +02:00

                         ______  __      ____  _   __  ______
                        / ____/ / /     /  _/ / | / / / ____/
                       / /     / /      / /  /  |/ / / / __
                      / /___  / /___  _/ /  / /|  / / /_/ /
                      \____/ /_____/ /___/ /_/ |_/  \____/

Linux: Linux Status

##DESCRIPTION Cling is an interactive C++ interpreter, built on top of Clang and LLVM compiler infrastructure. Cling realizes the read-eval-print loop (REPL) concept, in order to leverage rapid application development. Implemented as a small extension to LLVM and Clang, the interpreter reuses their strengths such as the praised concise and expressive compiler diagnostics.

Further information & demos

Please note that some of the resources are rather old and most of the stated limitations are outdated.

##INSTALLATION ###Binaries We offer binary snapshots for download at https://ecsft.cern.ch/dist/cling

###Source CLING source depends on the LLVM and CLANG headers and libraries. You will also need CMake >= 2.6.1 or GNU Make to build all of those packages and subversion and git to get the source code.

####Building Building LLVM and CLANG you must:

  • Check out the sources:
    git clone http://root.cern.ch/git/llvm.git src
    cd src
    git checkout cling-patches
    cd tools
    git clone http://root.cern.ch/git/cling.git
    git clone http://root.cern.ch/git/clang.git
    cd clang
    git checkout cling-patches
  • Configure, build and install them, either using CMake:
    cd ..
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/some/install/dir \
          -DLLVM_TARGETS_TO_BUILD=CBackend\;CppBackend\;X86 \
          -DCMAKE_BUILD_TYPE=Debug \
          ../src
    make
    make install
  • or GNU Make (see ../src/configure --help for all options):
    cd ..
    mkdir build
    cd build
    ../src/configure --prefix=/some/install/dir
    make
    make install

#####Cling Packaging Tool Cling's tree has a user-friendly, command-line utility written in Python called Cling Packaging Tool (CPT) which can build Cling from source and generate installer bundles for a wide range of platforms.

If you have Cling's source cloned locally, you can find the tool in tools/packaging directory. Alternatively, you can download the script manually, or by using wget:

wget https://raw.githubusercontent.com/vgvassilev/cling/master/tools/packaging/cpt.py
chmod +x cpt.py

Full documentation of CPT can be found in tools/packaging.

##USAGE /some/install/dir/bin/cling '#include <stdio.h>' 'printf("Hello World!\n")' To get started run: /some/install/dir/bin/cling --help or type /some/install/dir/bin/cling [cling]$ .help

##DEVELOPERS' CORNER: We have doxygen documentation of cling's code at: http://cling.web.cern.ch/cling/doxygen/ ###CONTRIBUTIONS Every contribution is very welcome. It is considered as a donation and its copyright and any other related rights become exclusive ownership of the person who merged the code or in any other case the main developers. In order for a contribution to be accepted it has to obey the previously established rules for contribution acceptance in cling's work flow and rules.

Description
Cling - The Interactive C++ Interpreter
Readme 21 MiB
Languages
C++ 71.5%
C 16.4%
Python 5.6%
HTML 3.3%
CMake 2.7%
Other 0.5%