linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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/

  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).