From: Thomas Pornin <Thomas.Pornin@ens.fr>
To: linux-kernel@vger.kernel.org
Subject: Re: non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?)
Date: Fri, 3 Nov 2000 12:33:35 +0100 [thread overview]
Message-ID: <20001103123335.A31768@bolet.ens.fr> (raw)
In-Reply-To: <3A01B8BB.A17FE178@Rikers.org>
In article <3A01B8BB.A17FE178@Rikers.org> you write:
> There are two immediate reasons I can come up with for this:
I do not quite follow you on these two reasons. I daily work on an
Alpha machine, which runs under Linux, and I use the Compaq C compiler
since it gives better code on the applications I am developping (I am
a student in cryptography; I gain 30% speed on MD5 code, for instance,
compared to any version of gcc/egcs).
I think that some small parts of the kernel might take advantage of
the better code (/dev/urandom for instance) but, overall, this is not
critical.
However, using two different compilers is a great way to exhibit bugs.
I was told that some of the code in the kernel makes assumptions about
how gcc optimizes code, which on time to time leads to some problems
when a new version of gcc implements a different strategy. I am not
(yet) an optimizer god, therefore I will not comment any further on this
issue; but I think that it is sane practice, if one wants to remain on
the light side of the code (the one that is specified and does not rely
on not-very-well-documented features), to stress-test portability with
different sets of tools.
Anyway, among the points you talked about:
> 1. C++ style comments
Those ones are in C99. All modern compilers know them, or are doomed to
know them in near future since they are a requirement of the standard.
> 7. Macros with variable numbers of arguments
C99 knows them, with the following syntax: the macro is defined with an
ellipsis (...) as last argument, that represents all extra arguments
(possibly none). The arguments are accessed through the identifier
__VA_ARGS__, which contains all of them (with separating commas).
At least gcc-2.95.2 knows this syntax.
If one wants to build a Linux kernel with another compiler, I would
say that the more critical points are:
** inline assembly (must be almost completely rewritten for each new
compiler -- yuck)
** generalized lvalues (the result of a comma operator being a lvalue
if its last operand is a lvalue)
** compound statements (statement blocks inside expressions)
Other features are likely to be implemented in modern compilers, maybe
with a slightly different syntax, that could be adressed through macros,
or an enhanced preprocessing (put some perl script or smart C parser
between cpp and the compiler itself).
All this is only my opinion. But if I were to design a new OS kernel
right now, I would take special care to isolate and document extensions
as much as possible, so that I could ease portability and find bugs more
easily.
--Thomas Pornin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2000-11-03 11:34 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-11-01 22:57 Where did kgcc go in 2.4.0-test10 ? Kurt Garloff
2000-11-01 22:40 ` J . A . Magallon
2000-11-01 22:47 ` David S. Miller
2000-11-01 22:45 ` Gérard Roudier
2000-11-01 23:07 ` Ben Pfaff
2000-11-01 23:11 ` Alan Cox
2000-11-01 23:15 ` Jeff Garzik
2000-11-01 23:12 ` David S. Miller
2000-11-01 23:21 ` Tom Rini
2000-11-01 23:30 ` Alan Cox
2000-11-01 23:36 ` Tom Rini
2000-11-02 0:22 ` Jeff Garzik
2000-11-02 4:50 ` Mike Galbraith
2000-11-02 4:59 ` Jeff Garzik
2000-11-01 23:29 ` David S. Miller
2000-11-01 23:45 ` David S. Miller
2000-11-02 0:00 ` Cort Dougan
2000-11-02 0:54 ` Alan Cox
2000-11-02 0:11 ` David S. Miller
2000-11-02 0:32 ` H. Peter Anvin
2000-11-02 0:59 ` Bill Nottingham
2000-11-02 18:55 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Tim Riker
2000-11-02 19:07 ` Alan Cox
2000-11-02 19:07 ` Tim Riker
2000-11-02 19:24 ` Ben Ford
2000-11-02 19:31 ` Tim Riker
2000-11-02 20:37 ` Theodore Y. Ts'o
2000-11-02 20:53 ` Tim Riker
2000-11-02 21:06 ` Christoph Hellwig
2000-11-02 21:21 ` non-gcc linux? Tim Riker
2000-11-02 22:46 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Theodore Y. Ts'o
2000-11-02 23:16 ` Tim Riker
2000-11-03 12:02 ` Martin Dalecki
2000-11-04 11:30 ` Kai Henningsen
2000-11-02 20:53 ` Alan Cox
2000-11-02 21:04 ` Tim Riker
2000-11-02 21:17 ` Alan Cox
2000-11-02 21:23 ` Andi Kleen
2000-11-02 21:27 ` non-gcc linux? Tim Riker
2000-11-02 21:41 ` Andi Kleen
2000-11-02 21:43 ` Tim Riker
2000-11-03 7:21 ` Gábor Lénárt
2000-11-04 11:39 ` Kai Henningsen
2000-11-04 11:37 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Kai Henningsen
2000-11-07 16:33 ` Jes Sorensen
2000-11-07 20:52 ` Tim Riker
2000-11-07 21:06 ` Richard B. Johnson
2000-11-07 22:08 ` David Lang
2000-11-07 21:36 ` Richard B. Johnson
2000-11-08 0:04 ` yodaiken
2000-11-02 19:18 ` Andi Kleen
2000-11-02 19:17 ` non-gcc linux? Tim Riker
2000-11-02 19:52 ` Andrea Arcangeli
2000-11-02 20:00 ` Tim Riker
2000-11-02 20:29 ` Andrea Arcangeli
2000-11-02 22:23 ` D. Hugh Redelmeier
2000-11-02 22:31 ` Jeff Garzik
2000-11-03 22:02 ` D. Hugh Redelmeier
2000-11-04 5:34 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Aaron Sethman
2000-11-04 9:18 ` non-gcc linux? Tim Riker
2000-11-04 10:58 ` Alan Cox
2000-11-05 20:52 ` Tim Riker
2000-11-05 21:06 ` Jakub Jelinek
2000-11-05 21:18 ` Tim Riker
2000-11-05 22:42 ` Marc Lehmann
2000-11-05 23:05 ` Tim Riker
2000-11-06 0:05 ` Marc Lehmann
2000-11-06 8:53 ` Thomas Pornin
2000-11-05 23:26 ` Ion Badulescu
2000-11-06 6:34 ` Eric W. Biederman
2000-11-05 22:46 ` Alan Cox
2000-11-05 22:45 ` Alan Cox
2000-11-05 22:52 ` Tim Riker
2000-11-04 12:20 ` Kai Henningsen
2000-11-06 17:14 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Ralf Baechle
2000-11-02 20:21 ` Andi Kleen
2000-11-02 20:27 ` Christoph Hellwig
2000-11-05 13:03 ` Kai Henningsen
2000-11-03 11:33 ` Thomas Pornin [this message]
2000-11-04 11:19 ` Kai Henningsen
2000-11-04 12:24 ` Kai Henningsen
2000-11-05 3:28 ` Michael Meissner
2000-11-02 0:21 ` Where did kgcc go in 2.4.0-test10 ? Nathan Paul Simons
2000-11-02 2:42 ` Marc Lehmann
2000-11-02 21:24 ` Gérard Roudier
2000-11-02 22:37 ` David S. Miller
2000-11-01 23:54 ` Cort Dougan
2000-11-02 6:28 ` Jakub Jelinek
2000-11-02 0:06 ` David S. Miller
2000-11-02 0:11 ` Nathan Paul Simons
2000-11-02 0:22 ` Tom Rini
2000-11-02 0:26 ` Jeff Garzik
2000-11-02 0:56 ` Alan Cox
2000-11-01 23:37 ` Nathan Paul Simons
2000-11-02 0:17 ` Miquel van Smoorenburg
2000-11-02 0:30 ` Jeff Garzik
2000-11-02 1:01 ` Miquel van Smoorenburg
2000-11-01 22:53 ` Alan Cox
2000-11-02 1:12 ` Jeff Garzik
2000-11-02 2:47 ` J . A . Magallon
2000-11-02 3:26 ` Jeff Garzik
2000-11-02 11:40 ` Alan Cox
2000-11-01 23:04 ` George
2000-11-02 1:08 ` Jan Dvorak
2000-11-01 23:12 ` Alan Cox
[not found] <fa.g3i0smv.15loso7@ifi.uio.no>
[not found] ` <fa.cjn9ksv.1a0m82t@ifi.uio.no>
2000-11-04 6:19 ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Russ Allbery
2000-11-04 8:40 ` Michael Meissner
2000-11-04 8:44 ` Russ Allbery
2000-11-06 12:06 ` Horst von Brand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20001103123335.A31768@bolet.ens.fr \
--to=thomas.pornin@ens.fr \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).