Subject: Re: [SOLVED] Re: GCC-4.3.3 sillyness

From: Kumba <[email-masked]>
Date: Wed, 25 Feb 2009 00:13:20 -0500

Manuel Lauss wrote:
> On Fri, 30 Jan 2009 08:44:07 +0100
> Manuel Lauss <[email-masked]> wrote:
> 
>> Hello,
>>
>> Can't build kernel because gcc-4.3.3 comes up with this gem:
>>
>>   CC      arch/mips/kernel/traps.o
>> cc1: warnings being treated as errors
>> /linux-2.6.git/arch/mips/kernel/traps.c: In function 'set_uncached_handler':
>> /linux-2.6.git/arch/mips/kernel/traps.c:1599: error: format not a string literal and no format arguments
> 
> Turns out Gentoo applied a patch (from Debian) which unconditionally
> enables -Wformat-security (which is responsible for the warning).

Yeah, I did some digging and it looks like we added a patch called 
"10_all_gcc-default-format-security.patch" into our gcc-4.3.3 ebuild.  The patch 
claims it was ripped from Debian; can any Debian devs comment on whether you 
guys still use this patch and what the idea behind it is?  I'm not sure if I'll 
find any discussion on our end as to why it's included without finding Mike 
(vapier) around.

-- 
Joshua Kinard
Gentoo/MIPS
[email-masked]

"The past tempts us, the present confuses us, the future frightens us.  And our 
lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic
ripped from Debian

# DP: Turn on -Wformat -Wformat-security by  default for C, C++, ObjC, ObjC++.

--- gcc/c-common.c
+++ gcc/c-common.c
@@ -277,7 +277,7 @@
 /* Warn about format/argument anomalies in calls to formatted I/O functions
    (*printf, *scanf, strftime, strfmon, etc.).  */
 
-int warn_format;
+int warn_format = 1;
 
 /* Warn about using __null (as NULL in C++) as sentinel.  For code compiled
    with GCC this doesn't matter as __null is guaranteed to have the right
--- gcc/c.opt
+++ gcc/c.opt
@@ -228,7 +228,7 @@
 Warn about format strings that contain NUL bytes
 
 Wformat-security
-C ObjC C++ ObjC++ Var(warn_format_security) Warning
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning
 Warn about possible security problems with format functions
 
 Wformat-y2k
--- gcc/doc/invoke.texi
+++ gcc/doc/invoke.texi
@@ -2802,6 +2802,9 @@
 @option{-Wformat-nonliteral}, @option{-Wformat-security}, and
 @option{-Wformat=2} are available, but are not included in @option{-Wall}.
 
+NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++.
+To disable, use @option{-Wformat=0}.
+
 @item -Wformat-y2k
 @opindex Wformat-y2k
 @opindex Wno-format-y2k
@@ -2849,6 +2852,11 @@
 in future warnings may be added to @option{-Wformat-security} that are not
 included in @option{-Wformat-nonliteral}.)
 
+NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++.
+To disable, use @option{-Wno-format-security}, or disable all format warnings
+with @option{-Wformat=0}.  To make format security warnings fatal, specify
+@option{-Werror=format-security}.
+
 @item -Wformat=2
 @opindex Wformat=2
 @opindex Wno-format=2

---

From: Kumba <[email-masked]>
Date: Wed, 25 Feb 2009 21:48:48 -0500

Kumba wrote:
> "10_all_gcc-default-format-security.patch" into our gcc-4.3.3 ebuild.  
> The patch claims it was ripped from Debian; can any Debian devs comment 
> on whether you guys still use this patch and what the idea behind it 
> is?  I'm not sure if I'll find any discussion on our end as to why it's 
> included without finding Mike (vapier) around.

Looks like Gentoo and Debian aren't alone.  This was discussed on lkml because 
other mainstream distros are enabling it as a default as well, so the proposed 
solution is to just disable the format check in the kernel:

http://lkml.org/lkml/2009/2/4/259

-- 
Joshua Kinard
Gentoo/MIPS
[email-masked]