diff --git a/configure.ac b/configure.ac index 4bc9b60159..68ad4fef8c 100644 --- a/configure.ac +++ b/configure.ac @@ -258,6 +258,10 @@ AC_CHECK_TOOLS([OBJCOPY], [gobjcopy objcopy], [:]) AC_CHECK_TOOLS([OBJDUMP], [gobjdump objdump]) AC_CHECK_TOOLS([STRIP], [gstrip strip], [:]) +# nm errors with Rust's LLVM bitcode when Rust uses a newer LLVM version than nm. +# In case we're working with llvm-nm, tell it to not worry about the bitcode. +AS_IF([${NM} --help | grep -q 'llvm-bc'], [NM="$NM --no-llvm-bc"]) + AS_IF([test ! $rb_test_CFLAGS], [AS_UNSET(CFLAGS)]); AS_UNSET(rb_test_CFLAGS) AS_IF([test ! $rb_test_CXXFLAGS], [AS_UNSET(CXXFLAGS)]); AS_UNSET(rb_save_CXXFLAGS) diff --git a/tool/darwin-ar b/tool/darwin-ar index 6f2a6ca2ad..8b25425cfe 100755 --- a/tool/darwin-ar +++ b/tool/darwin-ar @@ -1,4 +1,5 @@ #!/bin/bash +export LANG=C LC_ALL=C # Suppress localication exec 2> >(exec grep -v \ -e ' no symbols$' \ >&2) diff --git a/tool/leaked-globals b/tool/leaked-globals index 136d96b6ab..e079b0efc5 100755 --- a/tool/leaked-globals +++ b/tool/leaked-globals @@ -19,10 +19,6 @@ config = ARGV.shift count = 0 col = Colorize.new -# nm errors with Rust's LLVM bitcode when Rust uses a newer LLVM version than nm. -# In case we're working with llvm-nm, tell it to not worry about the bitcode. -no_llvm = "--no-llvm-bc" if `#{NM} --version` =~ /llvm/i - config_code = File.read(config) REPLACE = config_code.scan(/\bAC_(?:REPLACE|CHECK)_FUNCS?\((\w+)/).flatten # REPLACE << 'memcmp' if /\bAC_FUNC_MEMCMP\b/ =~ config_code @@ -54,7 +50,7 @@ REPLACE.push("rust_eh_personality") if RUBY_PLATFORM.include?("darwin") print "Checking leaked global symbols..." STDOUT.flush -IO.foreach("|#{NM} #{no_llvm} #{ARGV.join(' ')}") do |line| +IO.foreach("|#{NM} #{ARGV.join(' ')}") do |line| n, t, = line.split next unless /[A-TV-Z]/ =~ t next unless n.sub!(/^#{SYMBOL_PREFIX}/o, "") diff --git a/yjit/yjit.mk b/yjit/yjit.mk index 2f34c0079b..80ca124699 100644 --- a/yjit/yjit.mk +++ b/yjit/yjit.mk @@ -65,7 +65,7 @@ endif # we rely. ifneq ($(findstring darwin,$(target_os)),) $(YJIT_LIB_SYMBOLS): $(YJIT_LIBS) - $(Q) $(tooldir)/darwin-ar $(NM) --no-llvm-bc --defined-only --extern-only $(YJIT_LIBS) | \ + $(Q) $(tooldir)/darwin-ar $(NM) --defined-only --extern-only $(YJIT_LIBS) | \ sed -n -e 's/.* //' -e '/^$(SYMBOL_PREFIX)rb_/p' \ -e '/^$(SYMBOL_PREFIX)rust_eh_personality/p' \ > $@