55 lines
1.8 KiB
Bash
Executable File
55 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#**************************************************************************
|
|
#* *
|
|
#* OCaml *
|
|
#* *
|
|
#* Damien Doligez, projet Cristal, INRIA Rocquencourt *
|
|
#* *
|
|
#* Copyright 2005 Institut National de Recherche en Informatique et *
|
|
#* en Automatique. *
|
|
#* *
|
|
#* All rights reserved. This file is distributed under the terms of *
|
|
#* the GNU Lesser General Public License version 2.1, with the *
|
|
#* special exception on linking described in the file LICENSE. *
|
|
#* *
|
|
#**************************************************************************
|
|
|
|
TMP="${TMPDIR=/tmp}"
|
|
TEMP="${TMP}"/ocaml-objcopy-$$.o
|
|
UNDEF="${TMP}"/ocaml-objcopy-$$.sym
|
|
|
|
usage () {
|
|
echo "usage: objcopy {--redefine-sym <old>=<new>} file.o" >&2
|
|
exit 2
|
|
}
|
|
|
|
: > "$UNDEF"
|
|
|
|
while : ; do
|
|
case $# in
|
|
0) break;;
|
|
*) case $1 in
|
|
--redefine-sym)
|
|
case $2 in
|
|
*=*) ALIAS="$ALIAS -i${2#*=}:${2%%=*}"
|
|
echo ${2%%=*} >>"$UNDEF"
|
|
;;
|
|
*) usage;;
|
|
esac
|
|
shift 2
|
|
;;
|
|
-*) usage;;
|
|
*) case $FILE in
|
|
"") FILE=$1; shift;;
|
|
*) usage;;
|
|
esac;;
|
|
esac;;
|
|
esac
|
|
done
|
|
|
|
ld -o "$TEMP" -r $ALIAS "$FILE"
|
|
ld -o "$FILE" -r -unexported_symbols_list "$UNDEF" "$TEMP"
|
|
|
|
rm -f "$TEMP" "$UNDEF"
|