This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH][BZ #16195] Fix build warnings from systemtap probes in non-systemtap configurations
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: Siddhesh Poyarekar <siddhesh at redhat dot com>, libc-alpha at sourceware dot org
- Cc: jsm28 at gcc dot gnu dot org
- Date: Mon, 02 Dec 2013 11:57:54 -0500
- Subject: Re: [PATCH][BZ #16195] Fix build warnings from systemtap probes in non-systemtap configurations
- Authentication-results: sourceware.org; auth=none
- References: <20131202143250 dot GF14845 at spoyarek dot pnq dot redhat dot com>
On 12/02/2013 09:32 AM, Siddhesh Poyarekar wrote:
> Hi,
>
> Joseph pointed out in the bug report (and in an earlier thread) that
> systemtap probes cause build time warnings like the following:
>
> ../sysdeps/ieee754/dbl-64/e_atan2.c:602:4: warning: the address of 'p'
> will always evaluate as 'true' [-Waddress]
>
> due to the fact that we're now passing non-weak variables to
> LIBC_PROBE in the libm probes. This happens only on configurations
> that do not enable systemtap. The macro definition of LIBC_PROBE in
> this case only acts as a sanity checker to ensure that the number
> parameters passed to LIBC_PROBE is equal to the argument count
> parameter passed before it. This can be done in a much simpler manner
> by just adding a macro definition for each number of arguments. I am
> assuming here that we don't really want to bother with supporting
> LIBC_PROBE with an indeterminate number of arguments and if there is a
> need for a probe to have more data than what is currently supported (4
> arguments), one could simply add an additional macro here.
>
> Tested that it gets rid of the warning on i686 and also verified that
> nothing changed on x86_64. OK to commit?
>
> Siddhesh
>
> [BZ #16195]
> * include/stap-probe.h [!USE_STAP_PROBE && !__ASSEMBLER__]
> (LIBC_PROBE): Change definition to call STAP_PROBE* macros.
> (STAP_PROBE0): New macro.
> (STAP_PROBE1): Likewise.
> (STAP_PROBE2): Likewise.
> (STAP_PROBE3): Likewise.
> (STAP_PROBE4): Likewise.
>
> diff --git a/include/stap-probe.h b/include/stap-probe.h
> index 5f72556..e296350 100644
> --- a/include/stap-probe.h
> +++ b/include/stap-probe.h
> @@ -61,13 +61,14 @@
>
> # ifndef __ASSEMBLER__
> /* Evaluate all the arguments and verify that N matches their number. */
> -# define LIBC_PROBE(name, n, ...) \
> - do { \
> - _Bool __libc_probe_args[] = { 0, ## __VA_ARGS__ }; \
> - _Bool __libc_probe_verify_n[(sizeof __libc_probe_args / sizeof (_Bool)) \
> - == n + 1 ? 1 : -1]; \
> - (void) __libc_probe_verify_n; \
> - } while (0)
> +#define LIBC_PROBE(name, n, ...) STAP_PROBE##n (__VA_ARGS__)
> +
> +#define STAP_PROBE0()
> +#define STAP_PROBE1(a1)
> +#define STAP_PROBE2(a1, a2)
> +#define STAP_PROBE3(a1, a2, a3)
> +#define STAP_PROBE4(a1, a2, a3, a4)
> +
> # else
> # define LIBC_PROBE(name, n, ...) /* Nothing. */
> # endif
>
OK.
Cheers,
Carlos.