scripts/build/debug/duma.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Mar 28 01:05:18 2011 +0200 (2011-03-28)
changeset 2362 0888065f8c4d
parent 635 0d7348cb7faa
child 2908 dcdb309b7967
permissions -rw-r--r--
cc/gcc: cleanup the _or_later logic

So far, we've had a version always select appropriate _or_later option,
which in turn would select all previous _or_later options.

Because the dependencies on companion libs were cumulative, that was
working OK. But the upcoming 4.6 will no longer depend on libelf, so
we can't keep the cumulative scheme we've been using so far.

Have each release family select the corresponding dependencies, instead
of relying on selecting previous _or_later.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@635
     1
#!/bin/sh
yann@635
     2
# (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
yann@635
     3
# Licensed under the GPL v.2
yann@635
     4
yann@635
     5
LIBDUMA_SO=
yann@635
     6
yann@635
     7
case "$1" in
yann@635
     8
  -on)
yann@635
     9
    case "${LD_PRELOAD}" in
yann@635
    10
      *${LIBDUMA_SO}*) ;;
yann@635
    11
      *) LD_PRELOAD="${LIBDUMA_SO} ${LD_PRELOAD}";;
yann@635
    12
    esac
yann@635
    13
    shift
yann@635
    14
    ;;
yann@635
    15
  -off)
yann@686
    16
    # We use a suposedly POSIX-compliant shell: /bin/sh
yann@686
    17
    #  -> we can't use "${LD_PRELOAD//${LIBDUMA_SO}/}", it's not POSIX
yann@686
    18
    # We don't know if sed will be present on the target
yann@686
    19
    #  -> we can't use $(echo "${LD_PRELOAD}" |sed -r -e "s|${LIBDUMA_SO}||;")
yann@686
    20
    # So, iterate through LD_PRELOAD, and keep only those libs that
yann@686
    21
    # are not "${LIBDUMA_SO}"
yann@686
    22
    old_LD_PRELOAD="${LD_PRELOAD}"
yann@686
    23
    LD_PRELOAD=
yann@686
    24
    for lib in ${old_LD_PRELOAD}; do
yann@686
    25
      [ "${lib}" = "${LIBDUMA_SO}" ] || LD_PRELOAD="${LD_PRELOAD} ${lib}"
yann@686
    26
    done
yann@686
    27
    unset old_LD_PRELOAD
yann@635
    28
    shift
yann@635
    29
    ;;
yann@635
    30
  -show)
yann@635
    31
    case "${LD_PRELOAD}" in
yann@635
    32
      *${LIBDUMA_SO}*) echo "duma is enabled";;
yann@635
    33
      *)               echo "duma is disabled";;
yann@635
    34
    esac
yann@635
    35
    exit 0
yann@635
    36
    ;;
yann@635
    37
  "")
yann@635
    38
    cat <<_EOF_
yann@635
    39
Usage:
yann@635
    40
    . $0 <-on|-off|-show>
yann@635
    41
        Sets, unsets or show DUMA usage.
yann@635
    42
    $0 <executable [arg...]>
yann@635
    43
        Execute 'executable' (with arguments 'args') using DUMA.
yann@635
    44
_EOF_
yann@635
    45
    false # Don't 'exit', we could well be source'd
yann@635
    46
    ;;
yann@635
    47
  *)
yann@635
    48
    exec "$0" -on "$@"
yann@635
    49
    ;;
yann@635
    50
esac
yann@635
    51
yann@635
    52
export LD_PRELOAD
yann@635
    53
if [ -n "$1" ]; then
yann@635
    54
  exec "$@"
yann@635
    55
fi