[PATCH 05/13] perf tools: fix ALIGN redefinition in system headers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


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@xxxxxxxxx>
---
 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[Other Archives]     [Linux Kernel Newbies]     [Linux Driver Development]     [Linux Kbuild]     [Fedora Kernel]     [Linux Kernel Testers]     [Linux SH]     [Linux Omap]     [Linux Tape]     [Linux Input]     [Linux LEDS]     [Linux Kernel Janitors]     [Linux Kernel Packagers]     [Linux Doc]     [Linux Man Pages]     [Linux API]     [Linux Memory Management]     [Linux Modules]     [Linux Standards]     [Kernel Announce]     [Netdev]     [Git]     [Linux PCI]     Linux CAN Development     [Linux I2C]     [Linux RDMA]     [Linux NUMA]     [Netfilter]     [Netfilter Devel]     [SELinux]     [Bugtraq]     [FIO]     [Linux Perf Users]     [Linux Serial]     [Linux PPP]     [Linux ISDN]     [Linux Next]     [Kernel Stable Commits]     [Linux Tip Commits]     [Kernel MM Commits]     [Linux Security Module]     [AutoFS]     [Filesystem Development]     [Ext3 Filesystem]     [Linux bcache]     [Ext4 Filesystem]     [Linux BTRFS]     [Linux CEPH Filesystem]     [Linux XFS]     [XFS]     [Linux NFS]     [Linux CIFS]     [Ecryptfs]     [Linux NILFS]     [Linux Cachefs]     [Reiser FS]     [Initramfs]     [Linux FB Devel]     [Linux OpenGL]     [DRI Devel]     [Fastboot]     [Linux RT Users]     [Linux RT Stable]     [eCos]     [Corosync]     [Linux Clusters]     [LVS Devel]     [Hot Plug]     [Linux Virtualization]     [KVM]     [KVM PPC]     [KVM ia64]     [Linux Containers]     [Linux Hexagon]     [Linux Cgroups]     [Util Linux]     [Wireless]     [Linux Bluetooth]     [Bluez Devel]     [Ethernet Bridging]     [Embedded Linux]     [Barebox]     [Linux MMC]     [Linux IIO]     [Sparse]     [Smatch]     [Linux Arch]     [x86 Platform Driver]     [Linux ACPI]     [Linux IBM ACPI]     [LM Sensors]     [CPU Freq]     [Linux Power Management]     [Linmodems]     [Linux DCCP]     [Linux SCTP]     [ALSA Devel]     [Linux USB]     [Linux PA RISC]     [Linux Samsung SOC]     [MIPS Linux]     [IBM S/390 Linux]     [ARM Linux]     [ARM Kernel]     [ARM MSM]     [Tegra Devel]     [Sparc Linux]     [Linux Security]     [Linux Sound]     [Linux Media]     [Video 4 Linux]     [Linux IRDA Users]     [Linux for the blind]     [Linux RAID]     [Linux ATA RAID]     [Device Mapper]     [Linux SCSI]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Linux IDE]     [Linux SMP]     [Linux AXP]     [Linux Alpha]     [Linux M68K]     [Linux ia64]     [Linux 8086]     [Linux x86_64]     [Linux Config]     [Linux Apps]     [Linux MSDOS]     [Linux X.25]     [Linux Crypto]     [DM Crypt]     [Linux Trace Users]     [Linux Btrace]     [Linux Watchdog]     [Utrace Devel]     [Linux C Programming]     [Linux Assembly]     [Dash]     [DWARVES]     [Hail Devel]     [Linux Kernel Debugger]     [Linux gcc]     [Gcc Help]     [X.Org]     [Wine]

Add to Google Powered by Linux

[Older Kernel Discussion]     [Yosemite National Park Forum]     [Large Format Photos]     [Gimp]     [Yosemite Photos]     [Stuff]