Skip to contentSkip to conversation

perf tools: Add missing open_memstream() prototype for systems lacking it

tip:perf/core tip-bot for Arnaldo Carvalho de Melo 1 participant 1 message Dec 20, 2018 perf events

lore
Share & tools
lore
#0 lore raw
Commit-ID:  d7a8c4a6a055097a67ccfa3ca7c9ff1b64603a70
Gitweb:     https://git.kernel.org/tip/d7a8c4a6a055097a67ccfa3ca7c9ff1b64603a70
Author:     Arnaldo Carvalho de Melo <[email protected]>
AuthorDate: Tue, 11 Dec 2018 16:31:19 -0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 18 Dec 2018 12:23:57 -0300

perf tools: Add missing open_memstream() prototype for systems lacking it

There are systems such as the Android NDK API level 24 has the open_memstream() function but doesn't provide a prototype, adding noise to the build:

builtin-timechart.c: In function 'cat_backtrace':
builtin-timechart.c:486:2: warning: implicit declaration of function 'open_memstream' [-Wimplicit-function-declaration]

    FILE *f = open_memstream(&p, &p_len);
    ^
  builtin-timechart.c:486:2: warning: nested extern declaration of 'open_memstream' [-Wnested-externs]
  builtin-timechart.c:486:12: warning: initialization makes pointer from integer without a cast
    FILE *f = open_memstream(&p, &p_len);
              ^

Define a LACKS_OPEN_MEMSTREAM_PROTOTYPE define so that code needing that can get a prototype.

Checked in the bionic git repo to be available since level 23:

https://android.googlesource.com/platform/bionic/+/master/libc/include/stdio.h#241

  FILE* open_memstream(char** __ptr, size_t* __size_ptr) __INTRODUCED_IN(23);
---
 tools/perf/Makefile.config     | 1 +
 tools/perf/builtin-timechart.c | 4 ++++
 2 files changed, 5 insertions(+)
tools/perf/Makefile.config +1 -0
index 265a9225e5fc..07c1857c3d7a 100644
@@ -295,6 +295,7 @@ ifndef NO_BIONIC
   ifeq ($(feature-bionic), 1)
     BIONIC := 1
     CFLAGS += -DLACKS_SIGQUEUE_PROTOTYPE
+    CFLAGS += -DLACKS_OPEN_MEMSTREAM_PROTOTYPE
     EXTLIBS := $(filter-out -lrt,$(EXTLIBS))
     EXTLIBS := $(filter-out -lpthread,$(EXTLIBS))
   endif
tools/perf/builtin-timechart.c +4 -0
index a827919c6263..775b99833e51 100644
@@ -43,6 +43,10 @@
 #include "util/data.h"
 #include "util/debug.h"
 
+#ifdef LACKS_OPEN_MEMSTREAM_PROTOTYPE
+FILE *open_memstream(char **ptr, size_t *sizeloc);
+#endif
+
 #define SUPPORT_OLD_POWER_EVENTS 1
 #define PWR_EVENT_EXIT -1