#!/bin/bash export LC_ALL=C set -e CC="${TEST_CC:-cc}" CXX="${TEST_CXX:-c++}" GCC="${TEST_GCC:-gcc}" GXX="${TEST_GXX:-g++}" OBJDUMP="${OBJDUMP:-objdump}" MACHINE="${MACHINE:-$(uname -m)}" testname=$(basename "$0" .sh) echo -n "Testing $testname ... " cd "$(dirname "$0")"/../.. t=out/test/macho/$testname mkdir -p $t cat < void hello() { printf("Hello world\n"); } EOF cat < void hello() __attribute__((weak_import)); int main() { if (hello) hello(); else printf("hello is missing\n"); } EOF clang --ld-path=./ld64 -o $t/exe $t/a.o -L$t -Wl,-weak-lfoo $t/exe | grep -q 'Hello world' rm $t/libfoo.dylib $t/exe | grep -q 'hello is missing' echo OK