Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Dec 2000 15:11:21 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Brooks Davis <brooks@one-eyed-alien.net>
Cc:        audit@FreeBSD.ORG
Subject:   Re: gcc __attributes for format strings
Message-ID:  <20001201151121.J1474@gsmx07.alcatel.com.au>
In-Reply-To: <20001130193600.A4439@Odin.AC.HMC.Edu>; from brooks@one-eyed-alien.net on Thu, Nov 30, 2000 at 07:36:00PM -0800
References:  <20001126222048.A46809@citusc17.usc.edu> <200011271604.eARG49V29464@troutmask.apl.washington.edu> <20001201134903.H1474@gsmx07.alcatel.com.au> <20001130193600.A4439@Odin.AC.HMC.Edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2000-Nov-30 19:36:00 -0800, Brooks Davis <brooks@one-eyed-alien.net> wrote:
>On Fri, Dec 01, 2000 at 01:49:03PM +1100, Peter Jeremy wrote:
>> In general, gcc attributes are not directly put in the code.  Rather
>> there are a series of macros in <sys/cdefs.h> which map 4.4BSD
>> attributes onto compiler-specific attributes.  If we move to a
>> different compiler, we just need to change cdefs.h
>
>Too bad this won't work in general.

I know.

The ANSI standard reserved #pragma for these sorts of compiler hints.
Unfortunately, #pragma is totally useless for portable code.  The GCC
documentation says it best:

"   Some people object to the `__attribute__' feature, suggesting that
 ANSI C's `#pragma' should be used instead.  There are two reasons for
 not doing this.

  1. It is impossible to generate `#pragma' commands from a macro.

  2. There is no telling what the same `#pragma' might mean in another
     compiler.

    These two reasons apply to almost any application that might be
 proposed for `#pragma'.  It is basically a mistake to use `#pragma' for
 _anything_."

>  ISO should pull it's head out of it's ass and declare a standard.

It needs to declare a standard that is useful and extensible.  #pragma
only achieves the latter but by having a null set of standard meanings
and not allowing macros, it totally fails to be useful.

Using magic comment strings has a fairly long history, but is similarly
useless due to its inability to be used with macros.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001201151121.J1474>