public inbox for linux-kernel@vger.kernel.org
 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:40 Where did kgcc go in 2.4.0-test10 ? J . A . Magallon
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 22:57 ` Kurt Garloff
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:12       ` David S. Miller
2000-11-01 23:11     ` Alan Cox
2000-11-01 23:15       ` Jeff Garzik
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:37     ` Nathan Paul Simons
2000-11-01 23:29       ` David S. Miller
2000-11-01 23:54         ` Cort Dougan
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:21             ` Nathan Paul Simons
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-04 11:30                                   ` non-gcc linux? (was Re: Where did kgcc go in 2.4.0-test10?) Kai Henningsen
2000-11-02 22:46                                 ` Theodore Y. Ts'o
2000-11-02 23:16                                   ` Tim Riker
2000-11-03 12:02                                 ` Martin Dalecki
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-04 12:24                       ` Kai Henningsen
2000-11-05  3:28                         ` Michael Meissner
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-02  2:42             ` Where did kgcc go in 2.4.0-test10 ? Marc Lehmann
2000-11-02 21:24             ` Gérard Roudier
2000-11-02 22:37               ` David S. Miller
2000-11-02  6:28           ` Jakub Jelinek
2000-11-02  0:11         ` Nathan Paul Simons
2000-11-02  0:06           ` David S. Miller
2000-11-02  0:22           ` Tom Rini
2000-11-02  0:26           ` Jeff Garzik
2000-11-02  0:56           ` Alan Cox
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 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