2008-06-02 13:34:58

by Peter 1 Oberparleiter

[permalink] [raw]
Subject: [PATCH 6/6] gcov: architecture specific compile flag adjustments

From: Peter Oberparleiter <[email protected]>

Exclude code from profiling which is not linked to the main kernel or
which is running in a context not compatible with the assumptions made
by gcc's profiling code.

Signed-off-by: Peter Oberparleiter <[email protected]>
---
arch/arm/boot/compressed/Makefile | 1 +
arch/powerpc/kernel/vdso32/Makefile | 1 +
arch/powerpc/kernel/vdso64/Makefile | 1 +
arch/ppc/boot/Makefile | 1 +
arch/ppc/boot/common/Makefile | 1 +
arch/ppc/boot/simple/Makefile | 1 +
arch/x86/boot/Makefile | 1 +
arch/x86/boot/compressed/Makefile | 1 +
arch/x86/kernel/acpi/realmode/Makefile | 1 +
9 files changed, 9 insertions(+)

Index: linux-2.6.26-rc4/arch/arm/boot/compressed/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/arm/boot/compressed/Makefile
+++ linux-2.6.26-rc4/arch/arm/boot/compressed/Makefile
@@ -7,6 +7,7 @@
HEAD = head.o
OBJS = misc.o
FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c
+GCOV := n

#
# Architecture dependencies
Index: linux-2.6.26-rc4/arch/x86/boot/compressed/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/x86/boot/compressed/Makefile
+++ linux-2.6.26-rc4/arch/x86/boot/compressed/Makefile
@@ -12,6 +12,7 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
KBUILD_CFLAGS += $(cflags-y)
KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
+GCOV := n

KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__

Index: linux-2.6.26-rc4/arch/ppc/boot/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/ppc/boot/Makefile
+++ linux-2.6.26-rc4/arch/ppc/boot/Makefile
@@ -16,6 +16,7 @@
# KBUILD_CFLAGS used when building rest of boot (takes effect recursively)
KBUILD_CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include
HOSTCFLAGS += -Iarch/$(ARCH)/boot/include
+GCOV := n

BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd

Index: linux-2.6.26-rc4/arch/ppc/boot/common/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/ppc/boot/common/Makefile
+++ linux-2.6.26-rc4/arch/ppc/boot/common/Makefile
@@ -5,6 +5,7 @@
# Tom Rini January 2001
#

+GCOV := n
lib-y := string.o util.o misc-common.o \
serial_stub.o bootinfo.o
lib-$(CONFIG_SERIAL_8250_CONSOLE) += ns16550.o
Index: linux-2.6.26-rc4/arch/ppc/boot/simple/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/ppc/boot/simple/Makefile
+++ linux-2.6.26-rc4/arch/ppc/boot/simple/Makefile
@@ -21,6 +21,7 @@
# XXX_memory.o file for this to work, as well as editing the
# misc-$(CONFIG_MACHINE) variable.

+GCOV := n
boot := arch/ppc/boot
common := $(boot)/common
utils := $(boot)/utils
Index: linux-2.6.26-rc4/arch/x86/boot/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/x86/boot/Makefile
+++ linux-2.6.26-rc4/arch/x86/boot/Makefile
@@ -71,6 +71,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
$(call cc-option, -mpreferred-stack-boundary=2)
KBUILD_CFLAGS += $(call cc-option,-m32)
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+GCOV := n

$(obj)/zImage: IMAGE_OFFSET := 0x1000
$(obj)/zImage: asflags-y := $(SVGA_MODE) $(RAMDISK)
Index: linux-2.6.26-rc4/arch/x86/kernel/acpi/realmode/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/x86/kernel/acpi/realmode/Makefile
+++ linux-2.6.26-rc4/arch/x86/kernel/acpi/realmode/Makefile
@@ -42,6 +42,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
$(call cc-option, -mpreferred-stack-boundary=2)
KBUILD_CFLAGS += $(call cc-option, -m32)
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+GCOV := n

WAKEUP_OBJS = $(addprefix $(obj)/,$(wakeup-y))

Index: linux-2.6.26-rc4/arch/powerpc/kernel/vdso32/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/powerpc/kernel/vdso32/Makefile
+++ linux-2.6.26-rc4/arch/powerpc/kernel/vdso32/Makefile
@@ -17,6 +17,7 @@ EXTRA_CFLAGS := -shared -fno-common -fno
EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso32.so.1 \
$(call ld-option, -Wl$(comma)--hash-style=sysv)
EXTRA_AFLAGS := -D__VDSO32__ -s
+GCOV := n

obj-y += vdso32_wrapper.o
extra-y += vdso32.lds
Index: linux-2.6.26-rc4/arch/powerpc/kernel/vdso64/Makefile
===================================================================
--- linux-2.6.26-rc4.orig/arch/powerpc/kernel/vdso64/Makefile
+++ linux-2.6.26-rc4/arch/powerpc/kernel/vdso64/Makefile
@@ -11,6 +11,7 @@ EXTRA_CFLAGS := -shared -fno-common -fno
EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso64.so.1 \
$(call ld-option, -Wl$(comma)--hash-style=sysv)
EXTRA_AFLAGS := -D__VDSO64__ -s
+GCOV := n

obj-y += vdso64_wrapper.o
extra-y += vdso64.lds



2008-06-12 00:03:41

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 6/6] gcov: architecture specific compile flag adjustments

On Mon, 02 Jun 2008 15:34:47 +0200
Peter Oberparleiter <[email protected]> wrote:

> Exclude code from profiling which is not linked to the main kernel or
> which is running in a context not compatible with the assumptions made
> by gcc's profiling code.

powerpc allmodconfig fails with

Error: External symbol '__gcov_init' referenced from prom_init.c
Error: External symbol '__gcov_merge_add' referenced from prom_init.c

This:

--- a/arch/powerpc/kernel/Makefile~a
+++ a/arch/powerpc/kernel/Makefile
@@ -12,6 +12,10 @@ CFLAGS_prom_init.o += -fPIC
CFLAGS_btext.o += -fPIC
endif

+ifdef CONFIG_GCOV_PROFILE
+CFLAGS_prom_init.o += -fno-profile-arcs -fno-test-coverage
+endif
+

didn't fix it so I gave up.

2008-06-12 09:13:37

by Peter 1 Oberparleiter

[permalink] [raw]
Subject: Re: [PATCH 6/6] gcov: architecture specific compile flag adjustments

Andrew Morton wrote:
> On Mon, 02 Jun 2008 15:34:47 +0200
> Peter Oberparleiter <[email protected]> wrote:
>
>> Exclude code from profiling which is not linked to the main kernel or
>> which is running in a context not compatible with the assumptions made
>> by gcc's profiling code.
>
> powerpc allmodconfig fails with
>
> Error: External symbol '__gcov_init' referenced from prom_init.c
> Error: External symbol '__gcov_merge_add' referenced from prom_init.c

--
From: Peter Oberparleiter <[email protected]>

Fix for gcov patch fallout:

powerpc allmodconfig fails with

Error: External symbol '__gcov_init' referenced from prom_init.c
Error: External symbol '__gcov_merge_add' referenced from prom_init.c

Signed-off-by: Peter Oberparleiter <[email protected]>
---
arch/powerpc/kernel/Makefile | 1 +
1 files changed, 1 insertion(+)

Index: linux-2.6.26-rc5-mm2/arch/powerpc/kernel/Makefile
===================================================================
--- linux-2.6.26-rc5-mm2.orig/arch/powerpc/kernel/Makefile
+++ linux-2.6.26-rc5-mm2/arch/powerpc/kernel/Makefile
@@ -11,6 +11,7 @@ ifeq ($(CONFIG_PPC32),y)
CFLAGS_prom_init.o += -fPIC
CFLAGS_btext.o += -fPIC
endif
+GCOV_prom_init.o := n

ifdef CONFIG_FTRACE
# Do not trace early boot code