Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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@intel.com>
Acked-by: Pekka Enberg <penberg@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Irina Tirdea <irina.tirdea@intel.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1347315303-29906-5-git-send-email-irina.tirdea@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Irina Tirdea and committed by
Arnaldo Carvalho de Melo
9ac3e487 3f34f6c0

+19 -19
+5 -5
tools/perf/util/event.c
··· 112 112 event->comm.header.type = PERF_RECORD_COMM; 113 113 114 114 size = strlen(event->comm.comm) + 1; 115 - size = ALIGN(size, sizeof(u64)); 115 + size = PERF_ALIGN(size, sizeof(u64)); 116 116 memset(event->comm.comm + size, 0, machine->id_hdr_size); 117 117 event->comm.header.size = (sizeof(event->comm) - 118 118 (sizeof(event->comm.comm) - size) + ··· 145 145 sizeof(event->comm.comm)); 146 146 147 147 size = strlen(event->comm.comm) + 1; 148 - size = ALIGN(size, sizeof(u64)); 148 + size = PERF_ALIGN(size, sizeof(u64)); 149 149 memset(event->comm.comm + size, 0, machine->id_hdr_size); 150 150 event->comm.header.size = (sizeof(event->comm) - 151 151 (sizeof(event->comm.comm) - size) + ··· 228 228 size = strlen(execname); 229 229 execname[size - 1] = '\0'; /* Remove \n */ 230 230 memcpy(event->mmap.filename, execname, size); 231 - size = ALIGN(size, sizeof(u64)); 231 + size = PERF_ALIGN(size, sizeof(u64)); 232 232 event->mmap.len -= event->mmap.start; 233 233 event->mmap.header.size = (sizeof(event->mmap) - 234 234 (sizeof(event->mmap.filename) - size)); ··· 282 282 if (pos->dso->kernel) 283 283 continue; 284 284 285 - size = ALIGN(pos->dso->long_name_len + 1, sizeof(u64)); 285 + size = PERF_ALIGN(pos->dso->long_name_len + 1, sizeof(u64)); 286 286 event->mmap.header.type = PERF_RECORD_MMAP; 287 287 event->mmap.header.size = (sizeof(event->mmap) - 288 288 (sizeof(event->mmap.filename) - size)); ··· 494 494 map = machine->vmlinux_maps[MAP__FUNCTION]; 495 495 size = snprintf(event->mmap.filename, sizeof(event->mmap.filename), 496 496 "%s%s", mmap_name, symbol_name) + 1; 497 - size = ALIGN(size, sizeof(u64)); 497 + size = PERF_ALIGN(size, sizeof(u64)); 498 498 event->mmap.header.type = PERF_RECORD_MMAP; 499 499 event->mmap.header.size = (sizeof(event->mmap) - 500 500 (sizeof(event->mmap.filename) - size) + machine->id_hdr_size);
+1 -1
tools/perf/util/event.h
··· 101 101 struct build_id_event { 102 102 struct perf_event_header header; 103 103 pid_t pid; 104 - u8 build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 104 + u8 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 105 105 char filename[]; 106 106 }; 107 107
+8 -8
tools/perf/util/header.c
··· 129 129 int ret; 130 130 131 131 olen = strlen(str) + 1; 132 - len = ALIGN(olen, NAME_ALIGN); 132 + len = PERF_ALIGN(olen, NAME_ALIGN); 133 133 134 134 /* write len, incl. \0 */ 135 135 ret = do_write(fd, &len, sizeof(len)); ··· 220 220 if (!pos->hit) 221 221 continue; 222 222 len = pos->long_name_len + 1; 223 - len = ALIGN(len, NAME_ALIGN); 223 + len = PERF_ALIGN(len, NAME_ALIGN); 224 224 memset(&b, 0, sizeof(b)); 225 225 memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id)); 226 226 b.pid = pid; ··· 1532 1532 struct perf_session *session = container_of(header, struct perf_session, header); 1533 1533 struct { 1534 1534 struct perf_event_header header; 1535 - u8 build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 1535 + u8 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 1536 1536 char filename[0]; 1537 1537 } old_bev; 1538 1538 struct build_id_event bev; ··· 2439 2439 int err; 2440 2440 2441 2441 size = sizeof(struct perf_event_attr); 2442 - size = ALIGN(size, sizeof(u64)); 2442 + size = PERF_ALIGN(size, sizeof(u64)); 2443 2443 size += sizeof(struct perf_event_header); 2444 2444 size += ids * sizeof(u64); 2445 2445 ··· 2537 2537 2538 2538 ev.event_type.header.type = PERF_RECORD_HEADER_EVENT_TYPE; 2539 2539 size = strlen(ev.event_type.event_type.name); 2540 - size = ALIGN(size, sizeof(u64)); 2540 + size = PERF_ALIGN(size, sizeof(u64)); 2541 2541 ev.event_type.header.size = sizeof(ev.event_type) - 2542 2542 (sizeof(ev.event_type.event_type.name) - size); 2543 2543 ··· 2606 2606 2607 2607 ev.tracing_data.header.type = PERF_RECORD_HEADER_TRACING_DATA; 2608 2608 size = tdata->size; 2609 - aligned_size = ALIGN(size, sizeof(u64)); 2609 + aligned_size = PERF_ALIGN(size, sizeof(u64)); 2610 2610 padding = aligned_size - size; 2611 2611 ev.tracing_data.header.size = sizeof(ev.tracing_data); 2612 2612 ev.tracing_data.size = aligned_size; ··· 2637 2637 2638 2638 size_read = trace_report(session->fd, &session->pevent, 2639 2639 session->repipe); 2640 - padding = ALIGN(size_read, sizeof(u64)) - size_read; 2640 + padding = PERF_ALIGN(size_read, sizeof(u64)) - size_read; 2641 2641 2642 2642 if (read(session->fd, buf, padding) < 0) 2643 2643 die("reading input file"); ··· 2671 2671 memset(&ev, 0, sizeof(ev)); 2672 2672 2673 2673 len = pos->long_name_len + 1; 2674 - len = ALIGN(len, NAME_ALIGN); 2674 + len = PERF_ALIGN(len, NAME_ALIGN); 2675 2675 memcpy(&ev.build_id.build_id, pos->build_id, sizeof(pos->build_id)); 2676 2676 ev.build_id.header.type = PERF_RECORD_HEADER_BUILD_ID; 2677 2677 ev.build_id.header.misc = misc;
+2 -2
tools/perf/util/include/linux/kernel.h
··· 8 8 9 9 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) 10 10 11 - #define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1) 12 - #define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) 11 + #define PERF_ALIGN(x, a) __PERF_ALIGN_MASK(x, (typeof(x))(a)-1) 12 + #define __PERF_ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) 13 13 14 14 #ifndef offsetof 15 15 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+2 -2
tools/perf/util/session.c
··· 527 527 if (sample_id_all) { 528 528 void *data = &event->comm.comm; 529 529 530 - data += ALIGN(strlen(data) + 1, sizeof(u64)); 530 + data += PERF_ALIGN(strlen(data) + 1, sizeof(u64)); 531 531 swap_sample_id_all(event, data); 532 532 } 533 533 } ··· 544 544 if (sample_id_all) { 545 545 void *data = &event->mmap.filename; 546 546 547 - data += ALIGN(strlen(data) + 1, sizeof(u64)); 547 + data += PERF_ALIGN(strlen(data) + 1, sizeof(u64)); 548 548 swap_sample_id_all(event, data); 549 549 } 550 550 }
+1 -1
tools/perf/util/symbol.c
··· 1991 1991 if (symbol_conf.initialized) 1992 1992 return 0; 1993 1993 1994 - symbol_conf.priv_size = ALIGN(symbol_conf.priv_size, sizeof(u64)); 1994 + symbol_conf.priv_size = PERF_ALIGN(symbol_conf.priv_size, sizeof(u64)); 1995 1995 1996 1996 symbol__elf_init(); 1997 1997