You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
973 B
40 lines
973 B
#!@shell@ |
|
|
|
set -e |
|
set -u |
|
|
|
# I've also tried adding -z direct and -z lazyload, but it gave too many problems with C++ exceptions :'( |
|
# Also made sure libgcc would not be lazy-loaded, as suggested here: https://www.illumos.org/issues/2534#note-3 |
|
# but still no success. |
|
cmd="@ld@ -z ignore" |
|
|
|
args=("$@"); |
|
|
|
# This loop makes sure all -L arguments are before -l arguments, or ld may complain it cannot find a library. |
|
# GNU binutils does not have this problem: |
|
# http://stackoverflow.com/questions/5817269/does-the-order-of-l-and-l-options-in-the-gnu-linker-matter |
|
i=0; |
|
while [[ $i -lt $# ]]; do |
|
case "${args[$i]}" in |
|
-L) cmd="$cmd ${args[$i]} ${args[($i+1)]}"; i=($i+1); ;; |
|
-L*) cmd="$cmd ${args[$i]}" ;; |
|
*) ;; |
|
esac |
|
i=($i+1); |
|
done |
|
|
|
i=0; |
|
while [[ $i -lt $# ]]; do |
|
case "${args[$i]}" in |
|
-L) i=($i+1); ;; |
|
-L*) ;; |
|
*) cmd="$cmd ${args[$i]}" ;; |
|
esac |
|
i=($i+1); |
|
done |
|
|
|
# Trace: |
|
set -x |
|
exec $cmd |
|
|
|
exit 0
|
|
|