This is the mail archive of the cygwin-apps@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: processor compatibility when building packages


Chris Faylor wrote:
> 
> On Sun, Jul 09, 2000 at 12:32:50AM -0400, Charles Wilson wrote:
> >DJ Delorie wrote:
> >>>Does cygwin only officially work on i686, so that it is okay to use
> >>>these routines and break compatibility with older systems?
> >>
> >>Please do not break older systems.
> >
> >My inclination was to maintain as much compatibility as possible.
> >However, I was confused since the official platform triple is now
> >i686-pc-cygwin, not i386-pc-cygwin or ix86-pc-cygwin.  It *USED* to be
> >i386- but was changed sometime in the last six months.  Why?  What does
> >the new triple signify?
> 
> The last time I asked about this, I was informed that using the
> i686-pc-cygwin triple does not break anything.  You still have to use
> special compiler flags to create code that is unusable on older CPUs.
> I've sent mail to a gcc engineer to confirm this but he's probably
> getting sick of me asking this question.
> 

I'm sure that's correct. I wasn't asking about the technical
ins-and-outs of what happens when you 'configure
--target=i686-pc-cygwin' but rather about the *human factors*. To me,
since we're supposed to build apps for 'latest' using i686-, it implies
that the software COULD be restricted to i686 and better ONLY. 

For instance, the Red Hat contrib site for RH Linux contains the
following tree: 
RPMS/i386
RPMS/i586
RPMS/i686

I assume that the stuff in RPMS/i386 works on pretty much all x86
hardware. However, it's possible that the packager who created an rpm in
RPMS/i686 actually SET some of those funny gcc flags, and included
i686-specific assembler routines, etc. So, I better avoid RPMS/i686 when
downloading for my ancient 486 router.

It's the same thing here: to me, using i686- means it's ok to go ahead
and set the gcc flags, include the MMX assembler code, etc.

Based on your response and DJ's, that interpretation is NOT true for
cygwin. Cygwin is using the i686- moniker to denote 'Yup. It'll work on
a 686. (btw it'll work on 586, 486, and 386 too)'. Linux (I think) uses
i686- to denote 'Yup. It'll work on 686 and better. But not worse'.


> In general, I think we'll probably get fewer questions using i686 than
> i386.  Since the i?86-pc-cygwin directory is disappearing, this may
> not be as much of an issue.

That is true -- on the main cygwin list. However, on the cygwin-apps
list it needs to be clarified -- which I think this thread has done.

To sum up:

target=i686-pc-cygwin does NOT give license to use 686-optimized hand
coded assembly routines in the distribution packages, nor to use the
-m686 and similar flags when compiling with gcc. Packages in 'latest'
must be backwards compatible to i386. Even if the target is i686. :-)

--Chuck

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]