bin/71613: [PATCH] traceroute(8): cleanup of the usr.sbin/traceroute6 code

Dan Lukes dan at
Sat Mar 15 18:39:34 UTC 2008

Bruce Evans napsal/wrote, On 03/15/08 18:12:
> __COPYRIGHT() in <sys/cdefs.h> reduces this problem by concatenating
> __LINE__.  It could also concatenate a file name (but not __FILE__, since
> that is probably not an identifier).

	It's heuristic. It may, or may not work (it may or may not create 
unique name across all sources).

>>     We still have the problem the variable may be optimized out.
> __used prevents this.

	__used is nonstandard gcc extension. I tried it on gcc 3.4.6 and 4.2.3. 
It works.

	I don't know if it work for icc as I have no one.

	If it works, then it's good fix.

> volatile doesn't prevent the variable being optimized out for gcc-4.2.
> This makes some sense -- volatile sort of means "use it carefully", but
> when it is not used no care with it is needed. 

The meaning of volatile shall be "use it carefully, because you can't 
found which way the variable is used". If the gcc-4.2 optimized it out, 
it's definitely gcc's bug. If I claim "you don't know how it's used" the 
compiler shall never respond "I better know what I know than you".

But such discussion doesn't belong there.

> I prefer 'static char const __used copyright[]'.  Not sure where __used
> belongs.

	I have no problem with it if __used works for all relevant compilers. I 
prefer the form of a macro (may be other than __COPYRIGHT) for further 
maintenance, but no problem even with non-macro form.


	Well, it seems we reach consensus. So what about commitment of a patch 
for this four year old PR ? ;-)


More information about the freebsd-bugs mailing list