Wine Traffic #32 For 28�Feb�2000

By Eric Pouech

Table Of Contents

Introduction

This is the 32nd release of the Wine's kernel cousin publication. It's main goal is to distribute widely what's going on around Wine (the Un*x windows emulator).

Wine20000227 has been released. Main changes are:

Check it out !!

Mailing List Stats For This Week

We looked at 78 posts in 239K.

There were 26 different contributors. 15 posted more than once. 16 posted last week too.

The top posters of the week were:

1. Alexandre Julliard's Interview

�Archive Link: "press: olinux interview Alexandre Julliard"

People: Alexandre Julliard,�,�Marcus Meissner

Marcus Meissner posted that Alexandre Julliard got interviewed (http://www.olinux.com.br/entrevistas/7/en/index.html) by Olinux. Not too many surprizing items, except for a potential first release this year...

2. Wine on Solaris

�Archive Link: "More non-GCC fixes"

People: Ulrich Weigand,�Patrik Stridvall,�,�Patrik Stridval

Patrik Stridvall continued his effort to port Wine code to compile with a compiler different from GCC. One of his proposed fix contained a change in the shared libraries symbol loading. Ulrich Weigand disagreed on the proposal (replacing GOTOFF by GOT):
The linker/loader maintain a global offset table, which consists of an array of pointers to exported variables. All access to those variables is supposed to go through these pointers, if the variable could reside within another dynamic object.

If 'variable' is an exported symbol, then 'variable@GOT' is replaced by the linker with a constant: the offset of the GOT slot containing the pointer to variable. So, if the %ebx register contains the start address of the GOT, you can retrieve this pointer via

movl variable@GOT(%ebx), %eax

If you want the value of the variable, you need another indirection:

movl (%eax), %eax

If you know, however, that the variable in question must reside in the same dynamic object as the user, then you can avoid that double indirection, by using the GOTOFF facility. 'variable@GOTOFF' is replaced by the linker with another constant: the difference between the absolute address of the variable and the address of the global offset table (of the current dynamic object). Thus, you can retrieve the value of the variable in one step using:

movl variable@GOTOFF(%ebx), %eax

However, it turned out that GOTOFF was not available with Solaris tools (only GOT is proposed). Anyway, Patrik had now a proper fix (with the double indirection). He reported:
Now both MSHearts and WinMine work on Solaris too (with the same shell32 problem Ed. note: as on Linux). :-)

Sharon And Joy

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.