delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/06/08/19:15:23

From: Richard Dawe <richdawe AT bigfoot DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Problems compiling libwin
Date: Tue, 06 Jun 2000 19:41:54 +0100
Organization: Customer of Planet Online
Lines: 70
Message-ID: <393D45F2.DBE8B324@bigfoot.com>
References: <200006060701 DOT DAA17436 AT delorie DOT com>
NNTP-Posting-Host: modem-57.muellers-butterfly.dialup.pol.co.uk
Mime-Version: 1.0
X-Trace: news7.svr.pol.co.uk 960320225 10561 62.136.217.57 (6 Jun 2000 19:37:05 GMT)
NNTP-Posting-Date: 6 Jun 2000 19:37:05 GMT
X-Complaints-To: abuse AT theplanet DOT net
X-Mailer: Mozilla 4.51 [en] (X11; I; Linux 2.2.14 i586)
X-Accept-Language: de,fr
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hello.

Krish Karthik wrote:
> I downloaded libwin 0.1.3 recently and applied the patch for GCC
> 2.95 also.

This is a known problem. I have not generated a patch yet, but if you
follow the instructions in the text below, it should compile:

[Excerpt from mail]
| > I downloaded libwin, applied the patch for gcc 2.95, but still got
| > compilation errors:
|
| The compilation errors are due to the version of binutils you are using.
| I guess you are using binutils 2.9.5.1 beta version. The reason that the
| compilation fails is that the syntax of the inline assembly has changed
| between binutils versions.
|
| > gcc -Wall -Werror -I../include -I. -c vxd.c -o vxd.o
| > c:/djgpp/tmp\ccDfeUoa.s: Assembler messages:
| > c:/djgpp/tmp\ccDfeUoa.s:20: Error: suffix or operands invalid for
| `int'
|
| Please change every occurence of:
|
| intb $0x2f
|
| to:
|
| int $0x2f
|
| > c:/djgpp/tmp\ccDfeUoa.s:151: Warning: Indirect lcall without `*'
|
| Please change the argument of lcall so it has * in front of it, e.g.
|
| lcall _GlobalEntry
|
| becomes
|
| lcall *_GlobalEntry
|
| > c:/djgpp/tmp\ccDfeUoa.s:261: Warning: using `%ebx' instead of `%bx'
| > due to `l' suffix
|
| This warning is OK - you can ignore it.
|
| All these changes are to src/vxd.c. In src/vxdldr.c you will also need
| to change:
|
| lcall %%cs:_vxdldr_entry
|
| to:
|
| lcall *%%cs:_vxdldr_entry
[End excerpt]

This has been reported to work. I have not tried it, however. Similar
changes fixed up libsocket's code, so I am confident it will work.

Since then I have discovered that if you add * to the parameter of lcall,
then the code will not build with binutils 2.8.1. If you leave out the '*'
from the parameter of lcall, then gas (from binutils) will generate the
right code. A warning will be printed, but you can ignore this (the
assembly code is OK).

Hope this helps, bye,

-- 
Richard Dawe
richdawe AT bigfoot DOT com ICQ 47595498 http://www.bigfoot.com/~richdawe/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019