From fc3e0bd5625c6869c9eae63179d37da207f8de30 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 13 Oct 2007 00:02:20 +0000 Subject: [PATCH] * {bcc,win}32/mkexports.rb: explicit data. [ruby-list:44108] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ bcc32/mkexports.rb | 2 +- win32/mkexports.rb | 7 ++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index bccbdc47ab..be38697385 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sat Oct 13 09:02:16 2007 Nobuyoshi Nakada + + * {bcc,win}32/mkexports.rb: explicit data. [ruby-list:44108] + Sat Oct 13 00:17:49 2007 Yukihiro Matsumoto * lib/rexml/document.rb (REXML::Document::write): leaky diff --git a/bcc32/mkexports.rb b/bcc32/mkexports.rb index 1b498f8515..965a09b827 100755 --- a/bcc32/mkexports.rb +++ b/bcc32/mkexports.rb @@ -15,7 +15,7 @@ class Exports::Bcc < Exports opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32" IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')} < nul") do |l| next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l - yield $1 if /'(.*?)'/ =~ l + yield $1, !$2 /'(.*?)'\s+Segment:\s+_(TEXT)?/ =~ l end end yield "_strcasecmp", "_stricmp" diff --git a/win32/mkexports.rb b/win32/mkexports.rb index 53a4a89c2d..e9a81345de 100755 --- a/win32/mkexports.rb +++ b/win32/mkexports.rb @@ -75,7 +75,7 @@ class Exports end def symbols() - @syms.sort.collect {|k, v| v ? "#{k}=#{v}" : k} + @syms.sort.collect {|k, v| v ? v == true ? "#{k} DATA" : "#{k}=#{v}" : k} end end @@ -90,7 +90,8 @@ class Exports::Mswin < Exports case filetype when /OBJECT/, /LIBRARY/ next if /^[[:xdigit:]]+ 0+ UNDEF / =~ l - next unless l.sub!(/.*\sExternal\s+\|\s+/, '') + next unless l.sub!(/.*?\s(\(\)\s+)?External\s+\|\s+/, '') + is_data = !$1 if noprefix or l.sub!(/^_/, '') next if /@.*@/ =~ l || /@[[:xdigit:]]{16}$/ =~ l l.sub!(/^/, '_') if /@\d+$/ =~ l @@ -102,7 +103,7 @@ class Exports::Mswin < Exports else next end - yield l.strip + yield l.strip, is_data end end end