Hi all,

(CC'ing dtrace-discuss as an FYI+workaround)

I'm using dtrace -h to define provider probes for my application, and it wraps 
the resulting probe provider definitions in an #if _DTRACE_VERSION. Everything 
works fine for cc/CC, but gcc/g++ (gccfss v4.2.0) doesn't seem to define it and 
the provider call macros expand to nothing instead.

A diff shows that gcc uses an out of date version of the file; either the older 
version did not have the #define, or gcc's fixincludes script stripped the 
definition away. I suspect the former; how many other fixincludes headers are 
out of date?

There's an easy workaround, at least: just add the definition to gcc's version 
of the file. 
 
$ diff /usr/include/sys/feature_test.h $GCC_INCLUDES/sys/feature_test.h
0a1,9
> /*  DO NOT EDIT THIS FILE.
> 
>     It has been auto-edited by fixincludes from:
> 
>    "/usr/include/sys/feature_tests.h"
> 
>     This had to be done to correct non-standard usages in the
>     original, manufacturer supplied header file.  */
> 
2c11
<  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
---
>  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
9c18
< #pragma ident      "@(#)feature_tests.h    1.25    07/02/02 SMI"
---
> #pragma ident      "@(#)feature_tests.h    1.24    04/09/28 SMI"
112c121
< #if (__STDC__ - 0 == 1 && !defined(__GNUC__)) || \
---
> #if ( defined(__STRICT_ANSI__) && !defined(__GNUC__)) || \
365,370d373
< /*
<  * The following macro indicates header support for DTrace. The value is an
<  * integer that corresponds to the major version number for DTrace.
<  */
< #define    _DTRACE_VERSION 1
<
--
This message posted from opensolaris.org

Reply via email to