diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-27 14:58:00 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-27 15:50:44 +0900 |
commit | 260d626ef69336530b636e2b14b75479f869e8dc (patch) | |
tree | 87bc638fa8a6dd557f8dbf048e63bdfa493b12ee /tool/leaked-globals | |
parent | 366b58d7ca19914d533a0bef51e51995e7876da7 (diff) | |
download | ruby-260d626ef69336530b636e2b14b75479f869e8dc.tar.gz |
Ignore symbols declared in the platform header
Diffstat (limited to 'tool/leaked-globals')
-rwxr-xr-x | tool/leaked-globals | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tool/leaked-globals b/tool/leaked-globals index 0d8c3c4195..7ed81b1361 100755 --- a/tool/leaked-globals +++ b/tool/leaked-globals @@ -7,6 +7,8 @@ until ARGV.empty? SYMBOL_PREFIX = $1 when /\ANM=(.*)/ # may be multiple words NM = $1 + when /\APLATFORM=(.+)?/ + platform = $1 else break end @@ -20,6 +22,19 @@ config_code = File.read(config) REPLACE = config_code.scan(/\bAC_(?:REPLACE|CHECK)_FUNCS?\((\w+)/).flatten # REPLACE << 'memcmp' if /\bAC_FUNC_MEMCMP\b/ =~ config_code REPLACE.push('main', 'DllMain') +if platform and !platform.empty? + begin + h = File.read(platform) + rescue Errno::ENOENT + else + REPLACE.concat( + h .gsub(%r[/\*.*?\*/]m, " ") # delete block comments + .gsub(%r[//.*], ' ') # delete oneline comments + .gsub(/^\s*#.*(?:\\\n.*)*/, "") # delete preprocessor directives + .scan(/\b((?!rb_|DEPRECATED|_)\w+)\s*\(.*\);/) + .flatten) + end +end missing = File.dirname(config) + "/missing/" ARGV.reject! do |n| unless (src = Dir.glob(missing + File.basename(n, ".*") + ".[cS]")).empty? |