Re: [RFC V3 1/3] perf, tools: Support wildcards on pmu name in dynamic pmu events

From: Agustin Vega-Frias
Date: Wed Mar 07 2018 - 14:49:58 EST


On 2018-03-07 14:39, Arnaldo Carvalho de Melo wrote:
Em Wed, Mar 07, 2018 at 04:05:43PM -0300, Arnaldo Carvalho de Melo escreveu:
Em Wed, Mar 07, 2018 at 04:05:09PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Mar 07, 2018 at 10:54:15AM -0800, Andi Kleen escreveu:
> > > Sorry about that. That's probably because FNM_EXTMATCH is a GNU extension,
> > > not POSIX, and the Alpine and Android runtimes likely don't implement
> > > that...
> > > I'll send a fix reverting back to the strncmp to ignore the uncore_ prefix,
> > > and dropping that extension.
> >
> > Just don't set it? Even the basic glob patterns are useful.
>
> Or use:
>
> #ifndef FNM_EXTMATCH
> #define FNM_EXTMATCH 0
> #endif
>
> So on systems without it, its not used, while on GNU systems, we have
> that functionality (pretty fancy, someone may need that... ;-))

I'll try this route, btw, no need to send more patches for now.

So, with the patch at the end of this message, it works now in those
systems:

[root@jouet ~]# dm
1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0
5 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623
(Red Hat 4.8.5-11)
6 amazonlinux:2 : Ok gcc (GCC) 7.2.1 20170915
(Red Hat 7.2.1-2)
7 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc
(GCC) 4.9.x 20150123 (prerelease)
8 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc
(GCC) 4.9.x 20150123 (prerelease)
9 centos:5 : Ok gcc (GCC) 4.1.2 20080704
(Red Hat 4.1.2-55)
10 centos:6 : Ok gcc (GCC) 4.4.7 20120313
(Red Hat 4.4.7-18)

I stopped the test at this point to process some more patches, will
restart the tests with those extra patches and if all goes well with the
other 46 build environments, push upstream, thanks.

- Arnaldo

diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 316ac073aa78..18473be7d787 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -9,6 +9,13 @@
#define YYDEBUG 1

#include <fnmatch.h>
+/*
+ * GNU extension, so better define it to 0 for systems such
+ * as Android and Alpine Linux.
+ */
+#ifndef FNM_EXTMATCH
+#define FNM_EXTMATCH 0
+#endif
#include <linux/compiler.h>
#include <linux/list.h>
#include <linux/types.h>

Hey Jiri,

The downside is that, while the compilation now works on those
systems, the pattern will not work as intended in them :o(
Let me cook something and send it ASAP.

Thanks,
AgustÃn

--
Qualcomm Datacenter Technologies, Inc. on behalf of the Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.