From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout02.t-online.de (mailout02.t-online.de [194.25.134.17]) by sourceware.org (Postfix) with ESMTPS id 96993385842E for ; Sat, 14 Aug 2021 13:39:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 96993385842E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=t-online.de Received: from fwd22.aul.t-online.de (fwd22.aul.t-online.de [172.20.26.127]) by mailout02.t-online.de (Postfix) with SMTP id BBAD24964 for ; Sat, 14 Aug 2021 15:39:15 +0200 (CEST) Received: from [192.168.2.101] (XNt28uZT8heA41igj4gjmkc3JZSm5ivZEaxb3N6LUUx9KBe+Ve5qIE8il2MdSg7Z61@[79.230.161.132]) by fwd22.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384 encrypted) esmtp id 1mEtsZ-3xr65A0; Sat, 14 Aug 2021 15:39:15 +0200 From: Christian Franke Subject: [PATCH] cygutils-extra 1.4.16-3: cygdrop: Fix crash To: cygwin@cygwin.com Message-ID: <2f5eedb0-b3ec-4c4e-5740-5196e2572dc7@t-online.de> Date: Sat, 14 Aug 2021 15:39:15 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 SeaMonkey/2.53.8.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------5943301D8A0BAF042EC8E242" X-ID: XNt28uZT8heA41igj4gjmkc3JZSm5ivZEaxb3N6LUUx9KBe+Ve5qIE8il2MdSg7Z61 X-TOI-EXPURGATEID: 150726::1628948355-0000454D-71799F73/0/0 CLEAN NORMAL X-TOI-MSGID: 7079d114-0638-4348-acb1-f786fc2198ff X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, BODY_8BITS, FREEMAIL_FROM, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Aug 2021 13:39:28 -0000 This is a multi-part message in MIME format. --------------5943301D8A0BAF042EC8E242 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Cygdrop from recent cygutils-extra crashes (only) after printing help text: $ cygdrop Usage: cygdrop [OPTIONS] COMMAND [ARG ...] Group options   -l        Disable local administrator group [default] ...   -v        Verbose output, lists groups and privileges changed.             Repeat to list all groups and privileges. *** stack smashing detected ***: terminated Aborted (core dumped) The root of the problem is a usually harmless bug introduced in 2010. A function return type was declared as 'int' instead of 'void': https://sourceware.org/git/?p=cygwin-apps/cygutils.git;a=commitdiff;h=517cf61 Newer g++ may then optimize away the function epilogue after inline expansion. Here is a minimal testcase: $ g++ --version g++ (GCC) 10.2.0 ... $ cat test.cc void f(); static int g() {   f(); } void h() {   g(); } $ g++ -S -O test.cc test.cc: In function ‘int g()’: test.cc:6:1: warning: no return statement in function returning non-void [-Wreturn-type]     6 | }       | ^ $ c++filt < test.s         .file   "test.cc"         .text         .globl  h()         .def    h();    .scl    2;      .type   32; .endef         .seh_proc       h() h(): .LFB1:         subq    $40, %rsp         .seh_stackalloc 40         .seh_endprologue         call    f()         nop         .seh_endproc         .ident  "GCC: (GNU) 10.2.0"         .def    f();    .scl    2;      .type   32; .endef Problem and -Wreturn-type do not occur if compiled as a C program: $ g++ -xc -S -O test.cc $ cat test.s ... h:         subq    $40, %rsp         .seh_stackalloc 40         .seh_endprologue         call    f         nop         addq    $40, %rsp         ret         .seh_endproc ... The problem also occurs with 32-bit Cygwin g++ and with current MinGW-w64-g++ 32/64-bit. Unfortunately GCC upstream has already set a related bug report to INVALID:  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96181 I disagree... Cygport should possibly add '-Werror=return-type' to C++ defaults. Patch for cygutils is attached. Regards, Christian --------------5943301D8A0BAF042EC8E242 Content-Type: text/plain; charset=UTF-8; name="0001-cygdrop-Fix-return-type-of-void-function.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-cygdrop-Fix-return-type-of-void-function.patch" RnJvbSAzMzBlNGM4MDMzZWExN2MzMTI4Njc5MDYwOTIzOTc0MjVkOTc3YzA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3RpYW4uZnJh bmtlQHQtb25saW5lLmRlPgpEYXRlOiBTYXQsIDE0IEF1ZyAyMDIxIDE0OjMyOjI1ICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gY3lnZHJvcDogRml4IHJldHVybiB0eXBlIG9mICd2b2lkJyBm dW5jdGlvbi4KClRoaXMgZml4ZXMgYSBjcmFzaCB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBn KysgKEdDQyBCdWd6aWxsYSA5NjE4MSkuCi0tLQogc3JjL2N5Z2Ryb3AvY3lnZHJvcC5jYyB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyYy9jeWdkcm9wL2N5Z2Ryb3AuY2MgYi9zcmMvY3lnZHJvcC9jeWdk cm9wLmNjCmluZGV4IDM1YmNjMTkuLmRjNDAzYzkgMTAwNjQ0Ci0tLSBhL3NyYy9jeWdkcm9w L2N5Z2Ryb3AuY2MKKysrIGIvc3JjL2N5Z2Ryb3AvY3lnZHJvcC5jYwpAQCAtMzksNyArMzks NyBAQCBzdGF0aWMgdm9pZCBoZWxwIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiBz dGF0aWMgdm9pZCB2ZXJzaW9uIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0 aWMgdm9pZCBsaWNlbnNlIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiAKLXN0YXRp YyBpbnQKK3N0YXRpYyB2b2lkCiB1c2FnZUNvcmUgKEZJTEUgKiBmLCBjb25zdCBjaGFyICog bmFtZSkKIHsKICAgZnByaW50ZiAoZiwKLS0gCjIuMzIuMAoK --------------5943301D8A0BAF042EC8E242--