linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] [v2] kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
@ 2017-03-14 21:33 Arnd Bergmann
  2017-03-14 21:35 ` [PATCH] [v333kbuild: " Arnd Bergmann
  2017-03-14 21:37 ` [PATCH] [SUBMITTED 20170314] " Arnd Bergmann
  0 siblings, 2 replies; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-14 21:33 UTC (permalink / raw)
  To: Masahiro Yamada, Michal Marek
  Cc: Arnd Bergmann, Namhyung Kim, linux-kbuild, linux-kernel

When ftrace is enabled and we build with gcc-4.7 or older, we
get a warning for each file on architectures that select
CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:

warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]

This turns off function sections in that specific case, leaving
it enabled for all other configurations.

Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
---
Fixed version number in check as pointed out by Namhyung Kim
---
 Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
index 6e7e644a0b84..608727d3e47f 100644
--- a/Makefile
+++ b/Makefile
@@ -662,7 +662,11 @@ KBUILD_CFLAGS	+= -Wextra
 KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
 
 ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
+ifdef CONFIG_FUNCTION_TRACER
+KBUILD_CFLAGS	+= $(call cc-ifversion, -ge,0409,$(call cc-option,-ffunction-sections,))
+else
 KBUILD_CFLAGS	+= $(call cc-option,-ffunction-sections,)
+endif
 KBUILD_CFLAGS	+= $(call cc-option,-fdata-sections,)
 endif
 
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-14 21:33 [PATCH] [v2] kbuild: disable -ffunction-sections on gcc-4.7 with ftrace Arnd Bergmann
@ 2017-03-14 21:35 ` Arnd Bergmann
  2017-03-14 21:37 ` [PATCH] [SUBMITTED 20170314] " Arnd Bergmann
  1 sibling, 0 replies; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-14 21:35 UTC (permalink / raw)
  To: Masahiro Yamada, Michal Marek
  Cc: Nicholas Piggin, Arnd Bergmann, Namhyung Kim, linux-kbuild, linux-kernel

When ftrace is enabled and we build with gcc-4.7 or older, we
get a warning for each file on architectures that select
CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:

warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]

This turns off function sections in that specific case, leaving
it enabled for all other configurations.

Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
---
v2: accidentally resend the same patch as before
v3: actually fixed version number in check as pointed out by Namhyung Kim
---
 Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
index 6e7e644a0b84..608727d3e47f 100644
--- a/Makefile
+++ b/Makefile
@@ -662,7 +662,11 @@ KBUILD_CFLAGS	+= -Wextra
 KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
 
 ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
+ifdef CONFIG_FUNCTION_TRACER
+KBUILD_CFLAGS	+= $(call cc-ifversion, -ge,0409,$(call cc-option,-ffunction-sections,))
+else
 KBUILD_CFLAGS	+= $(call cc-option,-ffunction-sections,)
+endif
 KBUILD_CFLAGS	+= $(call cc-option,-fdata-sections,)
 endif
 
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-14 21:33 [PATCH] [v2] kbuild: disable -ffunction-sections on gcc-4.7 with ftrace Arnd Bergmann
  2017-03-14 21:35 ` [PATCH] [v333kbuild: " Arnd Bergmann
@ 2017-03-14 21:37 ` Arnd Bergmann
  2017-03-29  2:07   ` Masahiro Yamada
  1 sibling, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-14 21:37 UTC (permalink / raw)
  To: Masahiro Yamada, Michal Marek
  Cc: Nicholas Piggin, Arnd Bergmann, Namhyung Kim, linux-kbuild, linux-kernel

When ftrace is enabled and we build with gcc-4.7 or older, we
get a warning for each file on architectures that select
CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:

warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]

This turns off function sections in that specific case, leaving
it enabled for all other configurations.

Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
---
v2: accidentally resend the same patch as before
v3: send the exact same patch once more, without doing the change I wanted
v4: actually fixed version number in check as pointed out by Namhyung Kim (I hope)
---
 Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
index 6e7e644a0b84..3a964fa3a787 100644
--- a/Makefile
+++ b/Makefile
@@ -662,7 +662,11 @@ KBUILD_CFLAGS	+= -Wextra
 KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
 
 ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
+ifdef CONFIG_FUNCTION_TRACER
+KBUILD_CFLAGS	+= $(call cc-ifversion, -ge,0408,$(call cc-option,-ffunction-sections,))
+else
 KBUILD_CFLAGS	+= $(call cc-option,-ffunction-sections,)
+endif
 KBUILD_CFLAGS	+= $(call cc-option,-fdata-sections,)
 endif
 
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-14 21:37 ` [PATCH] [SUBMITTED 20170314] " Arnd Bergmann
@ 2017-03-29  2:07   ` Masahiro Yamada
  2017-03-29  9:30     ` Arnd Bergmann
  0 siblings, 1 reply; 8+ messages in thread
From: Masahiro Yamada @ 2017-03-29  2:07 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Michal Marek, Nicholas Piggin, Namhyung Kim,
	Linux Kbuild mailing list, Linux Kernel Mailing List, masahiroy

Hi Arnd,


2017-03-15 6:37 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> When ftrace is enabled and we build with gcc-4.7 or older, we
> get a warning for each file on architectures that select
> CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:
>
> warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]
>
> This turns off function sections in that specific case, leaving
> it enabled for all other configurations.
>
> Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
> ---
> v2: accidentally resend the same patch as before
> v3: send the exact same patch once more, without doing the change I wanted
> v4: actually fixed version number in check as pointed out by Namhyung Kim (I hope)
> ---
>  Makefile | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 6e7e644a0b84..3a964fa3a787 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -662,7 +662,11 @@ KBUILD_CFLAGS      += -Wextra
>  KBUILD_CFLAGS  += $(call cc-disable-warning,frame-address,)
>
>  ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
> +ifdef CONFIG_FUNCTION_TRACER
> +KBUILD_CFLAGS  += $(call cc-ifversion, -ge,0408,$(call cc-option,-ffunction-sections,))
> +else
>  KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
> +endif
>  KBUILD_CFLAGS  += $(call cc-option,-fdata-sections,)
>  endif
>


I have two questions.

[1]
How did you produce this warning?
I do not see any architecture that selects this option at this point of time.

Did you edit Kconfig locally to select LD_DEAD_CODE_DATA_ELIMINATION?
If so, is this patch not so urgent as the "Fixes" tag claims?


[2]
This question is more technical.

The cause of the problem seems that GCC warns it cannot support the
two at the same time,
but it does handle it as an error.  So, cc-option assumes this
combination is OK.

Is it a good idea to add -Werror to cc-option checking?

In my local test, the following patch solved this specific case.

You contribute a lot for compile-test,
so I'd like you to see if it has side-effects.




diff --git a/Makefile b/Makefile
index 231e6a7..5850850 100644
--- a/Makefile
+++ b/Makefile
@@ -632,11 +632,6 @@ include arch/$(SRCARCH)/Makefile
 KBUILD_CFLAGS  += $(call cc-option,-fno-delete-null-pointer-checks,)
 KBUILD_CFLAGS  += $(call cc-disable-warning,frame-address,)

-ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
-KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
-KBUILD_CFLAGS  += $(call cc-option,-fdata-sections,)
-endif
-
 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 KBUILD_CFLAGS  += -Os $(call cc-disable-warning,maybe-uninitialized,)
 else
@@ -767,6 +762,11 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
 KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
 endif

+ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
+KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
+KBUILD_CFLAGS  += $(call cc-option,-fdata-sections,)
+endif
+
 # arch Makefile may override CC so keep this after arch Makefile is included
 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
 CHECKFLAGS     += $(NOSTDINC_FLAGS)
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index d6ca649..558d4f1 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -116,12 +116,12 @@ CC_OPTION_CFLAGS = $(filter-out
$(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
 # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)

 cc-option = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
/dev/null -o "$$TMP",$(1),$(2))
+       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
-x c /dev/null -o "$$TMP",$(1),$(2))

 # cc-option-yn
 # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
 cc-option-yn = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
/dev/null -o "$$TMP",y,n)
+       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
-x c /dev/null -o "$$TMP",y,n)

 # cc-option-align
 # Prefix align with either -falign or -malign


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-29  2:07   ` Masahiro Yamada
@ 2017-03-29  9:30     ` Arnd Bergmann
  2017-03-30 15:42       ` Masahiro Yamada
  0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-29  9:30 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, Nicholas Piggin, Namhyung Kim,
	Linux Kbuild mailing list, Linux Kernel Mailing List, masahiroy

On Wed, Mar 29, 2017 at 4:07 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> Hi Arnd,
>
>
> 2017-03-15 6:37 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>> When ftrace is enabled and we build with gcc-4.7 or older, we
>> get a warning for each file on architectures that select
>> CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:
>>
>> warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]
>>
>> This turns off function sections in that specific case, leaving
>> it enabled for all other configurations.
>>
>> Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
>> ---
>> v2: accidentally resend the same patch as before
>> v3: send the exact same patch once more, without doing the change I wanted
>> v4: actually fixed version number in check as pointed out by Namhyung Kim (I hope)
>> ---
>>  Makefile | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/Makefile b/Makefile
>> index 6e7e644a0b84..3a964fa3a787 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -662,7 +662,11 @@ KBUILD_CFLAGS      += -Wextra
>>  KBUILD_CFLAGS  += $(call cc-disable-warning,frame-address,)
>>
>>  ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
>> +ifdef CONFIG_FUNCTION_TRACER
>> +KBUILD_CFLAGS  += $(call cc-ifversion, -ge,0408,$(call cc-option,-ffunction-sections,))
>> +else
>>  KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
>> +endif
>>  KBUILD_CFLAGS  += $(call cc-option,-fdata-sections,)
>>  endif
>>
>
>
> I have two questions.
>
> [1]
> How did you produce this warning?
> I do not see any architecture that selects this option at this point of time.

I saw it on ARM randconfig builds

> Did you edit Kconfig locally to select LD_DEAD_CODE_DATA_ELIMINATION?
> If so, is this patch not so urgent as the "Fixes" tag claims?

Good point, I forgot that I had enabled this manually on ARM in an
earlier patch in my randconfig-fixup series. I thought this was selected
on powerpc, but that part of Nick's series apparently didn't make it in
yet.

I don't see the 'Fixes' tag as claiming the patch to be urgent, just
documenting what patch introduced the problem, but you could
argue here that it only gets introduced by a future patch that
actually selects the symbol.

> [2]
> This question is more technical.
>
> The cause of the problem seems that GCC warns it cannot support the
> two at the same time,
> but it does handle it as an error.  So, cc-option assumes this
> combination is OK.
>
> Is it a good idea to add -Werror to cc-option checking?

Hmm, I've actually been running with that change as a side-effect
of having the llvmlinux patches applied, which contain this one:

commit 03497934e211325fc2913476897daf7a5ddb008a
Author: Mark Charlebois <charlebm@gmail.com>
Date:   Mon Sep 22 14:33:05 2014 -0700

    kbuild, LLVMLinux: Add -Werror to cc-option to support clang

    Clang will warn about unknown warnings but will not return false
    unless -Werror is set. GCC will return false if an unknown
    warning is passed.

    Adding -Werror make both compiler behave the same.

    Signed-off-by: Mark Charlebois <charlebm@gmail.com>
    Signed-off-by: Behan Webster <behanw@converseincode.com>
    Reviewed-by: Jan-Simon Möller <dl9pf@gmx.de>

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 285acc57c0a4..3629bd9c7e79 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -116,12 +116,12 @@ CC_OPTION_CFLAGS = $(filter-out
$(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
 # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)

 cc-option = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
/dev/null -o "$$TMP",$(1),$(2))
+       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
-x c /dev/null -o "$$TMP",$(1),$(2))

 # cc-option-yn
 # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
 cc-option-yn = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
/dev/null -o "$$TMP",y,n)
+       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
-x c /dev/null -o "$$TMP",y,n)

 # cc-option-align
 # Prefix align with either -falign or -malign
@@ -131,7 +131,7 @@ cc-option-align = $(subst -functions=0,,\
 # cc-disable-warning
 # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
 cc-disable-warning = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1))
-c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
+       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip
$(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))

 # cc-name
 # Expands to either gcc or clang

This is identical to your version, except it applies the same
thing to cc-disable-warning. I think this is good to get merged,
and there are probably a couple of other patches in that series
that we may want to look at again.

   Arnd

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-29  9:30     ` Arnd Bergmann
@ 2017-03-30 15:42       ` Masahiro Yamada
  2017-03-31  8:48         ` Arnd Bergmann
  0 siblings, 1 reply; 8+ messages in thread
From: Masahiro Yamada @ 2017-03-30 15:42 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Michal Marek, Nicholas Piggin, Namhyung Kim,
	Linux Kbuild mailing list, Linux Kernel Mailing List

Hi Arnd,

2017-03-29 18:30 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> On Wed, Mar 29, 2017 at 4:07 AM, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> Hi Arnd,
>>
>>
>> 2017-03-15 6:37 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>> When ftrace is enabled and we build with gcc-4.7 or older, we
>>> get a warning for each file on architectures that select
>>> CONFIG_LD_DEAD_CODE_DATA_ELIMINATION:
>>>
>>> warning: -ffunction-sections disabled; it makes profiling impossible [enabled by default]
>>>
>>> This turns off function sections in that specific case, leaving
>>> it enabled for all other configurations.
>>>
>>> Fixes: b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
>>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>>> Cc: Namhyung Kim <namhyung.with.foss@gmail.com>
>>> ---
>>> v2: accidentally resend the same patch as before
>>> v3: send the exact same patch once more, without doing the change I wanted
>>> v4: actually fixed version number in check as pointed out by Namhyung Kim (I hope)
>>> ---
>>>  Makefile | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index 6e7e644a0b84..3a964fa3a787 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -662,7 +662,11 @@ KBUILD_CFLAGS      += -Wextra
>>>  KBUILD_CFLAGS  += $(call cc-disable-warning,frame-address,)
>>>
>>>  ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
>>> +ifdef CONFIG_FUNCTION_TRACER
>>> +KBUILD_CFLAGS  += $(call cc-ifversion, -ge,0408,$(call cc-option,-ffunction-sections,))
>>> +else
>>>  KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
>>> +endif
>>>  KBUILD_CFLAGS  += $(call cc-option,-fdata-sections,)
>>>  endif
>>>
>>
>>
>> I have two questions.
>>
>> [1]
>> How did you produce this warning?
>> I do not see any architecture that selects this option at this point of time.
>
> I saw it on ARM randconfig builds
>
>> Did you edit Kconfig locally to select LD_DEAD_CODE_DATA_ELIMINATION?
>> If so, is this patch not so urgent as the "Fixes" tag claims?
>
> Good point, I forgot that I had enabled this manually on ARM in an
> earlier patch in my randconfig-fixup series. I thought this was selected
> on powerpc, but that part of Nick's series apparently didn't make it in
> yet.
>
> I don't see the 'Fixes' tag as claiming the patch to be urgent, just
> documenting what patch introduced the problem, but you could
> argue here that it only gets introduced by a future patch that
> actually selects the symbol.

I won't argue.  Fixes is reviewer-friendly
for finding the related commit.

I just personally used the "Fix" keyword as a hint for priority
because there are still many kbuild patches piled up,
and I have not been able to catch up yet.



>> [2]
>> This question is more technical.
>>
>> The cause of the problem seems that GCC warns it cannot support the
>> two at the same time,
>> but it does handle it as an error.  So, cc-option assumes this
>> combination is OK.
>>
>> Is it a good idea to add -Werror to cc-option checking?
>
> Hmm, I've actually been running with that change as a side-effect
> of having the llvmlinux patches applied, which contain this one:
>
> commit 03497934e211325fc2913476897daf7a5ddb008a
> Author: Mark Charlebois <charlebm@gmail.com>
> Date:   Mon Sep 22 14:33:05 2014 -0700
>
>     kbuild, LLVMLinux: Add -Werror to cc-option to support clang
>
>     Clang will warn about unknown warnings but will not return false
>     unless -Werror is set. GCC will return false if an unknown
>     warning is passed.
>
>     Adding -Werror make both compiler behave the same.
>
>     Signed-off-by: Mark Charlebois <charlebm@gmail.com>
>     Signed-off-by: Behan Webster <behanw@converseincode.com>
>     Reviewed-by: Jan-Simon Möller <dl9pf@gmx.de>
>
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index 285acc57c0a4..3629bd9c7e79 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -116,12 +116,12 @@ CC_OPTION_CFLAGS = $(filter-out
> $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
>  # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
>
>  cc-option = $(call try-run,\
> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
> /dev/null -o "$$TMP",$(1),$(2))
> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
> -x c /dev/null -o "$$TMP",$(1),$(2))
>
>  # cc-option-yn
>  # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
>  cc-option-yn = $(call try-run,\
> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
> /dev/null -o "$$TMP",y,n)
> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
> -x c /dev/null -o "$$TMP",y,n)
>
>  # cc-option-align
>  # Prefix align with either -falign or -malign
> @@ -131,7 +131,7 @@ cc-option-align = $(subst -functions=0,,\
>  # cc-disable-warning
>  # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
>  cc-disable-warning = $(call try-run,\
> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1))
> -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip
> $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
>
>  # cc-name
>  # Expands to either gcc or clang
>
> This is identical to your version, except it applies the same
> thing to cc-disable-warning.

Ah, I see.

I'm also moving
KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
below
CC_FLAGS_FTRACE := -pg
to fix the warning.




> I think this is good to get merged,
> and there are probably a couple of other patches in that series
> that we may want to look at again.


I agree.


At least, 03497934e21 looks good to be merged.
(I need to get access to Mark, and ask him to send this patch.)

Then, swap the -ffunction-sections and -pg order.

I hope this will make you and clang guys happy.


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
  2017-03-30 15:42       ` Masahiro Yamada
@ 2017-03-31  8:48         ` Arnd Bergmann
       [not found]           ` <CAFzeTN3-=a6n-PEKP5ssCUszYYPu5R5_6uf9DEdptPKEuWOsrQ@mail.gmail.com>
  0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-31  8:48 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Michal Marek, Nicholas Piggin, Namhyung Kim,
	Linux Kbuild mailing list, Linux Kernel Mailing List,
	Mark Charlebois

On Thu, Mar 30, 2017 at 5:42 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 2017-03-29 18:30 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>> On Wed, Mar 29, 2017 at 4:07 AM, Masahiro Yamada
>> <yamada.masahiro@socionext.com> wrote:
>>> 2017-03-15 6:37 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>> [2]
>>> This question is more technical.
>>>
>>> The cause of the problem seems that GCC warns it cannot support the
>>> two at the same time,
>>> but it does handle it as an error.  So, cc-option assumes this
>>> combination is OK.
>>>
>>> Is it a good idea to add -Werror to cc-option checking?
>>
>> Hmm, I've actually been running with that change as a side-effect
>> of having the llvmlinux patches applied, which contain this one:
>>
>> commit 03497934e211325fc2913476897daf7a5ddb008a
>> Author: Mark Charlebois <charlebm@gmail.com>
>> Date:   Mon Sep 22 14:33:05 2014 -0700
>>
>>     kbuild, LLVMLinux: Add -Werror to cc-option to support clang
>>
>>     Clang will warn about unknown warnings but will not return false
>>     unless -Werror is set. GCC will return false if an unknown
>>     warning is passed.
>>
>>     Adding -Werror make both compiler behave the same.
>>
>>     Signed-off-by: Mark Charlebois <charlebm@gmail.com>
>>     Signed-off-by: Behan Webster <behanw@converseincode.com>
>>     Reviewed-by: Jan-Simon Möller <dl9pf@gmx.de>
>>
>> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
>> index 285acc57c0a4..3629bd9c7e79 100644
>> --- a/scripts/Kbuild.include
>> +++ b/scripts/Kbuild.include
>> @@ -116,12 +116,12 @@ CC_OPTION_CFLAGS = $(filter-out
>> $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
>>  # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
>>
>>  cc-option = $(call try-run,\
>> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
>> /dev/null -o "$$TMP",$(1),$(2))
>> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
>> -x c /dev/null -o "$$TMP",$(1),$(2))
>>
>>  # cc-option-yn
>>  # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
>>  cc-option-yn = $(call try-run,\
>> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c
>> /dev/null -o "$$TMP",y,n)
>> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c
>> -x c /dev/null -o "$$TMP",y,n)
>>
>>  # cc-option-align
>>  # Prefix align with either -falign or -malign
>> @@ -131,7 +131,7 @@ cc-option-align = $(subst -functions=0,,\
>>  # cc-disable-warning
>>  # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
>>  cc-disable-warning = $(call try-run,\
>> -       $(CC) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip $(1))
>> -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
>> +       $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -W$(strip
>> $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
>>
>>  # cc-name
>>  # Expands to either gcc or clang
>>
>> This is identical to your version, except it applies the same
>> thing to cc-disable-warning.
>
> Ah, I see.
>
> I'm also moving
> KBUILD_CFLAGS  += $(call cc-option,-ffunction-sections,)
> below
> CC_FLAGS_FTRACE := -pg
> to fix the warning.
>
>
>
>
>> I think this is good to get merged,
>> and there are probably a couple of other patches in that series
>> that we may want to look at again.
>
>
> I agree.
>
>
> At least, 03497934e21 looks good to be merged.
> (I need to get access to Mark, and ask him to send this patch.)
>
> Then, swap the -ffunction-sections and -pg order.
>
> I hope this will make you and clang guys happy.

I may have a number of clang related patches in the future,
and can also forward this patch. I suspect that Mark (added to
Cc) is currently not able to send a tested patch for the latest
kernel, he worked on it in 2014, but I don't think he's following
llvmlinux at the moment.

     Arnd

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] [SUBMITTED 20170314] [v333kbuild: disable -ffunction-sections on gcc-4.7 with ftrace
       [not found]           ` <CAFzeTN3-=a6n-PEKP5ssCUszYYPu5R5_6uf9DEdptPKEuWOsrQ@mail.gmail.com>
@ 2017-03-31 20:39             ` Arnd Bergmann
  0 siblings, 0 replies; 8+ messages in thread
From: Arnd Bergmann @ 2017-03-31 20:39 UTC (permalink / raw)
  To: Mark Charlebois
  Cc: Masahiro Yamada, Michal Marek, Nicholas Piggin, Namhyung Kim,
	Linux Kbuild mailing list, Linux Kernel Mailing List

On Fri, Mar 31, 2017 at 5:54 PM, Mark Charlebois <charlebm@gmail.com> wrote:
> What is it you need from me? To rebase 03497934e21, test (on what ARCH) and
> resend (to who)?. Let me know if Arnd forwarding the patch isn't sufficient.
> I'm not set up to test this at the moment, but could if needed.

I've just send it, I think that's sufficient and will keep the the
patch attributed
correctly.

        Arnd

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-03-31 20:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14 21:33 [PATCH] [v2] kbuild: disable -ffunction-sections on gcc-4.7 with ftrace Arnd Bergmann
2017-03-14 21:35 ` [PATCH] [v333kbuild: " Arnd Bergmann
2017-03-14 21:37 ` [PATCH] [SUBMITTED 20170314] " Arnd Bergmann
2017-03-29  2:07   ` Masahiro Yamada
2017-03-29  9:30     ` Arnd Bergmann
2017-03-30 15:42       ` Masahiro Yamada
2017-03-31  8:48         ` Arnd Bergmann
     [not found]           ` <CAFzeTN3-=a6n-PEKP5ssCUszYYPu5R5_6uf9DEdptPKEuWOsrQ@mail.gmail.com>
2017-03-31 20:39             ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).