[#44066] Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Urabe Shyouhei <shyouhei@...>

Hi all.

18 messages 2007/10/04
[#44067] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Takahiro Kambe <taca@...> 2007/10/04

こんにちは。

[#44068] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...> 2007/10/04

前田です。

[#44090] Windowsアプリにrubyを組み込んだときのエラーメッセージ — "湊大典" <minato.daisuke@...>

こんにちは。

19 messages 2007/10/07
[#44091] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — Nobuyoshi Nakada <nobu@...> 2007/10/09

なかだです。

[#44097] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "湊大典" <minato.daisuke@...> 2007/10/10

こんばんは、中田さん。

[#44098] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "U.Nakamura" <usa@...> 2007/10/10

こんにちは、なかむら(う)です。

[#44103] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "湊大典" <minato.daisuke@...> 2007/10/11

こんにちは、中村さん。

[#44104] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — Nobuyoshi Nakada <nobu@...> 2007/10/11

なかだです。

[#44105] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "湊大典" <minato.daisuke@...> 2007/10/12

そうなんですか。

[#44106] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "きむらこういち" <hogemuta@...> 2007/10/12

木村です。

[#44108] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — pegacorn <subscriber.jp@...> 2007/10/12

From: "きむらこういち" <hogemuta@gmail.com>

[#44109] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ — "Nobuyoshi Nakada" <nobu@...> 2007/10/13

なかだです。

[#44125] ruby-tk with tcltk8.5b1 — Ryutaro Amano <wn9r-amn@...>

天野竜太郎と申します。

14 messages 2007/10/19

[#44147] 2個づつの組を作る方法のすべて — "142QN4969@..." <ohrs@...>

小原と申します。御世話になっています。

15 messages 2007/10/27

[ruby-list:44108] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ

From: pegacorn <subscriber.jp@...>
Date: 2007-10-12 15:42:36 UTC
List: ruby-list #44108
 From: "きむらこういち" <hogemuta@gmail.com>
 Date: Fri, 12 Oct 2007 22:21:14 +0900
 Message-Id: <d7da792b0710120621n23496921v60dbe2406e3742b7@mail.gmail.com>
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > extern VALUE ruby_errinfo;          // eval後のエラーメッセージで必要$
> 
> これですね。
> 
> __declspec(dllimport) / __declspec(dllexport) が正しくついていないと、
> シンボルとしては見えるけど値をとろうとしても取れないという状態になります。
> ruby.h を include していれば普通はそれを気にしないでよいようにできてませんでしったけ?

そうなっていると思います。

./win32/config.h:#define RUBY_EXTERN extern __declspec(dllimport)
./ruby.h:#include "config.h"
./ruby.h:RUBY_EXTERN VALUE ruby_errinfo;

> 詳しくまとめるかどうかはともかく、「忘れずに ruby.h を include しとけ、な?」
> くらいは書いておいてもいいかもしれないですね。

加えて保険として、エクスポートするデータシンボルには DATA 属性?を
付けておくのはどうでしょうか。
これを付けてエクスポートしておくと、__declspec(dllimport) 無しでは
リンクできなくなるので。

EXPORTS
 ruby_errinfo DATA


--
pegacorn

Attachments (1)

mkexports.rb.patch (1.21 KB, text/x-diff)
Index: mkexports.rb
===================================================================
--- mkexports.rb	(revision 13498)
+++ mkexports.rb	(working copy)
@@ -7,13 +7,25 @@
 objs = ARGV.collect {|s| s.tr('/', '\\')}
 IO.foreach("|dumpbin -symbols " + objs.join(' ')) do |l|
   next if /^[0-9A-F]+ 0+ UNDEF / =~ l
-  next unless l.sub!(/.*\sExternal\s+\|\s+/, '')
-  if l.sub!(/^_(?!\w+@\d+$)/, '')
+  case l
+  when /.*\(\)\s+External\s+\|\s+/
+    is_data = false
+  when /.*\sExternal\s+\|\s+/
+    is_data = true
+  else
+    next
+  end
+  l.sub!(/.*\sExternal\s+\|\s+/, '')
+  if l.sub!(/^_/, '')
     next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l
+    l.sub!(/@\d+\s*$/, '')
+  elsif l.sub!(/^@/, '')
+    l.sub!(/@\d+\s*$/, '')
   elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1')
     next
   end
-  SYM[l.strip] = true
+  l.strip!
+  SYM[l] = is_data
 end
 
 exports = []
@@ -23,7 +35,14 @@
   exports << "Library " + $library
 end
 exports << "Description " + $description.dump if $description
-exports << "EXPORTS" << SYM.keys.sort
+exports << "EXPORTS"
+SYM.keys.sort.each do |sym|
+  if SYM[sym]
+    exports << sym + ' DATA'
+  else
+    exports << sym
+  end
+end
 
 if $output
   open($output, 'w') {|f| f.puts exports.join("\n")}

In This Thread