Add ltrace (and libelf) utilities.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Jul 13 12:22:34 2007 +0000 (2007-07-13)
changeset 245134ac2c35c49
parent 244 d5a7240240c5
child 246 372bc84bea36
Add ltrace (and libelf) utilities.
Marked as BROKEN for others to debug that if they need it.
TODO
config/debug/ltrace.in
config/tools/libelf.in
scripts/build/debug/ltrace.sh
scripts/build/tools/libelf.sh
tools/addToolVersion.sh
     1.1 --- a/TODO	Fri Jul 13 12:15:53 2007 +0000
     1.2 +++ b/TODO	Fri Jul 13 12:22:34 2007 +0000
     1.3 @@ -15,6 +15,6 @@
     1.4    - Memcheck          http://hald.dnsalias.net/projects/memcheck/
     1.5    - MemCheck Deluxe   http://prj.softpixel.com/mcd/
     1.6    - Memwatch          http://www.linkdata.se/sourcecode.html
     1.7 -  + ltrace            ???
     1.8 +  ! ltrace            ftp://ftp.debian.org/debian/pool/main/l/ltrace/
     1.9    O strace            http://sourceforge.net/projects/strace/
    1.10    - Valgrind          http://valgrind.org/
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/config/debug/ltrace.in	Fri Jul 13 12:22:34 2007 +0000
     2.3 @@ -0,0 +1,41 @@
     2.4 +# ltrace
     2.5 +
     2.6 +menuconfig LTRACE
     2.7 +    bool
     2.8 +    prompt "ltrace"
     2.9 +    default n
    2.10 +    depends on BROKEN
    2.11 +    select LIBELF
    2.12 +    help
    2.13 +      ltrace is currently BROKEN! It depends on libelf, and I don't
    2.14 +      know how to configure/compile that so that ltrace can successfully
    2.15 +      use it. I you manage to build ltrace (and libelf!), please be so
    2.16 +      kind as to tell me! Thank you!
    2.17 +
    2.18 +if LTRACE
    2.19 +
    2.20 +choice
    2.21 +    bool
    2.22 +    prompt "ltrace version"
    2.23 +
    2.24 +config LTRACE_V_0_3_36
    2.25 +    bool
    2.26 +    prompt "0.3.36"
    2.27 +    depends on OBSOLETE
    2.28 +
    2.29 +config LTRACE_V_0_4
    2.30 +    bool
    2.31 +    prompt "0.4"
    2.32 +
    2.33 +# CT_INSERT_VERSION_ABOVE
    2.34 +# Don't remove above line!
    2.35 +endchoice
    2.36 +
    2.37 +config LTRACE_VERSION
    2.38 +    string
    2.39 +    default "0.3.36" if LTRACE_V_0_3_36
    2.40 +    default "0.4" if LTRACE_V_0_4
    2.41 +# CT_INSERT_VERSION_STRING_ABOVE
    2.42 +# # Don't remove above line!
    2.43 +
    2.44 +endif
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/config/tools/libelf.in	Fri Jul 13 12:22:34 2007 +0000
     3.3 @@ -0,0 +1,84 @@
     3.4 +# libelf config file
     3.5 +
     3.6 +menuconfig LIBELF
     3.7 +    bool
     3.8 +    prompt "libelf"
     3.9 +    default n
    3.10 +    depends on BROKEN
    3.11 +    help
    3.12 +      libelf lets you read, modify or create ELF files in an
    3.13 +      architecture-independent way.
    3.14 +
    3.15 +      libelf is BROKEN! If you manage to make it actually _work_,
    3.16 +      please be so kind as to tell me. (By working, I mean it is
    3.17 +      useable at least by ltrace.) Thank you!
    3.18 +
    3.19 +if LIBELF
    3.20 +
    3.21 +choice
    3.22 +    bool
    3.23 +    prompt "libelf version"
    3.24 +
    3.25 +config LIBELF_V_0_8_0
    3.26 +    bool
    3.27 +    prompt "0.8.0"
    3.28 +    depends on OBSOLETE
    3.29 +
    3.30 +config LIBELF_V_0_8_2
    3.31 +    bool
    3.32 +    prompt "0.8.2"
    3.33 +    depends on OBSOLETE
    3.34 +
    3.35 +config LIBELF_V_0_8_3
    3.36 +    bool
    3.37 +    prompt "0.8.3"
    3.38 +    depends on OBSOLETE
    3.39 +
    3.40 +config LIBELF_V_0_8_4
    3.41 +    bool
    3.42 +    prompt "0.8.4"
    3.43 +    depends on OBSOLETE
    3.44 +
    3.45 +config LIBELF_V_0_8_5
    3.46 +    bool
    3.47 +    prompt "0.8.5"
    3.48 +    depends on OBSOLETE
    3.49 +
    3.50 +config LIBELF_V_0_8_6
    3.51 +    bool
    3.52 +    prompt "0.8.6"
    3.53 +    depends on OBSOLETE
    3.54 +
    3.55 +config LIBELF_V_0_8_7
    3.56 +    bool
    3.57 +    prompt "0.8.7"
    3.58 +    depends on OBSOLETE
    3.59 +
    3.60 +config LIBELF_V_0_8_8
    3.61 +    bool
    3.62 +    prompt "0.8.8"
    3.63 +    depends on OBSOLETE
    3.64 +
    3.65 +config LIBELF_V_0_8_9
    3.66 +    bool
    3.67 +    prompt "0.8.9"
    3.68 +
    3.69 +# CT_INSERT_VERSION_ABOVE
    3.70 +# Don't remove above line!
    3.71 +endchoice
    3.72 +
    3.73 +config LIBELF_VERSION
    3.74 +    string
    3.75 +    default "0.8.0" if LIBELF_V_0_8_0
    3.76 +    default "0.8.2" if LIBELF_V_0_8_2
    3.77 +    default "0.8.3" if LIBELF_V_0_8_3
    3.78 +    default "0.8.4" if LIBELF_V_0_8_4
    3.79 +    default "0.8.5" if LIBELF_V_0_8_5
    3.80 +    default "0.8.6" if LIBELF_V_0_8_6
    3.81 +    default "0.8.7" if LIBELF_V_0_8_7
    3.82 +    default "0.8.8" if LIBELF_V_0_8_8
    3.83 +    default "0.8.9" if LIBELF_V_0_8_9
    3.84 +# CT_INSERT_VERSION_STRING_ABOVE
    3.85 +# Don't remove above line!
    3.86 +
    3.87 +endif
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/scripts/build/debug/ltrace.sh	Fri Jul 13 12:22:34 2007 +0000
     4.3 @@ -0,0 +1,44 @@
     4.4 +# Build script for ltrace
     4.5 +
     4.6 +is_enabled="${CT_LTRACE}"
     4.7 +
     4.8 +do_print_filename() {
     4.9 +    [ "${CT_LTRACE}" = "y" ] || return 0
    4.10 +    echo "ltrace-${CT_LTRACE_VERSION}.orig"
    4.11 +}
    4.12 +
    4.13 +do_debug_ltrace_get() {
    4.14 +    CT_GetFile "ltrace_${CT_LTRACE_VERSION}.orig" ftp://ftp.de.debian.org/debian/pool/main/l/ltrace/
    4.15 +    # Create a link so that the following steps are easier to do:
    4.16 +    cd "${CT_TARBALLS_DIR}"
    4.17 +    ltrace_ext=`CT_GetFileExtension "ltrace_${CT_LTRACE_VERSION}.orig"`
    4.18 +    ln -sf "ltrace_${CT_LTRACE_VERSION}.orig${ltrace_ext}" "ltrace-${CT_LTRACE_VERSION}${ltrace_ext}"
    4.19 +}
    4.20 +
    4.21 +do_debug_ltrace_extract() {
    4.22 +    CT_ExtractAndPatch "ltrace-${CT_LTRACE_VERSION}"
    4.23 +}
    4.24 +
    4.25 +do_debug_ltrace_build() {
    4.26 +    CT_DoStep INFO "Installing ltrace"
    4.27 +    mkdir -p "${CT_BUILD_DIR}/build-ltrace"
    4.28 +    CT_Pushd "${CT_BUILD_DIR}/build-ltrace"
    4.29 +
    4.30 +    CT_DoLog EXTRA "Configuring ltrace"
    4.31 +#    CFLAGS="-I${CT_SYSROOT_DIR}/usr/include"                \
    4.32 +#    LDFLAGS="-L${CT_SYSROOT_DIR}/usr/include"               \
    4.33 +    "${CT_SRC_DIR}/ltrace-${CT_LTRACE_VERSION}/configure"   \
    4.34 +        --build=${CT_BUILD}                                 \
    4.35 +        --host=${CT_TARGET}                                 \
    4.36 +        --prefix=/usr
    4.37 +
    4.38 +    CT_DoLog EXTRA "Building ltrace"
    4.39 +    make
    4.40 +
    4.41 +    CT_DoLog EXTRA "Installing ltrace"
    4.42 +    make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install
    4.43 +
    4.44 +    CT_Popd
    4.45 +    CT_EndStep
    4.46 +}
    4.47 +
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/scripts/build/tools/libelf.sh	Fri Jul 13 12:22:34 2007 +0000
     5.3 @@ -0,0 +1,48 @@
     5.4 +# Build script for libelf
     5.5 +
     5.6 +is_enabled="${CT_LIBELF}"
     5.7 +
     5.8 +do_print_filename() {
     5.9 +    [ "{CT_LIBELF}" = "y" ] || return 0
    5.10 +    echo "libelf-${CT_LIBELF_VERSION}"
    5.11 +}
    5.12 +
    5.13 +do_tools_libelf_get() {
    5.14 +    # The server hosting libelf will return an "HTTP 300 : Multiple Choices"
    5.15 +    # error code if we try to download a file that does not exists there.
    5.16 +    # So we have to request the file with an explicit extension.
    5.17 +    CT_GetFile "libelf-${CT_LIBELF_VERSION}" .tar.gz http://www.mr511.de/software/
    5.18 +}
    5.19 +
    5.20 +do_tools_libelf_extract() {
    5.21 +    CT_ExtractAndPatch "libelf-${CT_LIBELF_VERSION}"
    5.22 +}
    5.23 +
    5.24 +do_tools_libelf_build() {
    5.25 +    CT_DoStep INFO "Installing libelf"
    5.26 +    mkdir -p "${CT_BUILD_DIR}/build-libelf"
    5.27 +    CT_Pushd "${CT_BUILD_DIR}/build-libelf"
    5.28 +
    5.29 +    CT_DoLog EXTRA "Configuring libelf"
    5.30 +    CC="${CT_TARGET}-gcc"                                   \
    5.31 +    "${CT_SRC_DIR}/libelf-${CT_LIBELF_VERSION}/configure"   \
    5.32 +        --build=${CT_BUILD}                                 \
    5.33 +        --host=${CT_TARGET}                                 \
    5.34 +        --target=${CT_TARGET}                               \
    5.35 +        --prefix=/usr                                       \
    5.36 +        --enable-compat                                     \
    5.37 +        --enable-elf64                                      \
    5.38 +        --enable-shared                                     \
    5.39 +        --enable-extended-format                            \
    5.40 +        --enable-static                                     2>&1 |CT_DoLog ALL
    5.41 +
    5.42 +    CT_DoLog EXTRA "Building libelf"
    5.43 +    make    2>&1 |CT_DoLog ALL
    5.44 +
    5.45 +    CT_DoLog EXTRA "Installing libelf"
    5.46 +    make instroot="${CT_SYSROOT_DIR}" install   2>&1 |CT_DoLog ALL
    5.47 +
    5.48 +    CT_Popd
    5.49 +    CT_EndStep
    5.50 +}
    5.51 +
     6.1 --- a/tools/addToolVersion.sh	Fri Jul 13 12:15:53 2007 +0000
     6.2 +++ b/tools/addToolVersion.sh	Fri Jul 13 12:22:34 2007 +0000
     6.3 @@ -8,7 +8,7 @@
     6.4  Usage: ${myname} <tool> [option] <version>
     6.5    'tool' in one of:
     6.6      --gcc, --binutils, --glibc, --uClibc, --linux,
     6.7 -    --gdb, --dmalloc, --duma, --strace
     6.8 +    --gdb, --dmalloc, --duma, --strace, --ltrace, --libelf
     6.9  
    6.10    Valid options for all tools:
    6.11      --experimental, -x
    6.12 @@ -57,6 +57,8 @@
    6.13          --dmalloc)          cat=DMALLOC;   tool=dmalloc;  tool_prefix=debug/    tool_suffix=;;
    6.14          --duma)             cat=DUMA;      tool=duma;     tool_prefix=debug/    tool_suffix=;;
    6.15          --strace)           cat=STRACE;    tool=strace;   tool_prefix=debug/    tool_suffix=;;
    6.16 +        --ltrace)           cat=LTRACE;    tool=ltrace;   tool_prefix=debug/    tool_suffix=;;
    6.17 +        --libelf)           cat=LIBELF;    tool=libelf;   tool_prefix=tools/    tool_suffix=;;
    6.18          # Tools options:
    6.19          -x|--experimental)  EXP=1; OBS=;;
    6.20          -o|--obsolete)      OBS=1; EXP=;;