mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
transform_mjit_header.rb: restrict transformation
to whitelisted patterns. This fix is for NetBSD. [Bug #14439] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
da79033a30
commit
e23aefe288
1 changed files with 6 additions and 0 deletions
|
@ -11,6 +11,7 @@ module MJITHeader
|
|||
ATTR_VALUE_REGEXP = /[^()]|\([^()]*\)/
|
||||
ATTR_REGEXP = /__attribute__\s*\(\((#{ATTR_VALUE_REGEXP})*\)\)/
|
||||
FUNC_HEADER_REGEXP = /\A(\s*#{ATTR_REGEXP})*[^\[{(]*\((#{ATTR_REGEXP}|[^()])*\)(\s*#{ATTR_REGEXP})*\s*/
|
||||
TARGET_NAME_REGEXP = /\A(rb|ruby|vm|insn|attr)_/
|
||||
|
||||
# For MinGW's ras.h. Those macros have its name in its definition and can't be preprocessed multiple times.
|
||||
RECURSIVE_MACROS = %w[
|
||||
|
@ -167,6 +168,11 @@ while (decl_range = MJITHeader.find_decl(code, stop_pos))
|
|||
|
||||
code[decl_range] = "static inline #{decl}"
|
||||
elsif (match = /#{MJITHeader::FUNC_HEADER_REGEXP}{/.match(decl)) && (header = match[0]) !~ /static/
|
||||
unless decl_name.match(MJITHeader::TARGET_NAME_REGEXP)
|
||||
puts "#{PROGRAM}: SKIPPED to transform #{decl_name}"
|
||||
next
|
||||
end
|
||||
|
||||
extern_names << decl_name
|
||||
decl[match.begin(0)...match.end(0)] = ''
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue