linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Minor perf build fixes
@ 2013-07-05 10:16 Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 1/4] perf/Makefile: do not open-code shell-sq Ramkumar Ramachandra
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-05 10:16 UTC (permalink / raw)
  To: LKML

Hi,

After Namhyung's review of the first iteration, I realized that I'd
made a few mistakes.  This iteration should be much better.

[1/4] is the same as before.

[2/4] is new, and is used in [4/4].

[3/4] introduces a util/perf-perl.h to include <perl.h> with #pragma
statements, hence eliminating duplication.  It then updates Context.xs
and trace-event-perl.c to use this new header.

Also, notice that feature-tests.mak has not been touched in this
iteration: the Perl check passes without needing the #pragma
statements (although I'm not sure why exactly).

Thanks.

Ramkumar Ramachandra (4):
  perf/Makefile: do not open-code shell-sq
  perf/Perf-Trace-Util: fix broken include in Context.xs
  perf: squelch warnings from perl.h to compile-pass
  perf/Perf-Trace-Util: regenerate Context.c

 tools/perf/Makefile                                |   2 +-
 tools/perf/config/Makefile                         |  23 ++-
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c  | 215 +++++++++++++++++----
 tools/perf/scripts/perl/Perf-Trace-Util/Context.xs |   6 +-
 tools/perf/util/perf-perl.h                        |  10 +
 .../perf/util/scripting-engines/trace-event-perl.c |   2 +-
 6 files changed, 199 insertions(+), 59 deletions(-)
 create mode 100644 tools/perf/util/perf-perl.h

-- 
1.8.3.1.643.gebeea52.dirty


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/4] perf/Makefile: do not open-code shell-sq
  2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
@ 2013-07-05 10:16 ` Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 2/4] perf/Perf-Trace-Util: fix broken include in Context.xs Ramkumar Ramachandra
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-05 10:16 UTC (permalink / raw)
  To: LKML; +Cc: Michael Witten, Ingo Molnar

d24e473e (perf_counter: copy in Git's top Makefile, 2009-04-20) started
by determining *_SQ variables (shell-quoted equivalents) by calling
subst by hand, with the rationale that $(call) must be avoided to
accommodate ancient setups.  That reasoning does not hold true anymore,
as our Makefiles are filled with $(call) invocations now.  So, use the
shell-sq function introduced in ced465c4 (perf tools: Makefile:
PYTHON{,_CONFIG} to bandage Python 3 incompatibility, 2011-04-02) in
place of open-coding.

Cc: Michael Witten <mfwitten@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 tools/perf/Makefile        |  2 +-
 tools/perf/config/Makefile | 23 +++++++++++------------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 203cb0e..ace1784 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -731,7 +731,7 @@ cscope:
 	$(FIND) . -name '*.[hcS]' -print | xargs cscope -b
 
 ### Detect prefix changes
-TRACK_CFLAGS = $(subst ','\'',$(CFLAGS)):\
+TRACK_CFLAGS = $(call escape-for-shell-sq,$(CFLAGS)):\
              $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)
 
 $(OUTPUT)PERF-CFLAGS: .FORCE-PERF-CFLAGS
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index f139dcd..3025d87 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -457,21 +457,20 @@ ETC_PERFCONFIG = etc/perfconfig
 endif
 lib = lib
 
-# Shell quote (do not use $(call) to accommodate ancient setups);
-ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG))
-DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
-bindir_SQ = $(subst ','\'',$(bindir))
-mandir_SQ = $(subst ','\'',$(mandir))
-infodir_SQ = $(subst ','\'',$(infodir))
-perfexecdir_SQ = $(subst ','\'',$(perfexecdir))
-template_dir_SQ = $(subst ','\'',$(template_dir))
-htmldir_SQ = $(subst ','\'',$(htmldir))
-prefix_SQ = $(subst ','\'',$(prefix))
-sysconfdir_SQ = $(subst ','\'',$(sysconfdir))
+ETC_PERFCONFIG_SQ = $(call shell-sq,$(ETC_PERFCONFIG))
+DESTDIR_SQ = $(call shell-sq,$(DESTDIR))
+bindir_SQ = $(call shell-sq,$(bindir))
+mandir_SQ = $(call shell-sq,$(mandir))
+infodir_SQ = $(call shell-sq,$(infodir))
+perfexecdir_SQ = $(call shell-sq,$(perfexecdir))
+template_dir_SQ = $(call shell-sq,$(template_dir))
+htmldir_SQ = $(call shell-sq,$(htmldir))
+prefix_SQ = $(call shell-sq,$(prefix))
+sysconfdir_SQ = $(call shell-sq,$(sysconfdir))
 
 ifneq ($(filter /%,$(firstword $(perfexecdir))),)
 perfexec_instdir = $(perfexecdir)
 else
 perfexec_instdir = $(prefix)/$(perfexecdir)
 endif
-perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
+perfexec_instdir_SQ = $(call shell-sq,$(perfexec_instdir))
-- 
1.8.3.1.643.gebeea52.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/4] perf/Perf-Trace-Util: fix broken include in Context.xs
  2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 1/4] perf/Makefile: do not open-code shell-sq Ramkumar Ramachandra
@ 2013-07-05 10:16 ` Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 3/4] perf: squelch warnings from perl.h to compile-pass Ramkumar Ramachandra
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-05 10:16 UTC (permalink / raw)
  To: LKML; +Cc: Arnaldo Carvalho de Melo

765532c8 (perf script: Finish the rename from trace to script,
2010-12-23) made a mistake during find-and-replace replacing
"../../../util/trace-event.h" with "../../../util/script-event.h", a
non-existent file.  Fix this include.

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
index c1e2ed1..8c7ea42 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
@@ -23,7 +23,7 @@
 #include "perl.h"
 #include "XSUB.h"
 #include "../../../perf.h"
-#include "../../../util/script-event.h"
+#include "../../../util/trace-event.h"
 
 MODULE = Perf::Trace::Context		PACKAGE = Perf::Trace::Context
 PROTOTYPES: ENABLE
-- 
1.8.3.1.643.gebeea52.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/4] perf: squelch warnings from perl.h to compile-pass
  2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 1/4] perf/Makefile: do not open-code shell-sq Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 2/4] perf/Perf-Trace-Util: fix broken include in Context.xs Ramkumar Ramachandra
@ 2013-07-05 10:16 ` Ramkumar Ramachandra
  2013-07-05 10:16 ` [PATCH v2 4/4] perf/Perf-Trace-Util: regenerate Context.c Ramkumar Ramachandra
  2013-07-09  5:22 ` [PATCH v2 0/4] Minor perf build fixes Namhyung Kim
  4 siblings, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-05 10:16 UTC (permalink / raw)
  To: LKML; +Cc: Arnaldo Carvalho de Melo, Namhyung Kim

Currently, a simple

  $ make

errors out because we compile with -Werror by default, turning all
warnings into errors.  Although no warnings are emitted by our code
itself, two kinds of warnings are emitted by perl.h (perl 5.18.0):

  -Wundef and -Wswitch-default

Use #pragma statements to squelch exactly those warnings.  The next
patch will regenerate Context.c from Context.xs and make the compile
pass.

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.xs   |  4 ++--
 tools/perf/util/perf-perl.h                          | 10 ++++++++++
 tools/perf/util/scripting-engines/trace-event-perl.c |  2 +-
 3 files changed, 13 insertions(+), 3 deletions(-)
 create mode 100644 tools/perf/util/perf-perl.h

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
index 8c7ea42..509d22e 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
@@ -19,8 +19,8 @@
  *
  */
 
-#include "EXTERN.h"
-#include "perl.h"
+#include <EXTERN.h>
+#include "../../../util/perf-perl.h"
 #include "XSUB.h"
 #include "../../../perf.h"
 #include "../../../util/trace-event.h"
diff --git a/tools/perf/util/perf-perl.h b/tools/perf/util/perf-perl.h
new file mode 100644
index 0000000..49995d2
--- /dev/null
+++ b/tools/perf/util/perf-perl.h
@@ -0,0 +1,10 @@
+#ifndef __PERF_PERL_H
+#define __PERF_PERL_H
+
+#pragma GCC diagnostic ignored "-Wundef"
+#pragma GCC diagnostic ignored "-Wswitch-default"
+#include <perl.h>
+#pragma GCC diagnostic error "-Wundef"
+#pragma GCC diagnostic error "-Wswitch-default"
+
+#endif
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index eacec85..25fd2dc 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -27,7 +27,7 @@
 
 #include "../util.h"
 #include <EXTERN.h>
-#include <perl.h>
+#include "../perf-perl.h"
 
 #include "../../perf.h"
 #include "../thread.h"
-- 
1.8.3.1.643.gebeea52.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 4/4] perf/Perf-Trace-Util: regenerate Context.c
  2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
                   ` (2 preceding siblings ...)
  2013-07-05 10:16 ` [PATCH v2 3/4] perf: squelch warnings from perl.h to compile-pass Ramkumar Ramachandra
@ 2013-07-05 10:16 ` Ramkumar Ramachandra
  2013-07-09  5:22 ` [PATCH v2 0/4] Minor perf build fixes Namhyung Kim
  4 siblings, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-05 10:16 UTC (permalink / raw)
  To: LKML; +Cc: Tom Zanussi, Arnaldo Carvalho de Melo

>From Context.xs, using the procedure described in the README.  Now, a
simple

  $ make

builds everything correctly.

Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 215 +++++++++++++++++-----
 1 file changed, 173 insertions(+), 42 deletions(-)

diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 790ceba..7974f2b 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -1,8 +1,8 @@
 /*
- * This file was generated automatically by ExtUtils::ParseXS version 2.18_02 from the
+ * This file was generated automatically by ExtUtils::ParseXS version 3.18 from the
  * contents of Context.xs. Do not edit this file, edit Context.xs instead.
  *
- *	ANY CHANGES MADE HERE WILL BE LOST! 
+ *    ANY CHANGES MADE HERE WILL BE LOST!
  *
  */
 
@@ -28,31 +28,165 @@
  *
  */
 
-#include "EXTERN.h"
-#include "perl.h"
+#include <EXTERN.h>
+#include "../../../util/perf-perl.h"
 #include "XSUB.h"
 #include "../../../perf.h"
 #include "../../../util/trace-event.h"
 
+#line 38 "Context.c"
 #ifndef PERL_UNUSED_VAR
 #  define PERL_UNUSED_VAR(var) if (0) var = var
 #endif
 
-#line 42 "Context.c"
+#ifndef dVAR
+#  define dVAR		dNOOP
+#endif
+
+
+/* This stuff is not part of the API! You have been warned. */
+#ifndef PERL_VERSION_DECIMAL
+#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
+#endif
+#ifndef PERL_DECIMAL_VERSION
+#  define PERL_DECIMAL_VERSION \
+	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
+#endif
+#ifndef PERL_VERSION_GE
+#  define PERL_VERSION_GE(r,v,s) \
+	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+#ifndef PERL_VERSION_LE
+#  define PERL_VERSION_LE(r,v,s) \
+	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+
+/* XS_INTERNAL is the explicit static-linkage variant of the default
+ * XS macro.
+ *
+ * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
+ * "STATIC", ie. it exports XSUB symbols. You probably don't want that
+ * for anything but the BOOT XSUB.
+ *
+ * See XSUB.h in core!
+ */
+
+
+/* TODO: This might be compatible further back than 5.10.0. */
+#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
+#  undef XS_EXTERNAL
+#  undef XS_INTERNAL
+#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
+#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
+#    define XS_INTERNAL(name) STATIC XSPROTO(name)
+#  endif
+#  if defined(__SYMBIAN32__)
+#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
+#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
+#  endif
+#  ifndef XS_EXTERNAL
+#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
+#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
+#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
+#    else
+#      ifdef __cplusplus
+#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
+#        define XS_INTERNAL(name) static XSPROTO(name)
+#      else
+#        define XS_EXTERNAL(name) XSPROTO(name)
+#        define XS_INTERNAL(name) STATIC XSPROTO(name)
+#      endif
+#    endif
+#  endif
+#endif
+
+/* perl >= 5.10.0 && perl <= 5.15.1 */
+
+
+/* The XS_EXTERNAL macro is used for functions that must not be static
+ * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
+ * macro defined, the best we can do is assume XS is the same.
+ * Dito for XS_INTERNAL.
+ */
+#ifndef XS_EXTERNAL
+#  define XS_EXTERNAL(name) XS(name)
+#endif
+#ifndef XS_INTERNAL
+#  define XS_INTERNAL(name) XS(name)
+#endif
+
+/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
+ * internal macro that we're free to redefine for varying linkage due
+ * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
+ * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
+ */
+
+#undef XS_EUPXS
+#if defined(PERL_EUPXS_ALWAYS_EXPORT)
+#  define XS_EUPXS(name) XS_EXTERNAL(name)
+#else
+   /* default to internal */
+#  define XS_EUPXS(name) XS_INTERNAL(name)
+#endif
+
+#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
+
+/* prototype to pass -Wmissing-prototypes */
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
 
-XS(XS_Perf__Trace__Context_common_pc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_common_pc)
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
 {
-#ifdef dVAR
-    dVAR; dXSARGS;
+    const GV *const gv = CvGV(cv);
+
+    PERL_ARGS_ASSERT_CROAK_XS_USAGE;
+
+    if (gv) {
+        const char *const gvname = GvNAME(gv);
+        const HV *const stash = GvSTASH(gv);
+        const char *const hvname = stash ? HvNAME(stash) : NULL;
+
+        if (hvname)
+            Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
+        else
+            Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
+    } else {
+        /* Pants. I don't think that it should be possible to get here. */
+        Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
+    }
+}
+#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE
+
+#ifdef PERL_IMPLICIT_CONTEXT
+#define croak_xs_usage(a,b)    S_croak_xs_usage(aTHX_ a,b)
 #else
-    dXSARGS;
+#define croak_xs_usage        S_croak_xs_usage
 #endif
+
+#endif
+
+/* NOTE: the prototype of newXSproto() is different in versions of perls,
+ * so we define a portable version of newXSproto()
+ */
+#ifdef newXS_flags
+#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
+#else
+#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
+#endif /* !defined(newXS_flags) */
+
+#line 180 "Context.c"
+
+XS_EUPXS(XS_Perf__Trace__Context_common_pc); /* prototype to pass -Wmissing-prototypes */
+XS_EUPXS(XS_Perf__Trace__Context_common_pc)
+{
+    dVAR; dXSARGS;
     if (items != 1)
-       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_pc", "context");
-    PERL_UNUSED_VAR(cv); /* -W */
+       croak_xs_usage(cv,  "context");
     {
-	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
+	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)))
+;
 	int	RETVAL;
 	dXSTARG;
 
@@ -63,19 +197,15 @@ XS(XS_Perf__Trace__Context_common_pc)
 }
 
 
-XS(XS_Perf__Trace__Context_common_flags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_common_flags)
+XS_EUPXS(XS_Perf__Trace__Context_common_flags); /* prototype to pass -Wmissing-prototypes */
+XS_EUPXS(XS_Perf__Trace__Context_common_flags)
 {
-#ifdef dVAR
     dVAR; dXSARGS;
-#else
-    dXSARGS;
-#endif
     if (items != 1)
-       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_flags", "context");
-    PERL_UNUSED_VAR(cv); /* -W */
+       croak_xs_usage(cv,  "context");
     {
-	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
+	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)))
+;
 	int	RETVAL;
 	dXSTARG;
 
@@ -86,19 +216,15 @@ XS(XS_Perf__Trace__Context_common_flags)
 }
 
 
-XS(XS_Perf__Trace__Context_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_common_lock_depth)
+XS_EUPXS(XS_Perf__Trace__Context_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
+XS_EUPXS(XS_Perf__Trace__Context_common_lock_depth)
 {
-#ifdef dVAR
     dVAR; dXSARGS;
-#else
-    dXSARGS;
-#endif
     if (items != 1)
-       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_lock_depth", "context");
-    PERL_UNUSED_VAR(cv); /* -W */
+       croak_xs_usage(cv,  "context");
     {
-	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
+	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)))
+;
 	int	RETVAL;
 	dXSTARG;
 
@@ -111,25 +237,30 @@ XS(XS_Perf__Trace__Context_common_lock_depth)
 #ifdef __cplusplus
 extern "C"
 #endif
-XS(boot_Perf__Trace__Context); /* prototype to pass -Wmissing-prototypes */
-XS(boot_Perf__Trace__Context)
+XS_EXTERNAL(boot_Perf__Trace__Context); /* prototype to pass -Wmissing-prototypes */
+XS_EXTERNAL(boot_Perf__Trace__Context)
 {
-#ifdef dVAR
     dVAR; dXSARGS;
+#if (PERL_REVISION == 5 && PERL_VERSION < 9)
+    char* file = __FILE__;
 #else
-    dXSARGS;
-#endif
     const char* file = __FILE__;
+#endif
 
     PERL_UNUSED_VAR(cv); /* -W */
     PERL_UNUSED_VAR(items); /* -W */
-    XS_VERSION_BOOTCHECK ;
+#ifdef XS_APIVERSION_BOOTCHECK
+    XS_APIVERSION_BOOTCHECK;
+#endif
+    XS_VERSION_BOOTCHECK;
 
-        newXSproto("Perf::Trace::Context::common_pc", XS_Perf__Trace__Context_common_pc, file, "$");
-        newXSproto("Perf::Trace::Context::common_flags", XS_Perf__Trace__Context_common_flags, file, "$");
-        newXSproto("Perf::Trace::Context::common_lock_depth", XS_Perf__Trace__Context_common_lock_depth, file, "$");
-    if (PL_unitcheckav)
-         call_list(PL_scopestack_ix, PL_unitcheckav);
+        (void)newXSproto_portable("Perf::Trace::Context::common_pc", XS_Perf__Trace__Context_common_pc, file, "$");
+        (void)newXSproto_portable("Perf::Trace::Context::common_flags", XS_Perf__Trace__Context_common_flags, file, "$");
+        (void)newXSproto_portable("Perf::Trace::Context::common_lock_depth", XS_Perf__Trace__Context_common_lock_depth, file, "$");
+#if (PERL_REVISION == 5 && PERL_VERSION >= 9)
+  if (PL_unitcheckav)
+       call_list(PL_scopestack_ix, PL_unitcheckav);
+#endif
     XSRETURN_YES;
 }
 
-- 
1.8.3.1.643.gebeea52.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/4] Minor perf build fixes
  2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
                   ` (3 preceding siblings ...)
  2013-07-05 10:16 ` [PATCH v2 4/4] perf/Perf-Trace-Util: regenerate Context.c Ramkumar Ramachandra
@ 2013-07-09  5:22 ` Namhyung Kim
  2013-07-09  8:51   ` Ramkumar Ramachandra
  4 siblings, 1 reply; 7+ messages in thread
From: Namhyung Kim @ 2013-07-09  5:22 UTC (permalink / raw)
  To: Ramkumar Ramachandra; +Cc: LKML

Hi Ramkumar,

On Fri,  5 Jul 2013 15:46:13 +0530, Ramkumar Ramachandra wrote:
> Hi,
>
> After Namhyung's review of the first iteration, I realized that I'd
> made a few mistakes.  This iteration should be much better.
>
> [1/4] is the same as before.
>
> [2/4] is new, and is used in [4/4].
>
> [3/4] introduces a util/perf-perl.h to include <perl.h> with #pragma
> statements, hence eliminating duplication.  It then updates Context.xs
> and trace-event-perl.c to use this new header.

I prefer the name being "perl.h" and use #include_next as we include the
'util' directory in the compiler search path.

Other than that, the change looks good to me.

>
> Also, notice that feature-tests.mak has not been touched in this
> iteration: the Perl check passes without needing the #pragma
> statements (although I'm not sure why exactly).

I guess it's because FLAGS_PERL_EMBED doesn't contain the usual perf
CFLAGS which has -Werror.

Thanks,
Namhyung

>
> Thanks.
>
> Ramkumar Ramachandra (4):
>   perf/Makefile: do not open-code shell-sq
>   perf/Perf-Trace-Util: fix broken include in Context.xs
>   perf: squelch warnings from perl.h to compile-pass
>   perf/Perf-Trace-Util: regenerate Context.c
>
>  tools/perf/Makefile                                |   2 +-
>  tools/perf/config/Makefile                         |  23 ++-
>  tools/perf/scripts/perl/Perf-Trace-Util/Context.c  | 215 +++++++++++++++++----
>  tools/perf/scripts/perl/Perf-Trace-Util/Context.xs |   6 +-
>  tools/perf/util/perf-perl.h                        |  10 +
>  .../perf/util/scripting-engines/trace-event-perl.c |   2 +-
>  6 files changed, 199 insertions(+), 59 deletions(-)
>  create mode 100644 tools/perf/util/perf-perl.h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/4] Minor perf build fixes
  2013-07-09  5:22 ` [PATCH v2 0/4] Minor perf build fixes Namhyung Kim
@ 2013-07-09  8:51   ` Ramkumar Ramachandra
  0 siblings, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2013-07-09  8:51 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: LKML

Hi Namhyung,

Namhyung Kim wrote:
> On Fri,  5 Jul 2013 15:46:13 +0530, Ramkumar Ramachandra wrote:
>> [3/4] introduces a util/perf-perl.h to include <perl.h> with #pragma
>> statements, hence eliminating duplication.  It then updates Context.xs
>> and trace-event-perl.c to use this new header.
>
> I prefer the name being "perl.h" and use #include_next as we include the
> 'util' directory in the compiler search path.
>
> Other than that, the change looks good to me.

Thanks for teaching me about #include_next.  I'll post a re-roll shortly.

>> Also, notice that feature-tests.mak has not been touched in this
>> iteration: the Perl check passes without needing the #pragma
>> statements (although I'm not sure why exactly).
>
> I guess it's because FLAGS_PERL_EMBED doesn't contain the usual perf
> CFLAGS which has -Werror.

Ah.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-07-09  8:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-05 10:16 [PATCH v2 0/4] Minor perf build fixes Ramkumar Ramachandra
2013-07-05 10:16 ` [PATCH v2 1/4] perf/Makefile: do not open-code shell-sq Ramkumar Ramachandra
2013-07-05 10:16 ` [PATCH v2 2/4] perf/Perf-Trace-Util: fix broken include in Context.xs Ramkumar Ramachandra
2013-07-05 10:16 ` [PATCH v2 3/4] perf: squelch warnings from perl.h to compile-pass Ramkumar Ramachandra
2013-07-05 10:16 ` [PATCH v2 4/4] perf/Perf-Trace-Util: regenerate Context.c Ramkumar Ramachandra
2013-07-09  5:22 ` [PATCH v2 0/4] Minor perf build fixes Namhyung Kim
2013-07-09  8:51   ` Ramkumar Ramachandra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).