Project

General

Profile

Bug #5193

ruby_thread_data_type linker errors fixed with RUBY_EXTERN

Added by cfis (Charlie Savage) about 9 years ago. Updated almost 8 years ago.

Status:
Third Party's Issue
Priority:
Normal
Target version:
-
ruby -v:
Backport:
[ruby-core:38972]

Description

ruby-debug-base19x fails to compile with VC++ 2010 with this error:

ruby_debug.obj : error LNK2001: unresolved external symbol _ruby_thread_data_type

ruby_thread_data_type is declared in vm_core.h as:

extern const rb_data_type_t ruby_thread_data_type;

ruby-debug calls GetThreadPtr which is defined as:

#define GetThreadPtr(obj, ptr) \
TypedData_Get_Struct((obj), rb_thread_t, &ruby_thread_data_type, (ptr))

What makes this interesting is that ruby_thread_data_type is properly included in the msvcr100-ruby191.def file and is exported from msvcr100-ruby191.dll. Somehow the &ruby_thread_data_type causes problems for VC++ (mingw works correctly).

Some Ubuntu users seem to be having a similar issue. See:

http://rubyforge.org/tracker/index.php?func=detail&aid=29222&group_id=8883&atid=34290

The problem is resolved for VC++ by changing the definition to:

RUBY_EXTERN const rb_data_type_t ruby_thread_data_type;

Any chance this change could be made?

Thanks - Charlie


Files

msvcrt-ruby191-exports.txt (30.7 KB) msvcrt-ruby191-exports.txt cfis (Charlie Savage), 08/20/2011 06:07 PM

Related issues

Related to Backport193 - Backport #5844: Can't install ruby-debug-base19Rejected01/05/2012Actions

Also available in: Atom PDF