lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 29 Aug 2012 01:02:30 +0300
From:	Irina Tirdea <irina.tirdea@...il.com>
To:	Steven Rostedt <rostedt@...dmis.org>,
	Arnaldo Carvalho de Melo <acme@...stprotocols.net>,
	Ingo Molnar <mingo@...nel.org>
Cc:	LKML <linux-kernel@...r.kernel.org>,
	Namhyung Kim <namhyung@...nel.org>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Frederic Weisbecker <fweisbec@...il.com>
Subject: [PATCH 05/13] perf tools: fix ALIGN redefinition in system headers

On some systems (e.g. Android), ALIGN is defined in
system headers as ALIGN(p). The definition of ALIGN used
in perf takes 2 parameters: ALIGN(x,a). This leads to
redefinition conflicts.

Redefinition error on Android:
In file included from util/include/linux/list.h:1:0,
from util/callchain.h:5,
from util/hist.h:6,
from util/session.h:4,
from util/build-id.h:4,
from util/annotate.c:11:
util/include/linux/kernel.h:11:0: error: "ALIGN" redefined [-Werror]
bionic/libc/include/sys/param.h:38:0: note: this is the location of
the previous definition

Conflics with system defined ALIGN in Android:
util/event.c: In function 'perf_event__synthesize_comm':
util/event.c:115:32: error: macro "ALIGN" passed 2 arguments, but takes just 1
util/event.c:115:9: error: 'ALIGN' undeclared (first use in this function)
util/event.c:115:9: note: each undeclared identifier is reported only once for
each function it appears in

In order to avoid this redefinition, ALIGN is renamed to PERF_ALIGN.

Signed-off-by: Irina Tirdea <irina.tirdea@...el.com>
---
 tools/perf/util/event.c                |   10 +++++-----
 tools/perf/util/event.h                |    2 +-
 tools/perf/util/header.c               |   16 ++++++++--------
 tools/perf/util/include/linux/kernel.h |    4 ++--
 tools/perf/util/session.c              |    4 ++--
 tools/perf/util/symbol.c               |    2 +-
 6 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 3a0f1a5..aee4ddf 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -112,7 +112,7 @@ static pid_t perf_event__synthesize_comm(struct
perf_tool *tool,
     event->comm.header.type = PERF_RECORD_COMM;

     size = strlen(event->comm.comm) + 1;
-    size = ALIGN(size, sizeof(u64));
+    size = PERF_ALIGN(size, sizeof(u64));
     memset(event->comm.comm + size, 0, machine->id_hdr_size);
     event->comm.header.size = (sizeof(event->comm) -
                 (sizeof(event->comm.comm) - size) +
@@ -143,7 +143,7 @@ static pid_t perf_event__synthesize_comm(struct
perf_tool *tool,
                      sizeof(event->comm.comm));

         size = strlen(event->comm.comm) + 1;
-        size = ALIGN(size, sizeof(u64));
+        size = PERF_ALIGN(size, sizeof(u64));
         memset(event->comm.comm + size, 0, machine->id_hdr_size);
         event->comm.header.size = (sizeof(event->comm) -
                       (sizeof(event->comm.comm) - size) +
@@ -222,7 +222,7 @@ static int
perf_event__synthesize_mmap_events(struct perf_tool *tool,
             size = strlen(execname);
             execname[size - 1] = '\0'; /* Remove \n */
             memcpy(event->mmap.filename, execname, size);
-            size = ALIGN(size, sizeof(u64));
+            size = PERF_ALIGN(size, sizeof(u64));
             event->mmap.len -= event->mmap.start;
             event->mmap.header.size = (sizeof(event->mmap) -
                             (sizeof(event->mmap.filename) - size));
@@ -272,7 +272,7 @@ int perf_event__synthesize_modules(struct perf_tool *tool,
         if (pos->dso->kernel)
             continue;

-        size = ALIGN(pos->dso->long_name_len + 1, sizeof(u64));
+        size = PERF_ALIGN(pos->dso->long_name_len + 1, sizeof(u64));
         event->mmap.header.type = PERF_RECORD_MMAP;
         event->mmap.header.size = (sizeof(event->mmap) -
                         (sizeof(event->mmap.filename) - size));
@@ -477,7 +477,7 @@ int perf_event__synthesize_kernel_mmap(struct
perf_tool *tool,
     map = machine->vmlinux_maps[MAP__FUNCTION];
     size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
             "%s%s", mmap_name, symbol_name) + 1;
-    size = ALIGN(size, sizeof(u64));
+    size = PERF_ALIGN(size, sizeof(u64));
     event->mmap.header.type = PERF_RECORD_MMAP;
     event->mmap.header.size = (sizeof(event->mmap) -
             (sizeof(event->mmap.filename) - size) + machine->id_hdr_size);
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 0e088d0..21b99e7 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -101,7 +101,7 @@ struct perf_sample {
 struct build_id_event {
     struct perf_event_header header;
     pid_t             pid;
-    u8             build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+    u8             build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))];
     char             filename[];
 };

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 1e5b6aa..7f8631f 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -128,7 +128,7 @@ static int do_write_string(int fd, const char *str)
     int ret;

     olen = strlen(str) + 1;
-    len = ALIGN(olen, NAME_ALIGN);
+    len = PERF_ALIGN(olen, NAME_ALIGN);

     /* write len, incl. \0 */
     ret = do_write(fd, &len, sizeof(len));
@@ -219,7 +219,7 @@ static int __dsos__write_buildid_table(struct
list_head *head, pid_t pid,
         if (!pos->hit)
             continue;
         len = pos->long_name_len + 1;
-        len = ALIGN(len, NAME_ALIGN);
+        len = PERF_ALIGN(len, NAME_ALIGN);
         memset(&b, 0, sizeof(b));
         memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id));
         b.pid = pid;
@@ -1398,7 +1398,7 @@ static int
perf_header__read_build_ids_abi_quirk(struct perf_header *header,
     struct perf_session *session = container_of(header, struct
perf_session, header);
     struct {
         struct perf_event_header   header;
-        u8               build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+        u8               build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))];
         char               filename[0];
     } old_bev;
     struct build_id_event bev;
@@ -2248,7 +2248,7 @@ int perf_event__synthesize_attr(struct perf_tool *tool,
     int err;

     size = sizeof(struct perf_event_attr);
-    size = ALIGN(size, sizeof(u64));
+    size = PERF_ALIGN(size, sizeof(u64));
     size += sizeof(struct perf_event_header);
     size += ids * sizeof(u64);

@@ -2346,7 +2346,7 @@ int perf_event__synthesize_event_type(struct
perf_tool *tool,

     ev.event_type.header.type = PERF_RECORD_HEADER_EVENT_TYPE;
     size = strlen(ev.event_type.event_type.name);
-    size = ALIGN(size, sizeof(u64));
+    size = PERF_ALIGN(size, sizeof(u64));
     ev.event_type.header.size = sizeof(ev.event_type) -
         (sizeof(ev.event_type.event_type.name) - size);

@@ -2415,7 +2415,7 @@ int perf_event__synthesize_tracing_data(struct
perf_tool *tool, int fd,

     ev.tracing_data.header.type = PERF_RECORD_HEADER_TRACING_DATA;
     size = tdata->size;
-    aligned_size = ALIGN(size, sizeof(u64));
+    aligned_size = PERF_ALIGN(size, sizeof(u64));
     padding = aligned_size - size;
     ev.tracing_data.header.size = sizeof(ev.tracing_data);
     ev.tracing_data.size = aligned_size;
@@ -2446,7 +2446,7 @@ int perf_event__process_tracing_data(union
perf_event *event,

     size_read = trace_report(session->fd, &session->pevent,
                  session->repipe);
-    padding = ALIGN(size_read, sizeof(u64)) - size_read;
+    padding = PERF_ALIGN(size_read, sizeof(u64)) - size_read;

     if (read(session->fd, buf, padding) < 0)
         die("reading input file");
@@ -2479,7 +2479,7 @@ int perf_event__synthesize_build_id(struct
perf_tool *tool,
     memset(&ev, 0, sizeof(ev));

     len = pos->long_name_len + 1;
-    len = ALIGN(len, NAME_ALIGN);
+    len = PERF_ALIGN(len, NAME_ALIGN);
     memcpy(&ev.build_id.build_id, pos->build_id, sizeof(pos->build_id));
     ev.build_id.header.type = PERF_RECORD_HEADER_BUILD_ID;
     ev.build_id.header.misc = misc;
diff --git a/tools/perf/util/include/linux/kernel.h
b/tools/perf/util/include/linux/kernel.h
index 391c425..1e56b2e 100644
--- a/tools/perf/util/include/linux/kernel.h
+++ b/tools/perf/util/include/linux/kernel.h
@@ -8,8 +8,8 @@

 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))

-#define ALIGN(x,a)        __ALIGN_MASK(x,(typeof(x))(a)-1)
-#define __ALIGN_MASK(x,mask)    (((x)+(mask))&~(mask))
+#define PERF_ALIGN(x, a)    __PERF_ALIGN_MASK(x, (typeof(x))(a)-1)
+#define __PERF_ALIGN_MASK(x, mask)    (((x)+(mask))&~(mask))

 #ifndef offsetof
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index f7bb7ae..d6d571b 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -527,7 +527,7 @@ static void perf_event__comm_swap(union perf_event
*event, bool sample_id_all)
     if (sample_id_all) {
         void *data = &event->comm.comm;

-        data += ALIGN(strlen(data) + 1, sizeof(u64));
+        data += PERF_ALIGN(strlen(data) + 1, sizeof(u64));
         swap_sample_id_all(event, data);
     }
 }
@@ -544,7 +544,7 @@ static void perf_event__mmap_swap(union perf_event *event,
     if (sample_id_all) {
         void *data = &event->mmap.filename;

-        data += ALIGN(strlen(data) + 1, sizeof(u64));
+        data += PERF_ALIGN(strlen(data) + 1, sizeof(u64));
         swap_sample_id_all(event, data);
     }
 }
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 753699a..ba85d4f 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1991,7 +1991,7 @@ int symbol__init(void)
     if (symbol_conf.initialized)
         return 0;

-    symbol_conf.priv_size = ALIGN(symbol_conf.priv_size, sizeof(u64));
+    symbol_conf.priv_size = PERF_ALIGN(symbol_conf.priv_size, sizeof(u64));

     symbol__elf_init();

--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ