2009-11-22 12:17:32

by Michael S. Tsirkin

[permalink] [raw]
Subject: [PATCH] perf: use default compiler mode by default

gcc with no flags typically is a sane default for systems to use, and
looking at the running kernel is probably broken for cross-builds
anyway, so let's not do this. Add EXTRA_CFLAGS so that users can
override default gcc mode if they want to.

Signed-off-by: Michael S. Tsirkin <[email protected]>
---
tools/perf/Makefile | 20 +++-----------------
1 files changed, 3 insertions(+), 17 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index d0bdaf2..ab35b0f 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -148,6 +148,8 @@ all::
# broken, or spawning external process is slower than built-in grep perf has).
#
# Define LDFLAGS=-static to build a static binary.
+#
+# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.

PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
@$(SHELL_PATH) util/PERF-VERSION-GEN
@@ -160,22 +162,6 @@ uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')

-#
-# Add -m32 for cross-builds:
-#
-ifdef NO_64BIT
- MBITS := -m32
-else
- #
- # If we're on a 64-bit kernel (except ia64), use -m64:
- #
- ifneq ($(uname_M),ia64)
- ifneq ($(patsubst %64,%,$(uname_M)),$(uname_M))
- MBITS := -m64
- endif
- endif
-endif
-
# CFLAGS and LDFLAGS are for the users to override from the command line.

#
@@ -212,7 +198,7 @@ ifndef PERF_DEBUG
CFLAGS_OPTIMIZE = -O6
endif

-CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS)
+CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
EXTLIBS = -lpthread -lrt -lelf -lm
ALL_CFLAGS = $(CFLAGS)
ALL_LDFLAGS = $(LDFLAGS)
--
1.6.5.2.143.g8cc62


2009-11-22 12:59:21

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] perf: use default compiler mode by default


* Michael S. Tsirkin <[email protected]> wrote:

> gcc with no flags typically is a sane default for systems to use, and
> looking at the running kernel is probably broken for cross-builds
> anyway, so let's not do this. Add EXTRA_CFLAGS so that users can
> override default gcc mode if they want to.
>
> Signed-off-by: Michael S. Tsirkin <[email protected]>
> ---
> tools/perf/Makefile | 20 +++-----------------
> 1 files changed, 3 insertions(+), 17 deletions(-)
>
> diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> index d0bdaf2..ab35b0f 100644
> --- a/tools/perf/Makefile
> +++ b/tools/perf/Makefile
> @@ -148,6 +148,8 @@ all::
> # broken, or spawning external process is slower than built-in grep perf has).
> #
> # Define LDFLAGS=-static to build a static binary.
> +#
> +# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.
>
> PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
> @$(SHELL_PATH) util/PERF-VERSION-GEN
> @@ -160,22 +162,6 @@ uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
> uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
> uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
>
> -#
> -# Add -m32 for cross-builds:
> -#
> -ifdef NO_64BIT
> - MBITS := -m32
> -else
> - #
> - # If we're on a 64-bit kernel (except ia64), use -m64:
> - #
> - ifneq ($(uname_M),ia64)
> - ifneq ($(patsubst %64,%,$(uname_M)),$(uname_M))
> - MBITS := -m64
> - endif
> - endif
> -endif

iirc PowerPC had some trouble in this area. Paulus?

Ingo

2009-11-22 17:12:08

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [PATCH] perf: use default compiler mode by default

On Sun, 22 Nov 2009 14:13:35 +0200
"Michael S. Tsirkin" <[email protected]> wrote:

> gcc with no flags typically is a sane default for systems to use, and
> looking at the running kernel is probably broken for cross-builds
> anyway, so let's not do this. Add EXTRA_CFLAGS so that users can
> override default gcc mode if they want to.
>


yes please; current perf breaks if you compile it in a 32 bit chroot on
a 64 bit system....

--
Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,
visit http://www.lesswatts.org

2009-11-23 06:56:03

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] perf: use default compiler mode by default


* Arjan van de Ven <[email protected]> wrote:

> On Sun, 22 Nov 2009 14:13:35 +0200
> "Michael S. Tsirkin" <[email protected]> wrote:
>
> > gcc with no flags typically is a sane default for systems to use, and
> > looking at the running kernel is probably broken for cross-builds
> > anyway, so let's not do this. Add EXTRA_CFLAGS so that users can
> > override default gcc mode if they want to.
>
> yes please; current perf breaks if you compile it in a 32 bit chroot
> on a 64 bit system....

ok - applied the patch with your ack.

I'd still like to hear back from Paulus whether PowerPC is affected
negatively - IIRC it was PowerPC where we got the -m64 from originally.

Thanks,

Ingo

2009-11-23 07:03:10

by Michael S. Tsirkin

[permalink] [raw]
Subject: [tip:perf/core] perf: Use default compiler mode by default

Commit-ID: 81516c5fc83a13a1d12f466aa7e14f5fd62a63ce
Gitweb: http://git.kernel.org/tip/81516c5fc83a13a1d12f466aa7e14f5fd62a63ce
Author: Michael S. Tsirkin <[email protected]>
AuthorDate: Sun, 22 Nov 2009 14:13:35 +0200
Committer: Ingo Molnar <[email protected]>
CommitDate: Mon, 23 Nov 2009 07:55:57 +0100

perf: Use default compiler mode by default

gcc with no flags typically is a sane default for systems to
use, and looking at the running kernel is probably broken for
cross-builds anyway, so let's not do this. Add EXTRA_CFLAGS so
that users can override default gcc mode if they want to.

Signed-off-by: Michael S. Tsirkin <[email protected]>
Acked-by: Arjan van de Ven <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
---
tools/perf/Makefile | 20 +++-----------------
1 files changed, 3 insertions(+), 17 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index fce4c3f..3ef6621 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -148,6 +148,8 @@ all::
# broken, or spawning external process is slower than built-in grep perf has).
#
# Define LDFLAGS=-static to build a static binary.
+#
+# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.

PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
@$(SHELL_PATH) util/PERF-VERSION-GEN
@@ -160,22 +162,6 @@ uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')

-#
-# Add -m32 for cross-builds:
-#
-ifdef NO_64BIT
- MBITS := -m32
-else
- #
- # If we're on a 64-bit kernel (except ia64), use -m64:
- #
- ifneq ($(uname_M),ia64)
- ifneq ($(patsubst %64,%,$(uname_M)),$(uname_M))
- MBITS := -m64
- endif
- endif
-endif
-
# CFLAGS and LDFLAGS are for the users to override from the command line.

#
@@ -212,7 +198,7 @@ ifndef PERF_DEBUG
CFLAGS_OPTIMIZE = -O6
endif

-CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS)
+CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
EXTLIBS = -lpthread -lrt -lelf -lm
ALL_CFLAGS = $(CFLAGS)
ALL_LDFLAGS = $(LDFLAGS)

2009-11-23 11:14:45

by Paul Mackerras

[permalink] [raw]
Subject: Re: [PATCH] perf: use default compiler mode by default

Ingo Molnar writes:

> I'd still like to hear back from Paulus whether PowerPC is affected
> negatively - IIRC it was PowerPC where we got the -m64 from originally.

It seems that a 32-bit perf now works on a 64-bit kernel on powerpc,
so I don't have any hard objection to this patch. (For some reason,
perf top isn't getting any samples, so I'll have to chase that.)

Many distros on powerpc default to 32-bit userspace on 64-bit
machines, since that has a slight performance and size benefit for
most programs. I expect perf is better as a 64-bit binary, since it
does a lot of 64-bit arithmetic, so users of those distros on 64-bit
machines would need to do "make EXTRA_CFLAGS=-m64".

Paul.