From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33835) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TA54d-0002BN-8B for qemu-devel@nongnu.org; Fri, 07 Sep 2012 16:22:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TA54b-0003xy-KG for qemu-devel@nongnu.org; Fri, 07 Sep 2012 16:22:43 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:35239) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TA54b-0003xO-BB for qemu-devel@nongnu.org; Fri, 07 Sep 2012 16:22:41 -0400 Message-ID: <504A578D.101@weilnetz.de> Date: Fri, 07 Sep 2012 22:22:37 +0200 From: Stefan Weil MIME-Version: 1.0 References: <1346891806-13792-1-git-send-email-jcmvbkbc@gmail.com> <50482A72.5020907@weilnetz.de> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] target-xtensa: fix missing errno codes for mingw32 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Filippov , Blue Swirl Cc: qemu-devel@nongnu.org Am 06.09.2012 14:48, schrieb Max Filippov: > On Thu, Sep 6, 2012 at 8:45 AM, Stefan Weil wrote: >> Am 06.09.2012 02:36, schrieb Max Filippov: >> >>> Put the following errno value mappings under #ifdef: >>> >>> xtensa-semi.c: In function 'errno_h2g': >>> xtensa-semi.c:113: error: 'ENOTBLK' undeclared (first use in this >>> function) >>> xtensa-semi.c:113: error: (Each undeclared identifier is reported only >>> once >>> xtensa-semi.c:113: error: for each function it appears in.) >>> xtensa-semi.c:113: error: array index in initializer not of integer type >>> xtensa-semi.c:113: error: (near initialization for 'guest_errno') >>> xtensa-semi.c:124: error: 'ETXTBSY' undeclared (first use in this >>> function) >>> xtensa-semi.c:124: error: array index in initializer not of integer type >>> xtensa-semi.c:124: error: (near initialization for 'guest_errno') >>> xtensa-semi.c:134: error: 'ELOOP' undeclared (first use in this function) >>> xtensa-semi.c:134: error: array index in initializer not of integer type >>> xtensa-semi.c:134: error: (near initialization for 'guest_errno') >>> >>> Signed-off-by: Max Filippov >>> --- >>> >> >> Is semi hosting a useful feature when QEMU runs on a Windows host? > > It should be if windows is POSIX enough. > >> If not, you could conditionally compile the whole semi hosting code >> for non Windows only. >> >> If yes, what about the differences in system calls between UNIX like >> operating systems and Windows? Should the code for 'open' add O_BINARY? > > ...otherwise \n will turn to \r\n? IIRC this behaviour was tunable at the system > level under cygwin. Not under mingw? > > Is there a list of such differences? Signed-off-by: Stefan Weil Blue, please take the patch as it is and commit it: compilation for MinGW is currently broken, and the patch fixes that. The system calls should be handled by a separate patch. Yes, 'open' with MinGW opens files in text mode by default. That implies automatic translation from \n to \r\n on writes and vice versa on read. It also implies that seeking can give unexpected results. Or-ing the flags for open with O_BINARY would fix the problem and works also for other OS were we define O_BINARY = 0. Like Cygwin, MinGW also supports linking with binmode.o. That file changes the default for open to binary mode, so all open calls in QEMU would automatically be binary. Maybe that second alternative is the better one. I noticed that lseek takes an int32_t offset. Is this intentional? It limits file size to 2 GiB. I did not see other potential problems with the system calls. Thanks, Stefan W.