MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla
Your Search Results

    Installing Dehydra

    Prerequisites

    • Mercurial 1.0 is needed to access source repositories. Make sure that the mq extension is enabled.
    • SpiderMonkey provides scripting capabilities for Dehydra.
    • GCC 4.5, with the package gcc-4.5-plugin-dev installed. (Alternately, build from source)
    • A modern Linux distribution. Dehydra is not supported on Mac OS X.

    Building SpiderMonkey

    It is recommended that you use SpiderMonkey revision AURORA_BASE_20110705 when building Dehydra.

    cd $HOME
    hg clone http://hg.mozilla.org/mozilla-central/
    cd mozilla-central
    hg update AURORA_BASE_20110705
    cd js/src
    autoconf-2.13
    mkdir $HOME/obj-js
    cd $HOME/obj-js
    $HOME/mozilla-central/js/src/configure --enable-optimize --disable-debug
    make
    

    It has to be checked whether later/newer branches (like AURORA_BASE_20120131) are working, too.

    Please also note that autoconf v2.13 is really needed: it does not work with e.g. v2.68.

    There is no need for some installation after make.

    You can skip the next section "Building GCC 4.5" if you are using gcc 4.6 or above.

    Building GCC 4.5

    For Treehydra's process_tree_decl to work, when compiling with g++, you must use a patched GCC 4.5 before building Dehydra.

    cd $HOME
    # obtain GCC 4.5.3 (see http://gcc.gnu.org/mirrors.html for alternate mirrors)
    wget http://www.netgull.com/gcc/releases/gcc-4.5.3/gcc-4.5.3.tar.bz2
    tar -jxvf gcc-4.5.3.tar.bz2
    
    # apply PLUGIN_FINISH_DECL patch
    wget https://bug559964.bugzilla.mozilla.o....cgi?id=457606 -O finish_decl.diff
    cd gcc-4.5.3
    patch -p0 < ../finish_decl.diff
    
    # build GCC
    cd ..
    mkdir gcc-objdir
    mkdir gcc-dist
    
    cd gcc-objdir
    ../gcc-4.5.3/configure --disable-bootstrap --enable-languages=c,c++ --prefix=$PWD/../gcc-dist
    make
    make install
    

    Building Dehydra and Treehydra

    Building Dehydra requires SpiderMonkey development headers from the previous step. CXX should point to your copy of GCC 4.5.

    It is recommended to get the latest Dehydra sources by checking out from Mercurial. (Obsolete Dehydra releases can be found on the Mozilla ftp site.)

    hg clone http://hg.mozilla.org/rewriting-and-analysis/dehydra/
    cd dehydra
    export CXX=/usr/bin/g++
    ./configure \
       --js-headers=$HOME/obj-js/dist/include \
       --js-libs=$HOME/obj-js
    make
    
    # run dehydra and treehydra tests
    make check
    

    Usage

    Dehydra checking can be performed directly within the Mozilla build. To enable static checking of a Mozilla build, see Building with static checking.

    To run Dehydra manually using G++, add the -fplugin and -fplugin-arg-gcc_dehydra-script/-fplugin-arg-gcc_treehydra-script flags to specify the location of the plugin and the location of the analysis script:

    g++ -quiet -fplugin=$HOME/dehydra/gcc_dehydra.so -fplugin-arg-gcc_dehydra-script=$DEHYDRA_SCRIPT \
      -fshort-wchar $CPPFILE -S -o /dev/null
    

    For example, in the tests directory created by the installation procedure, I can run a Dehydra script 'a.js' on a Mozilla file like this:

    g++ -quiet -fplugin=../gcc_dehydra.so \
    -fplugin-arg=a.js -fshort-wchar -fpreprocessed \
    /home/dmandelin/builds/dehydra-gcc/browser/app/nsBrowserApp.ii -o /dev/null
    

    The -fshort-wchar is required for running against Firefox, but not necessarily for other codebases.

    To generate preprocessed Mozilla source files (*.ii), see the Pork Install Instructions.

    See Also

    Document Tags and Contributors

    Tags: 
    Last updated by: Sheppy,
    Hide Sidebar