dmd/compiler/test/compilable/issue19243.sh
2022-07-09 18:53:07 +02:00

50 lines
1.1 KiB
Bash

#! /usr/bin/env bash
# bypassing this test:
# - on windows
# - on FreeBSD 32 bits
# test fails looling for liborig.so; don't know why but shouldn't block fixing all other platforms
# - on Circle CI with no_pic. (need PIC to run the test)
if [[ $OS = *"win"* ]]; then exit 0; fi
if [[ $OS = *"freebsd"* ]] && [[ $MODEL = *"32"* ]]; then exit 0; fi
if [ ${PIC:-1} == "0" ]; then exit 0; fi
TEST_DIR=${OUTPUT_BASE}
ORIG_D=$TEST_DIR/orig.d
ORIG_SO=$TEST_DIR/liborig${SOEXT}
OVERRIDE_D=$TEST_DIR/override.d
OVERRIDE_SO=$TEST_DIR/liboverride${SOEXT}
APP_D=$TEST_DIR/app.d
mkdir -p $TEST_DIR
cat << EOF | $DMD -m$MODEL -fPIC -shared -of$ORIG_SO -
import core.stdc.stdio;
extern(C) int func()
{
printf("liborig\n");
return 1;
}
EOF
cat << EOF | $DMD -m$MODEL -fPIC -shared -of$OVERRIDE_SO -
import core.stdc.stdio;
extern(C) int func()
{
printf("liboverride\n");
return 2;
}
EOF
cat << EOF | LD_LIBRARY_PATH=$TEST_DIR $DMD -m$MODEL -L-L$TEST_DIR -L$OVERRIDE_SO -run -
extern(C) int func();
pragma(lib, "orig");
void main()
{
assert(func() == 2);
}
EOF