]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/compiler-rt/lib/sanitizer_common/symbolizer/scripts/ar_to_bc.sh
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / compiler-rt / lib / sanitizer_common / symbolizer / scripts / ar_to_bc.sh
1 #!/bin/bash
2
3 function usage() {
4   echo "Usage: $0 INPUT... OUTPUT"
5   exit 1
6 }
7
8 if [ "$#" -le 1 ]; then
9   usage
10 fi
11
12 [[ $AR == /* ]] || AR=$PWD/$AR
13 [[ $LINK == /* ]] || LINK=$PWD/$LINK
14
15 INPUTS=
16 OUTPUT=
17 for ARG in $@; do
18   INPUTS="$INPUTS $OUTPUT"
19   OUTPUT=$(readlink -f $ARG)
20 done
21
22 echo Inputs: $INPUTS
23 echo Output: $OUTPUT
24
25 SCRATCH_DIR=$(mktemp -d)
26 ln -s $INPUTS $SCRATCH_DIR/
27
28 pushd $SCRATCH_DIR
29
30 for INPUT in *; do
31   for OBJ in $($AR t $INPUT); do
32     $AR x $INPUT $OBJ
33     mv -f $OBJ $(basename $INPUT).$OBJ
34   done
35 done
36
37 $LINK *.o -o $OUTPUT
38
39 rm -rf $SCRATCH_DIR