summaryrefslogtreecommitdiff
path: root/tool/leaked-globals
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-01-15 10:20:16 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2024-01-17 19:37:56 +0900
commitc68ce6f7f5e6020409cfe689ba5946f284828d4b (patch)
treea9fefa40e62398b1961d356e52c3407e3f6ef89a /tool/leaked-globals
parent6215b5ba9811ae1a1e631f01a88fd5b32043effa (diff)
Skip checking for symbol leaks in libruby.so linking extensions
The libruby.so linking extension libraries contain symbols exported from extension libraries, and is not subject of test-leaked-globals.
Diffstat (limited to 'tool/leaked-globals')
-rwxr-xr-xtool/leaked-globals13
1 files changed, 11 insertions, 2 deletions
diff --git a/tool/leaked-globals b/tool/leaked-globals
index 87089ebd81..ee75f78d1d 100755
--- a/tool/leaked-globals
+++ b/tool/leaked-globals
@@ -13,12 +13,15 @@ until ARGV.empty?
soext = $1
when /\A SYMBOLS_IN_EMPTYLIB=(.*)/x
SYMBOLS_IN_EMPTYLIB = $1.split(" ")
+ when /\A EXTSTATIC=(.+)?/x
+ EXTSTATIC = true
else
break
end
ARGV.shift
end
SYMBOLS_IN_EMPTYLIB ||= nil
+EXTSTATIC ||= false
config = ARGV.shift
count = 0
@@ -56,8 +59,14 @@ REPLACE.push("rust_eh_personality") if RUBY_PLATFORM.include?("darwin")
print "Checking leaked global symbols..."
STDOUT.flush
-soext = /\.#{soext}(?:$|\.)/ if soext
-so = soext =~ ARGV.first if ARGV.size == 1
+if soext
+ soext = /\.#{soext}(?:$|\.)/
+ if EXTSTATIC
+ ARGV.delete_if {|n| soext =~ n}
+ elsif ARGV.size == 1
+ so = soext =~ ARGV.first
+ end
+end
IO.foreach("|#{NM} #{ARGV.join(' ')}") do |line|
line.chomp!
next so = nil if line.empty?