From: Richard Dawe 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 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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/