gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

7 messages, 5 authors, 2017-02-02 · open the first message on its own page

gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: Anton Blanchard <hidden>
Date: 2017-01-25 23:00:59

Hi,

gcc trunk has failed to build PowerPC64 kernels for a month or so. The issue
is in oprofile, which is common code but ends up being sucked into
arch/powerpc and therefore subject to the -Werror applied to arch/powerpc:
=20
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c: In =
function =E2=80=98oprofile_create_stats_files=E2=80=99:
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:2=
5: error: =E2=80=98%d=E2=80=99 directive output may be truncated writing be=
tween 1 and 11 bytes into a region of size 7 [-Werror=3Dformat-truncation=
=3D]
   snprintf(buf, 10, "cpu%d", i);
                         ^~
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:2=
1: note: using the range [1, -2147483648] for directive argument
   snprintf(buf, 10, "cpu%d", i);
                     ^~~~~~~
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:3=
: note: format output between 5 and 15 bytes into a destination of size 10
   snprintf(buf, 10, "cpu%d", i);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  LD      crypto/async_tx/built-in.o
  CC      lib/random32.o
cc1: all warnings being treated as errors

Anton

RE: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: David Laight <hidden>
Date: 2017-01-26 11:00:40

RnJvbTogQW50b24gQmxhbmNoYXJkDQo+IFNlbnQ6IDI1IEphbnVhcnkgMjAxNyAyMzowMQ0KPiBn
Y2MgdHJ1bmsgaGFzIGZhaWxlZCB0byBidWlsZCBQb3dlclBDNjQga2VybmVscyBmb3IgYSBtb250
aCBvciBzby4gVGhlIGlzc3VlDQo+IGlzIGluIG9wcm9maWxlLCB3aGljaCBpcyBjb21tb24gY29k
ZSBidXQgZW5kcyB1cCBiZWluZyBzdWNrZWQgaW50bw0KPiBhcmNoL3Bvd2VycGMgYW5kIHRoZXJl
Zm9yZSBzdWJqZWN0IHRvIHRoZSAtV2Vycm9yIGFwcGxpZWQgdG8gYXJjaC9wb3dlcnBjOg0KLi4u
DQo+IGxpbnV4L2FyY2gvcG93ZXJwYy9vcHJvZmlsZS8uLi8uLi8uLi9kcml2ZXJzL29wcm9maWxl
L29wcm9maWxlX3N0YXRzLmM6NTU6MjU6IGVycm9yOiAlZCBkaXJlY3RpdmUNCj4gb3V0cHV0IG1h
eSBiZSB0cnVuY2F0ZWQgd3JpdGluZyBiZXR3ZWVuIDEgYW5kIDExIGJ5dGVzIGludG8gYSByZWdp
b24gb2Ygc2l6ZSA3IFstV2Vycm9yPWZvcm1hdC0NCj4gdHJ1bmNhdGlvbj1dDQo+ICAgIHNucHJp
bnRmKGJ1ZiwgMTAsICJjcHUlZCIsIGkpOw0KDQpGRlMgdGhlc2Ugd2FybmluZ3MgYXJlIGdldHRp
bmcgT1RULg0KVGhlIGNvbXBpbGVyIG5lZWRzIHRvIGJlIGFibGUgdG8gdHJhY2sgdGhlIGRvbWFp
biBvZiBpbnRlZ2VycyBiZWZvcmUgYXBwbHlpbmcNCnNvbWUgb2YgdGhlc2Ugd2FybmluZ3MuDQoN
CglEYXZpZA0KDQo=

Re: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: Arnd Bergmann <arnd@arndb.de>
Date: 2017-01-26 12:57:21

On Thu, Jan 26, 2017 at 12:00 PM, David Laight [off-list ref] wrote:
From: Anton Blanchard
quoted
Sent: 25 January 2017 23:01
gcc trunk has failed to build PowerPC64 kernels for a month or so. The issue
is in oprofile, which is common code but ends up being sucked into
arch/powerpc and therefore subject to the -Werror applied to arch/powerpc:
...
quoted
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:25: error: %d directive
output may be truncated writing between 1 and 11 bytes into a region of size 7 [-Werror=format-
truncation=]
   snprintf(buf, 10, "cpu%d", i);
FFS these warnings are getting OTT.
The compiler needs to be able to track the domain of integers before applying
some of these warnings.
gcc-7 introduces lots of new warnings, some better than others. I'm
trying to categorize
both the new warnings and any others added in the recent years that we
may have missed
to see whether we want to turn them on by default or only in
scripts/Makefile.extrawarn
when building with W=1, W=2 or W=3.

I made a spreadsheet with the warnings that we have available in each version,
and also the number of unique output lines for that warning, see

https://docs.google.com/spreadsheets/d/1QemrLyvzrSDfm_MO3-_pwdfsTp2uqwjOdRBxxj6oo5M/edit?usp=sharing

For this specific warning, an ARM allmodconfig build shows 360
distinct warnings from a
total of 243 files. It's probably a good idea to look over them once
to see if anything sticks
out, but otherwise I think we change it to the W=2 level.

     Arnd

Re: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: William Cohen <hidden>
Date: 2017-01-26 15:46:47

On 01/25/2017 06:00 PM, Anton Blanchard wrote:
Hi,

gcc trunk has failed to build PowerPC64 kernels for a month or so. The issue
is in oprofile, which is common code but ends up being sucked into
arch/powerpc and therefore subject to the -Werror applied to arch/powerpc:
 
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c: In function ‘oprofile_create_stats_files’:
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:25: error: ‘%d’ directive output may be truncated writing between 1 and 11 bytes into a region of size 7 [-Werror=format-truncation=]
   snprintf(buf, 10, "cpu%d", i);
                         ^~
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:21: note: using the range [1, -2147483648] for directive argument
   snprintf(buf, 10, "cpu%d", i);
                     ^~~~~~~
linux/arch/powerpc/oprofile/../../../drivers/oprofile/oprofile_stats.c:55:3: note: format output between 5 and 15 bytes into a destination of size 10
   snprintf(buf, 10, "cpu%d", i);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  LD      crypto/async_tx/built-in.o
  CC      lib/random32.o
cc1: all warnings being treated as errors

Anton

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
oprofile-list mailing list
oprofile-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oprofile-list
The attached patch should make the buffer large enough to eliminate the warning.

-Will

Re: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: Robert Richter <rric@kernel.org>
Date: 2017-01-26 16:06:35

On 26.01.17 10:46:43, William Cohen wrote:
From 7e46dbd7dc5bc941926a4a63c28ccebf46493e8d Mon Sep 17 00:00:00 2001
From: William Cohen <redacted>
Date: Thu, 26 Jan 2017 10:33:59 -0500
Subject: [PATCH] Avoid hypthetical string truncation in oprofile stats buffer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Increased the size of an internal oprofile driver buffer ensuring that
the string was never truncated for any possible int value to avoid the
following gcc-7 compiler error on ppc when building the kernel:
Please test gcc7 for other archs first. I don't think this is the only
change needed to avoid this warning in oprofile code.

Thanks,

-Robert

Re: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: William Cohen <hidden>
Date: 2017-01-30 15:35:11

On 01/26/2017 11:06 AM, Robert Richter wrote:
On 26.01.17 10:46:43, William Cohen wrote:
quoted
From 7e46dbd7dc5bc941926a4a63c28ccebf46493e8d Mon Sep 17 00:00:00 2001
From: William Cohen <redacted>
Date: Thu, 26 Jan 2017 10:33:59 -0500
Subject: [PATCH] Avoid hypthetical string truncation in oprofile stats buffer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Increased the size of an internal oprofile driver buffer ensuring that
the string was never truncated for any possible int value to avoid the
following gcc-7 compiler error on ppc when building the kernel:
Please test gcc7 for other archs first. I don't think this is the only
change needed to avoid this warning in oprofile code.

Thanks,

-Robert
Hi Robert,

It took me a little while to get a gcc-7 environment set up with Fedora Rawhide on x86_64.  I have a kernel building now with gcc-7 and will see what other issues pop up during the compile.

While watching the output of the build I see the gcc-7 error message about truncating output of snprintf output seems to occur for a number of other places besides the oprofile kernel code during the compile.

-Will

Re: gcc trunk fails to build kernel on PowerPC64 due to oprofile warnings

From: William Cohen <hidden>
Date: 2017-02-02 17:21:11

On 01/26/2017 11:06 AM, Robert Richter wrote:
On 26.01.17 10:46:43, William Cohen wrote:
quoted
From 7e46dbd7dc5bc941926a4a63c28ccebf46493e8d Mon Sep 17 00:00:00 2001
From: William Cohen <redacted>
Date: Thu, 26 Jan 2017 10:33:59 -0500
Subject: [PATCH] Avoid hypthetical string truncation in oprofile stats buffer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Increased the size of an internal oprofile driver buffer ensuring that
the string was never truncated for any possible int value to avoid the
following gcc-7 compiler error on ppc when building the kernel:
Please test gcc7 for other archs first. I don't think this is the only
change needed to avoid this warning in oprofile code.

Thanks,

-Robert
Hi Robert,

I looked through the oprofile arch specific code for other snprintf uses with small character arrays and added those to the patch.  Attached is current patch to increase the size of the buffers to make sure that they will not be truncated.

OProfile since 1.0.0 has used the kernels perf infrastructure rather than the oprofile kernel driver.  OProfile 1.0 was released September 2014, over two years ago.  Would it make sense to deprecate and at some point remove the oprofile driver kernel from the kernel?  Recent Fedora distributions already have CONFIG_OPROFILE unset in the kernel configurations.

-Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help