[Qemu-devel] [PATCH] scripts/checkpatch.pl: fix false error of externs checking.

Jiang Biao posted 1 patch 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1507622059-4493-1-git-send-email-jiang.biao2@zte.com.cn
Test checkpatch passed
Test docker passed
Test s390x passed
scripts/checkpatch.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] scripts/checkpatch.pl: fix false error of externs checking.
Posted by Jiang Biao 6 years, 6 months ago
When adding a function declaration in a .c file without extern
keywork decoration, checkpatch.pl will report *externs should be
avoided in .c files* false error. This patch fixes the bug.

Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn>
---
 scripts/checkpatch.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3c0a28e..c12bc4c 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2534,7 +2534,7 @@ sub process {
 
 # check for new externs in .c files.
 		if ($realfile =~ /\.c$/ && defined $stat &&
-		    $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
+		    $stat =~ /^.\s*(?:extern\s+)$Type\s+($Ident)(\s*)\(/s)
 		{
 			my $function_name = $1;
 			my $paren_space = $2;
-- 
2.7.4


Re: [Qemu-devel] [PATCH] scripts/checkpatch.pl: fix false error of externs checking.
Posted by Peter Maydell 6 years, 6 months ago
On 10 October 2017 at 08:54, Jiang Biao <jiang.biao2@zte.com.cn> wrote:
> When adding a function declaration in a .c file without extern
> keywork decoration, checkpatch.pl will report *externs should be
> avoided in .c files* false error. This patch fixes the bug.

I don't think this is a bug. "extern int foo(void);" and
"int foo(void);" have the same effect: they declare a function
prototype that can be called from outside the file.
We don't want to permit that in QEMU. Either:
 (1) the function is for use only within this file: the
 declaration should be "static int foo(void);"
 (2) the function is for use by other files too: the
 declaration should be in a header file, not a .c file,
 so the other files can use it

Do you have an example of code where this warning is a problem?

thanks
-- PMM

Re: [Qemu-devel][PATCH] scripts/checkpatch.pl: fix false error ofexterns checking.
Posted by jiang.biao2@zte.com.cn 6 years, 6 months ago
PiBPbiAxMCBPY3RvYmVyIDIwMTcgYXQgMDg6NTQsIEppYW5nIEJpYW8gPGppYW5nLmJpYW8yQHp0
ZS5jb20uY24+IHdyb3RlOg0KDQoNCj4gPiBXaGVuIGFkZGluZyBhIGZ1bmN0aW9uIGRlY2xhcmF0
aW9uIGluIGEgLmMgZmlsZSB3aXRob3V0IGV4dGVybg0KPiA+a2V5d29yayBkZWNvcmF0aW9uLCBj
aGVja3BhdGNoLnBsIHdpbGwgcmVwb3J0ICpleHRlcm5zIHNob3VsZCBiZQ0KPiA+IGF2b2lkZWQg
aW4gLmMgZmlsZXMqIGZhbHNlIGVycm9yLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWcuDQo+IA0K
PiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgYSBidWcuICJleHRlcm4gaW50IGZvbyh2b2lkKTsiIGFu
ZA0KPiAiaW50IGZvbyh2b2lkKTsiIGhhdmUgdGhlIHNhbWUgZWZmZWN0OiB0aGV5IGRlY2xhcmUg
YSBmdW5jdGlvbg0KPiBwcm90b3R5cGUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0
aGUgZmlsZS4NCj4gV2UgZG9uJ3Qgd2FudCB0byBwZXJtaXQgdGhhdCBpbiBRRU1VLiBFaXRoZXI6
DQo+ICAoMSkgdGhlIGZ1bmN0aW9uIGlzIGZvciB1c2Ugb25seSB3aXRoaW4gdGhpcyBmaWxlOiB0
aGUNCj4gIGRlY2xhcmF0aW9uIHNob3VsZCBiZSAic3RhdGljIGludCBmb28odm9pZCk7Ig0KPiAg
KDIpIHRoZSBmdW5jdGlvbiBpcyBmb3IgdXNlIGJ5IG90aGVyIGZpbGVzIHRvbzogdGhlDQo+ICBk
ZWNsYXJhdGlvbiBzaG91bGQgYmUgaW4gYSBoZWFkZXIgZmlsZSwgbm90IGEgLmMgZmlsZSwNCj4g
IHNvIHRoZSBvdGhlciBmaWxlcyBjYW4gdXNlIGl0DQo+IA0KPiBEbyB5b3UgaGF2ZSBhbiBleGFt
cGxlIG9mIGNvZGUgd2hlcmUgdGhpcyB3YXJuaW5nIGlzIGEgcHJvYmxlbT8NCkhpIFBldGVyLA0K
DQpJIHVuZGVyc3RhbmQgZXh0ZXJuYWwgZnVuY3Rpb25zIHNob3VsZCBiZSBwdXQgaW4gaGVhZGVy
IGZpbGVzLiBCdXQgdGhlcmUNCg0KaXMgc29tZSByYXJlIGV4Y2VwdGlvbnMsIHRha2UgdGhlIGNv
ZGUgc2VnbWVudCBpbiANCg0KDQp0Y2cvbWlwcy90Y2ctdGFyZ2V0LmluYy5jIGZvciBleGFtcGxl
LA0KDQojaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMg0KIyBkZWZpbmUgTE9fT0ZGICAoTUlQ
U19CRSAqIDQpDQojIGRlZmluZSBISV9PRkYgICg0IC0gTE9fT0ZGKQ0KI2Vsc2UNCi8qIFRvIGFz
c2VydCBhdCBjb21waWxlLXRpbWUgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIG5ldmVyIHVzZWQNCiAg
IGZvciBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDY0LiAgKi8NCi8qIGV4dGVybiAqLyBpbnQgbGlu
a19lcnJvcih2b2lkKTsNCiMgZGVmaW5lIExPX09GRiAgbGlua19lcnJvcigpDQojIGRlZmluZSBI
SV9PRkYgIGxpbmtfZXJyb3IoKQ0KI2VuZGlmDQoNCkluIHRoaXMgY2FzZSwgdGhlIGV4dGVybmFs
IGZ1bmNpdG9uIGlzIGp1c3QgdXNlZCB0byBhc3NlcnQgYXQgY29tcGxpZS10aW1lLg0KDQoNCklm
IEkgbWFrZSBhIHBhdGNoIHRvIGRlbGV0ZSB0aGUgY29tbWVudGVkIG91dCBleHRlcm4gYmVmb3Jl
ICppbnQgbGlua19lcnJvcigpKiwNCg0KdGhlIGNoZWNrcGF0Y2gucGwgd2lsbCBjb21wbGFpbiB0
aGUgICpleHRlcm5zIHNob3VsZCBiZSBhdm9pZGVkIGluIC5jIGZpbGVzKiANCg0KDQplcnJvci4N
Cg0KVGhlIHNhbWUgdXNhZ2UgY2FuIGFsc28gYmUgZm91bmQgaW4gdGNnL3RjZy1vcC5jLA0KDQov
KiBSZWR1Y2UgdGhlIG51bWJlciBvZiBpZmRlZnMgYmVsb3cuICBUaGlzIGFzc3VtZXMgdGhhdCBh
bGwgdXNlcyBvZg0KICAgVENHVl9ISUdIIGFuZCBUQ0dWX0xPVyBhcmUgcHJvcGVybHkgcHJvdGVj
dGVkIGJ5IGEgY29uZGl0aW9uYWwgdGhhdA0KICAgdGhlIGNvbXBpbGVyIGNhbiBlbGltaW5hdGUu
ICAqLw0KI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0gNjQNCmV4dGVybiBUQ0d2X2kzMiBUQ0dW
X0xPV19saW5rX2Vycm9yKFRDR3ZfaTY0KTsNCmV4dGVybiBUQ0d2X2kzMiBUQ0dWX0hJR0hfbGlu
a19lcnJvcihUQ0d2X2k2NCk7DQojZGVmaW5lIFRDR1ZfTE9XICBUQ0dWX0xPV19saW5rX2Vycm9y
DQojZGVmaW5lIFRDR1ZfSElHSCBUQ0dWX0hJR0hfbGlua19lcnJvcg0KI2VuZGlmDQoNCkknbSBu
b3Qgc3VyZSBpZiB0aGUgY2hlY2twYXRjaC5wbCBzaG91bGQgdGFrZSB0aGVzZSBjYXNlIGludG8g
Y29uc2lkZXJhdGlvbi4gOikNCg0KVGhhbmtzLg0KDQoNCg0KDQoNClJlZ2FyZHMu