diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2021-07-07 10:16:48 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2021-07-07 20:31:20 +0900 |
commit | 737e4432b978eb4b9f5b10fb6cc6d9c883a5d17a (patch) | |
tree | 6d028072ff02f4051cce1e287ca2ba6768e5380a /configure.ac | |
parent | 1293042307a5ecdd706212c897a57ff1aed07a0d (diff) |
configure: add -Wl,--no-as-needed
It is reported that combination of `--enable-shared --with-jemalloc`
breaks on Debian bullseye (testig). Deeper investigation revealed that
this system's `ld(1)` is patched, to turn `ld --as-needed` on by
default.
This linker flag strips "unnecessary" library dependencies from an
executable. In case of `ruby(1)` (of `--enable-shared`), because
everything is in `libruby.so`, the binary itself doesn't include any
calls to `malloc(3)` at all. So in spite of our explicit `-ljemalloc`
flag, it is ignored. Libc's one is chosen instead.
This is not what we want. Let's force our `ruby(1)` link what we want.
Fixes https://github.com/ruby/ruby/pull/4627
The author would like to acknowledge
Akihiko Odaki <akihiko.odaki@gmail.com> for their contributions.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4631
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 0acadac2e6..9ce7538aae 100644 --- a/configure.ac +++ b/configure.ac @@ -3383,6 +3383,11 @@ AS_CASE("$enable_shared", [yes], [ AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"]) libdir_basename="${libdir_basename}"${multiarch+'/${arch}'} + RUBY_TRY_LDFLAGS([${linker_flag}--no-as-needed], [no_as_needed=yes], [no_as_needed=no]) + AS_IF([test "$no_as_needed" = yes], [ + RUBY_APPEND_OPTIONS(LDFLAGS, [${linker_flag}--no-as-needed]) + ]) + AS_CASE(["$target_os"], [freebsd*|dragonfly*], [], [ |