delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2015/05/17/04:45:28

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:content-type;
bh=pB3a5oBkBGQFY9/WmFAke07pM1WZyAduc8Hbq3phS5s=;
b=zAVS7mbq/pcWqrlW3GpaZhT2GB6Q82ovJf0d2fxRBT+IlKF2ItstDG95cai45fttNm
OeXku64JXV9k2A1r0FTI00EKtxsXf+viIwKez0Hstry+IS1E1BxJTVN7bEMDWV+hSug9
OQPkY9/O7Wd8yOP4JRRjGLY1XSHTTrUA0f0wXPaw5SvVGhHP1XNE11Proshs4xtpiZyk
K2tSpxtCIy0sDN2O66sX7f3ownbDcBul5R0PK3FBdNsQY3XqYiohOp48jhiWXIv/lSzt
g0XZl9XdsjUX4qwPFbEhvZwlysLn5ikdtWzFsrbd1ZWoEFZ5hT84kYfdFZpZQAzW81v9
fzNg==
MIME-Version: 1.0
X-Received: by 10.107.12.93 with SMTP id w90mr10451831ioi.10.1431852310262;
Sun, 17 May 2015 01:45:10 -0700 (PDT)
In-Reply-To: <555829A6.8010502@iki.fi>
References: <201505042003 DOT t44K3odg011007 AT delorie DOT com>
<CAA2C=vAjN-HamFRWCQak=QF_NPjR5-TBYZw1U5707MO0b=qXkw AT mail DOT gmail DOT com>
<554DF584 DOT 4020309 AT iki DOT fi>
<CAA2C=vDaOJb_RW2bQEFoM_cqwp7yhzwX-CB328r5GCCi6XcooA AT mail DOT gmail DOT com>
<55501DAD DOT 1080604 AT iki DOT fi>
<CAA2C=vAvMW-yquZLSN=Z39NU24Kqf7urjan90801i7BDTdqOvQ AT mail DOT gmail DOT com>
<55579278 DOT 8090301 AT iki DOT fi>
<CAA2C=vBaQKzmch_buxFm20DJLcG+zv6d6803+qMEx=baA4Frog AT mail DOT gmail DOT com>
<555829A6 DOT 8010502 AT iki DOT fi>
Date: Sun, 17 May 2015 11:45:10 +0300
Message-ID: <CAA2C=vA73qPvoDFytp3FeW6bCD1-XuGsFFoDinoKn2KYY1fkow@mail.gmail.com>
Subject: Re: ANNOUNCE: DJGPP 2.05 beta 1
From: "Ozkan Sezer (sezeroz AT gmail DOT com)" <djgpp AT delorie DOT com>
To: djgpp AT delorie DOT com
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

On 5/17/15, Andris Pavenis (andris DOT pavenis AT iki DOT fi) <djgpp AT delorie DOT com> wrote:
> On 05/16/2015 10:56 PM, Ozkan Sezer (sezeroz AT gmail DOT com) wrote:
>> On 5/16/15, Andris Pavenis (andris DOT pavenis AT iki DOT fi) <djgpp AT delorie DOT com>
>> wrote:
>>> with gcc >= 4.8?
>>> If we define own _rdtsc() we get duplicate definition of it when GCC own
>>> header x86intrin.h is also
>>> included (for new GCC version). That was the reason why I used GCC
>>> defined
>>> function instead
>>> of DJGPP one.
>>>
>>> Can you please show the error or warning messages form each
>>> problematic case?
>>>
>>> I tried to reproduce the problems: commented out the -I$(GCC_INC_DIR)
>>> additions to CFLAGS in both src/ and tests/makefile.in, compiled src
>>> using my gcc5 cross-compiler and got no errors or warnings for _rdtsc()
>>> Tried compiling the test programs: since I am on linux, had to do some
>>> voodoo in the makefiles by changing gcc and ld to cross- versions and
>>> by replacing rem.com with /bin/true, they just compiled. (of course,
>>> no run tests, and found other issues, but no _rdtsc() issues.)
> I do not remember exactly with which piece of software I got this problem
> with _rdtsc
>
> With DJGPP own _rdtsc the following 2 includes causes compile error:
>
> #include <x86intrin.h>
> #include <time.h>
>
> One should be able to use SSE/MMX/AVX instructions with DJGPP.
>
> ia32intrin.h defines _rdtsc() and as result one gets duplicate definition if
> one includes
> x86intrin.h before time.h without that change (including x86intrin.h
> instead
> of defining _rdtsc()).
>
> There is fortunately another way without including x86intrin.h from time.h:
>
> ia86intrin.h contains '#define _rdtsc() __rdtsc()' and it defines __rdtsc as
> an inline function.
> One could also undefine _rdtsc before defining our own.
>
> Andris
>
>


How about something like the following:  when building djgpp, keep our
version of _rdtsc(), but for users defer to gcc's version:

Index: include/time.h
===================================================================
RCS file: /cvs/djgpp/djgpp/include/time.h,v
retrieving revision 1.16
diff -u -r1.16 time.h
--- include/time.h	2 May 2015 07:31:49 -0000	1.16
+++ include/time.h	17 May 2015 08:14:37 -0000
@@ -112,7 +112,7 @@
 void		tzsetwall(void);
 uclock_t	uclock(void);

-#if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || (__GNUC__ > 4))
+#if !defined(_IN_DJBUILD) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
|| (__GNUC__ > 4))

 /* GCC-4.8 has own built-in _rdtsc for ix86. Therefore use it insted
of DJGPP one. */
 #include <x86intrin.h>
Index: src/makefile.cfg
===================================================================
RCS file: /cvs/djgpp/djgpp/src/makefile.cfg,v
retrieving revision 1.6
diff -u -r1.6 makefile.cfg
--- src/makefile.cfg	11 May 2015 11:00:14 -0000	1.6
+++ src/makefile.cfg	17 May 2015 08:14:37 -0000
@@ -46,16 +46,17 @@
 	@./misc.exe echo - "-Wundef" >>gcc.opt
 	@./misc.exe echo - "-Wcast-align" >>gcc.opt
 	@./misc.exe echo - "-Wsign-compare" >>gcc.opt
+	@./misc.exe echo - "-D_IN_DJBUILD" >>gcc.opt
 	@./misc.exe echo - "-nostdinc" >>gcc.opt
 	@./misc.exe echo - "$(IQUOTE)" >>gcc.opt

-
 gcc-l.opt: makefile.cfg
 	@./misc.exe echo - "-MD" >gcc-l.opt
 	@./misc.exe echo - "-O2" >>gcc-l.opt
 	@./misc.exe echo - "$(MTUNE)" >>gcc-l.opt
 	@./misc.exe echo - "-march=i386" >>gcc-l.opt
 	@./misc.exe echo - "-Wall" >>gcc-l.opt
+	@./misc.exe echo - "-D_IN_DJBUILD" >>gcc-l.opt
 	@./misc.exe echo - "-nostdinc" >>gcc-l.opt
 	@./misc.exe echo - "$(IQUOTE)" >>gcc-l.opt

Index: src/makefile.inc
===================================================================
RCS file: /cvs/djgpp/djgpp/src/makefile.inc,v
retrieving revision 1.16
diff -u -r1.16 makefile.inc
--- src/makefile.inc	30 Apr 2015 18:50:42 -0000	1.16
+++ src/makefile.inc	17 May 2015 08:14:37 -0000
@@ -51,7 +51,7 @@

 # Find GCC own include directory and add it to CFLAGS
 GCC_INC_DIR := $(shell $(CROSS_GCC) -print-file-name=include)
-CFLAGS += -I$(GCC_INC_DIR)
+#CFLAGS += -I$(GCC_INC_DIR)

 # Pass defines as compiler/assembler switches
 CFLAGS += -DGAS_MAJOR=$(GAS_MAJOR)

If this is acceptable (and works for you+everyone), a similar change
needs to be done in the tests makefiles. (I've done that locally and
cross-built the libc test programs without errors.)

--
O.S.

- Raw text -


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