linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Andreas Schwab <schwab@suse.de>
Cc: Alexander Viro <viro@math.psu.edu>,
	kumon@flab.fujitsu.co.jp, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] removal of "static foo = 0"
Date: Tue, 28 Nov 2000 16:16:12 +0100	[thread overview]
Message-ID: <20001128161612.B14675@athlon.random> (raw)
In-Reply-To: <Pine.GSO.4.21.0011272234550.7352-100000@weyl.math.psu.edu> <200011280955.eAS9t6I22393@hawking.suse.de>
In-Reply-To: <200011280955.eAS9t6I22393@hawking.suse.de>; from schwab@suse.de on Tue, Nov 28, 2000 at 10:55:06AM +0100

On Tue, Nov 28, 2000 at 10:55:06AM +0100, Andreas Schwab wrote:
> Alexander Viro <viro@math.psu.edu> writes:
> 
> |> On Tue, 28 Nov 2000, Andrea Arcangeli wrote:
> |> 
> |> > On Tue, Nov 28, 2000 at 12:10:33PM +0900, kumon@flab.fujitsu.co.jp wrote:
> |> > > If you have two files:
> |> > > test1.c:
> |> > > int a,b,c;
> |> > > 
> |> > > test2.c:
> |> > > int a,c;
> |> > > 
> |> > > Which is _stronger_?
> |> > 
> |> > Those won't link together as they aren't declared static.
> |> 
> |> Try it. They _will_ link together.
> 
> Not if you compile with -fno-common, which should actually be the default
> some day, IMHO.

I thought -fno-common was the default behaviour indeed, and I agree it should
become the default since current behaviour can lead to sublte bugs. (better I
discovered this gcc "extension" this way than after some day of debugging :)

I'm all for gcc extensions when they're powerful and useful, but this
one looks absolutely worthless. I don't see any advantage from the current
behaviour (avoid an "extern" in some include file that we have/want to write
anyways to write correct C code?), and at least in large project (like the
kernel) where different part of the project are handled by different people
using -fno-common is pretty much mandatory IMHO.

Think at somebody writing a driver starting from another driver, maybe
he renames most of the stuff but he forgets to rename an uninitialized
global variable. This bug won't trigger for him because he's not using
the other driver at the same time. It will trigger only when an unlucky
user will happen to use both drivers at the same time because he owns
both hardwares...

I disagree with GCC documentation:

`-fno-common'
     Allocate even uninitialized global variables in the bss section of
     the object file, rather than generating them as common blocks.
     This has the effect that if the same variable is declared (without
     `extern') in two different compilations, you will get an error
     when you link them.  The only reason this might be useful is if
			  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     you wish to verify that the program will work on other systems
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     which always work this way.
     ^^^^^^^^^^^^^^^^^^^^^^^^^^

That's one reason, but it's really not the interesting one...

Andrea
-
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/

  reply	other threads:[~2000-11-28 15:46 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-27  8:41 [PATCH] removal of "static foo = 0" Werner Almesberger
2000-11-27  5:56 ` Adam J. Richter
2000-11-27  8:39   ` David S. Miller
2000-11-27  9:08     ` Werner Almesberger
2000-11-27 17:21     ` Andrea Arcangeli
2000-11-27 17:36       ` Michael Meissner
2000-11-27 19:06         ` Andrea Arcangeli
2000-11-27 19:34           ` Richard B. Johnson
2000-11-28  0:28             ` Andrea Arcangeli
2000-11-28 11:25               ` Horst von Brand
2000-11-27 21:27         ` Marcus Sundberg
2000-11-28  0:49           ` real_root_dev Andries Brouwer
2000-11-28  3:10         ` [PATCH] removal of "static foo = 0" kumon
2000-11-28  3:28           ` Andrea Arcangeli
2000-11-28  3:35             ` Alexander Viro
2000-11-28  4:15               ` Michael Meissner
2000-11-28  9:55               ` Andreas Schwab
2000-11-28 15:16                 ` Andrea Arcangeli [this message]
2000-11-28 16:09                   ` Andreas Schwab
2000-11-28 19:29                     ` Andrea Arcangeli
2000-11-28 16:44                   ` Michael Meissner
2000-11-27 18:11       ` Richard B. Johnson
2000-11-27 18:01 ` Michael Meissner
  -- strict thread matches above, loose matches on Subject: below --
2000-11-26 17:53 Elmer Joandi
2000-11-26 18:36 ` Alexander Viro
2000-11-26 19:11   ` Elmer Joandi
2000-11-26 22:49 ` Rogier Wolff
2000-11-26 15:15 Adam J. Richter
2000-11-25 20:19 Andries Brouwer
2000-11-25 21:07 ` Russell King
2000-11-25 21:29   ` Andries Brouwer
2000-11-26  1:19     ` Russell King
2000-11-25 22:11 ` Herbert Xu
2000-11-25 22:46   ` Andries Brouwer
2000-11-25 22:53     ` James A Sutherland
2000-11-25 23:55       ` Tim Waugh
2000-11-26  3:10         ` James A Sutherland
2000-11-26 10:37         ` Tigran Aivazian
2000-11-26 14:52           ` Philipp Rumpf
2000-11-28  0:01           ` Peter Samuelson
2000-11-27  4:00         ` Michael Meissner
2000-11-25 23:02     ` Jeff Garzik
2000-11-26  2:08       ` Andries Brouwer
2000-11-26  9:22         ` Martin Mares
2000-11-25 23:33     ` Herbert Xu
2000-11-27 10:03     ` Helge Hafting
2000-11-27 20:33     ` Albert D. Cahalan
2000-11-27 22:57       ` Russell King
2000-11-29  1:46         ` Albert D. Cahalan
2000-11-29  3:21           ` Peter Samuelson
2000-11-29  7:25           ` Russell King
2000-11-25 22:27 ` Tigran Aivazian
2000-11-26  1:32   ` Andries Brouwer
2000-11-26  6:21     ` Werner Almesberger
2000-11-26  2:11   ` Georg Nikodym
2000-11-26  4:25     ` Alan Cox
2000-11-26  5:01       ` John Alvord
2000-11-26  5:10         ` Andre Hedrick
2000-11-26  6:22           ` Keith Owens
2000-11-26  6:28             ` Andre Hedrick
2000-11-26 10:43         ` Tigran Aivazian
2000-11-26 10:52         ` Tigran Aivazian
2000-11-24  7:47           ` Pavel Machek
2000-11-26 14:32           ` bert hubert
2000-11-26 10:52         ` Rogier Wolff
2000-11-26 14:13       ` Philipp Rumpf
2000-11-26 20:47       ` H. Peter Anvin
2000-11-27 21:12         ` Kai Henningsen
2000-11-26 15:19     ` Georg Nikodym

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=20001128161612.B14675@athlon.random \
    --to=andrea@suse.de \
    --cc=kumon@flab.fujitsu.co.jp \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schwab@suse.de \
    --cc=viro@math.psu.edu \
    /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).