Skip to content

Commit b4f2864

Browse files
fanquakethelazier
authored andcommitted
Merge bitcoin#18779: doc: Better explain GNU ld's dislike of ld64's options
cd24f37 doc: Better explain GNU ld's dislike of ld64's options (fanquake) Pull request description: There's also now more than a single option being special cased for darwin. If we didn't special case these options they would still end up on the link line and the binaries produced would just segfault. I'm going to plug bitcoin#17874 here as well, because adding `-fatal-warnings` to our `AX_CHECK_LINK_FLAG` calls would mostly prevent this sort of option mangling from happening. An example of the warning behaviour: ```bash echo "int main() {}" | g++ -x c++ -std=c++11 -Wl,-dead_strip - /usr/bin/ld: warning: cannot find entry symbol ad_strip; defaulting to 0000000000001040 nm -C a.out 0000000000001000 t _init 0000000000001040 T _start U ad_strip ``` ACKs for top commit: dongcarl: ACK cd24f37 Tree-SHA512: 8c5ff11b647e7d44dbb3f509a07caf8606a6b481c114403f0de72b3ad65395dbe9a3436e731ae1b46a823431ed23c3c6aacab8942d78629d59cd8c258c5dbf02
1 parent bc1e2eb commit b4f2864

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

configure.ac

+3-1
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,9 @@ if test x$use_hardening != xno; then
812812
esac
813813
fi
814814

815-
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
815+
dnl These flags are specific to ld64, and may cause issues with other linkers.
816+
dnl For example: GNU ld will intepret -dead_strip as -de and then try and use
817+
dnl "ad_strip" as the symbol for the entry point.
816818
if test x$TARGET_OS = xdarwin; then
817819
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
818820
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip_dylibs]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip_dylibs"])

0 commit comments

Comments
 (0)