X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; q=dns; s=default; b=ZIJ7HMs 9USsO80QIOt/DjnmDIQOmc2uFlrE7LYY1qWqmFFJFnzqBYMO8He0EYP0TZQIXD4R Q1HTfSyGcaOINRq6uvgwvDe+VIiKEs35yJbNvKsNNy3g3G7WGgcRELazt1vsy69v MfMfahbRpgZevAiAzJmC/OplAdoEZ4YjSusg= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; s=default; bh=NZRUuYio+HE7C yiUIFHqhIRhXtk=; b=Im0sD7k7p9oYcdLdZI+JErVqPbbjgk52qbE6a7vhIaWJ2 ymKUnbZgqDr9ezxhjy8oBDi0EDUUX5LiuHS4I6sgIJblstsxjMD2voVyHepjaoQv Y3HiGUbpbMnjSGvBBAOx4tD4bi6RxgcGmeu7Pf3u7oONrAoECroy4pytWceZd4= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=rsp, HX-Received:adf X-HELO: mail-wr1-f54.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=H3E/Lntwp630nTVgcJp3/QObElKu0QKhaZ1Ge0B9yTA=; b=gvEvQ21zW1HTQspTUBg3r9XFgCgxeQE/MbycioO6O3cYxgWAkv+spqmicbWKhc/uLl tLL7C61kaBM/+kkmjaCPD4DFeHTed6FyOp0z+dbSWbHPx4NaOYEC4Bdj712aO/YJXAfH 5GOBQ2m0BRVG21F5TpWbU4Nzh6204q5rphFk+cy8C6uFAkDlN9eDDtjLQJ2Mp7fq18cB O/tiyvbGtRcpDx4vibsD8mQioItVZ8c1Lp5j1KC10rEu/B2s1vhMdo0BB4XhAXYDTCMx HC+UipBWSy8H2nNzMwEnECJm4rcsMtYxaLuS1cKRLEKTNldIDs34Oadp3yzANNcUR/21 PGbg== MIME-Version: 1.0 References: <20181129085816 DOT GV30649 AT calimero DOT vinschen DOT de> <20181129163327 DOT GD30649 AT calimero DOT vinschen DOT de> <20190202170508 DOT GB3532 AT calimero DOT vinschen DOT de> In-Reply-To: <20190202170508.GB3532@calimero.vinschen.de> From: Sam Habiel Date: Mon, 4 Feb 2019 09:16:57 -0500 Message-ID: Subject: Re: 32 bit vs 64 bit Cygwin, followup To: cygwin AT cygwin DOT com, Sam Habiel Content-Type: multipart/mixed; boundary="000000000000cf4896058112255b" X-IsSubscribed: yes --000000000000cf4896058112255b Content-Type: text/plain; charset="UTF-8" >That's not GCC fault. You're running varargs, written for the standard >stack layout of the MSABI target from a function with a stack laid out >in SYSV ABI. That can't work. I did some research to see how to write my own version of varargs (the code base is already instrumented to do different versions of varargs based on operating system). What I noticed though is that after disassembling code for win64 abi vs sysv abi, it seems like gcc/crt is attempting to do the right thing. There is different code for sysv vs win64 for va_start. sysv: 10 va_list vl; 11 va_start(vl,n); 0x00000001004010e4 <+100>: movl $0x8,-0xc8(%rbp) 0x00000001004010ee <+110>: movl $0x30,-0xc4(%rbp) 0x00000001004010f8 <+120>: lea 0x10(%rbp),%rax 0x00000001004010fc <+124>: mov %rax,-0xc0(%rbp) 0x0000000100401103 <+131>: lea -0xb0(%rbp),%rax 0x000000010040110a <+138>: mov %rax,-0xb8(%rbp) win64: 10 va_list vl; 11 va_start(vl,n); 0x00000001004010a3 <+35>: lea 0x18(%rbp),%rax 0x00000001004010a7 <+39>: mov %rax,-0x18(%rbp) So there may be a incomplete support for varargs for the sysv abi--but buggy. I attached the disassembly as well as the testing programs for your convenience. --Sam --000000000000cf4896058112255b Content-Type: text/plain; charset="US-ASCII"; name="dis_sysv.txt" Content-Disposition: attachment; filename="dis_sysv.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrqf2cmd0 RHVtcCBvZiBhc3NlbWJsZXIgY29kZSBmb3IgZnVuY3Rpb24gUHJpbnRGbG9h dHM6CnRlc3Rfc3lzdmFiaS5jOgo2CXsKICAgMHgwMDAwMDAwMTAwNDAxMDgw IDwrMD46CXB1c2ggICAlcmJwCiAgIDB4MDAwMDAwMDEwMDQwMTA4MSA8KzE+ Ogltb3YgICAgJXJzcCwlcmJwCiAgIDB4MDAwMDAwMDEwMDQwMTA4NCA8KzQ+ OglzdWIgICAgJDB4MTAwLCVyc3AKICAgMHgwMDAwMDAwMTAwNDAxMDhiIDwr MTE+Ogltb3YgICAgJWVkaSwtMHhkNCglcmJwKQogICAweDAwMDAwMDAxMDA0 MDEwOTEgPCsxNz46CW1vdiAgICAlcnNpLC0weGE4KCVyYnApCiAgIDB4MDAw MDAwMDEwMDQwMTA5OCA8KzI0PjoJbW92ICAgICVyZHgsLTB4YTAoJXJicCkK ICAgMHgwMDAwMDAwMTAwNDAxMDlmIDwrMzE+Ogltb3YgICAgJXJjeCwtMHg5 OCglcmJwKQogICAweDAwMDAwMDAxMDA0MDEwYTYgPCszOD46CW1vdiAgICAl cjgsLTB4OTAoJXJicCkKICAgMHgwMDAwMDAwMTAwNDAxMGFkIDwrNDU+Oglt b3YgICAgJXI5LC0weDg4KCVyYnApCiAgIDB4MDAwMDAwMDEwMDQwMTBiNCA8 KzUyPjoJdGVzdCAgICVhbCwlYWwKICAgMHgwMDAwMDAwMTAwNDAxMGI2IDwr NTQ+OglqZSAgICAgMHgxMDA0MDEwZDggPFByaW50RmxvYXRzKzg4PgogICAw eDAwMDAwMDAxMDA0MDEwYjggPCs1Nj46CW1vdmFwcyAleG1tMCwtMHg4MCgl cmJwKQogICAweDAwMDAwMDAxMDA0MDEwYmMgPCs2MD46CW1vdmFwcyAleG1t MSwtMHg3MCglcmJwKQogICAweDAwMDAwMDAxMDA0MDEwYzAgPCs2ND46CW1v dmFwcyAleG1tMiwtMHg2MCglcmJwKQogICAweDAwMDAwMDAxMDA0MDEwYzQg PCs2OD46CW1vdmFwcyAleG1tMywtMHg1MCglcmJwKQogICAweDAwMDAwMDAx MDA0MDEwYzggPCs3Mj46CW1vdmFwcyAleG1tNCwtMHg0MCglcmJwKQogICAw eDAwMDAwMDAxMDA0MDEwY2MgPCs3Nj46CW1vdmFwcyAleG1tNSwtMHgzMCgl cmJwKQogICAweDAwMDAwMDAxMDA0MDEwZDAgPCs4MD46CW1vdmFwcyAleG1t NiwtMHgyMCglcmJwKQogICAweDAwMDAwMDAxMDA0MDEwZDQgPCs4ND46CW1v dmFwcyAleG1tNywtMHgxMCglcmJwKQoKNwkgIGludCBpOwo4CSAgZG91Ymxl IHZhbDsKOQkgIHByaW50ZiAoIlByaW50aW5nIGZsb2F0czoiKTsKICAgMHgw MDAwMDAwMTAwNDAxMGQ4IDwrODg+OglsZWEgICAgMHgxZjIxKCVyaXApLCVy Y3ggICAgICAgICMgMHgxMDA0MDMwMDAKICAgMHgwMDAwMDAwMTAwNDAxMGRm IDwrOTU+OgljYWxscSAgMHgxMDA0MDEyNzAgPHByaW50Zj4KCjEwCSAgdmFf bGlzdCB2bDsKMTEJICB2YV9zdGFydCh2bCxuKTsKICAgMHgwMDAwMDAwMTAw NDAxMGU0IDwrMTAwPjoJbW92bCAgICQweDgsLTB4YzgoJXJicCkKICAgMHgw MDAwMDAwMTAwNDAxMGVlIDwrMTEwPjoJbW92bCAgICQweDMwLC0weGM0KCVy YnApCiAgIDB4MDAwMDAwMDEwMDQwMTBmOCA8KzEyMD46CWxlYSAgICAweDEw KCVyYnApLCVyYXgKICAgMHgwMDAwMDAwMTAwNDAxMGZjIDwrMTI0PjoJbW92 ICAgICVyYXgsLTB4YzAoJXJicCkKICAgMHgwMDAwMDAwMTAwNDAxMTAzIDwr MTMxPjoJbGVhICAgIC0weGIwKCVyYnApLCVyYXgKICAgMHgwMDAwMDAwMTAw NDAxMTBhIDwrMTM4PjoJbW92ICAgICVyYXgsLTB4YjgoJXJicCkKCjEyCSAg Zm9yIChpPTA7aTxuO2krKykKICAgMHgwMDAwMDAwMTAwNDAxMTExIDwrMTQ1 PjoJbW92bCAgICQweDAsLTB4YjQoJXJicCkKICAgMHgwMDAwMDAwMTAwNDAx MTFiIDwrMTU1PjoJam1wICAgIDB4MTAwNDAxMTYzIDxQcmludEZsb2F0cysy Mjc+CgoxMwkgIHsKMTQJICAgIHZhbD12YV9hcmcodmwsZG91YmxlKTsKICAg MHgwMDAwMDAwMTAwNDAxMTFkIDwrMTU3PjoJbW92ICAgIC0weGM4KCVyYnAp LCVyYXgKICAgMHgwMDAwMDAwMTAwNDAxMTI0IDwrMTY0PjoJbGVhICAgIDB4 OCglcmF4KSwlcmR4CiAgIDB4MDAwMDAwMDEwMDQwMTEyOCA8KzE2OD46CW1v diAgICAlcmR4LC0weGM4KCVyYnApCiAgIDB4MDAwMDAwMDEwMDQwMTEyZiA8 KzE3NT46CW1vdnNkICAoJXJheCksJXhtbTAKICAgMHgwMDAwMDAwMTAwNDAx MTMzIDwrMTc5PjoJbW92c2QgICV4bW0wLC0weGMwKCVyYnApCgoxNQkgICAg cHJpbnRmICgiIFslLjJmXSIsdmFsKTsKICAgMHgwMDAwMDAwMTAwNDAxMTNi IDwrMTg3PjoJbW92c2QgIC0weGMwKCVyYnApLCV4bW0xCiAgIDB4MDAwMDAw MDEwMDQwMTE0MyA8KzE5NT46CW1vdnNkICAtMHhjMCglcmJwKSwleG1tMAog ICAweDAwMDAwMDAxMDA0MDExNGIgPCsyMDM+Ogltb3ZxICAgJXhtbTAsJXJk eAogICAweDAwMDAwMDAxMDA0MDExNTAgPCsyMDg+OglsZWEgICAgMHgxZWJh KCVyaXApLCVyY3ggICAgICAgICMgMHgxMDA0MDMwMTEKICAgMHgwMDAwMDAw MTAwNDAxMTU3IDwrMjE1PjoJY2FsbHEgIDB4MTAwNDAxMjcwIDxwcmludGY+ CgoxMgkgIGZvciAoaT0wO2k8bjtpKyspCiAgIDB4MDAwMDAwMDEwMDQwMTE1 YyA8KzIyMD46CWFkZGwgICAkMHgxLC0weGI0KCVyYnApCiAgIDB4MDAwMDAw MDEwMDQwMTE2MyA8KzIyNz46CW1vdiAgICAtMHhiNCglcmJwKSwlZWF4CiAg IDB4MDAwMDAwMDEwMDQwMTE2OSA8KzIzMz46CWNtcCAgICAtMHhkNCglcmJw KSwlZWF4CiAgIDB4MDAwMDAwMDEwMDQwMTE2ZiA8KzIzOT46CWpsICAgICAw eDEwMDQwMTExZCA8UHJpbnRGbG9hdHMrMTU3PgoKMTYJICB9CjE3CSAgdmFf ZW5kKHZsKTsKMTgJICBwcmludGYgKCJcbiIpOwogICAweDAwMDAwMDAxMDA0 MDExNzEgPCsyNDE+Ogltb3YgICAgJDB4YSwlZWN4CiAgIDB4MDAwMDAwMDEw MDQwMTE3NiA8KzI0Nj46CWNhbGxxICAweDEwMDQwMTI4MCA8cHV0Y2hhcj4K CjE5CX0KICAgMHgwMDAwMDAwMTAwNDAxMTdiIDwrMjUxPjoJbm9wCiAgIDB4 MDAwMDAwMDEwMDQwMTE3YyA8KzI1Mj46CWxlYXZlcSAKICAgMHgwMDAwMDAw MTAwNDAxMTdkIDwrMjUzPjoJcmV0cSAgIApFbmQgb2YgYXNzZW1ibGVyIGR1 bXAuCg== --000000000000cf4896058112255b Content-Type: text/plain; charset="US-ASCII"; name="dis_win64.txt" Content-Disposition: attachment; filename="dis_win64.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrqf2cn31 RHVtcCBvZiBhc3NlbWJsZXIgY29kZSBmb3IgZnVuY3Rpb24gUHJpbnRGbG9h dHM6CnRlc3Rfd2luNjRhYmkuYzoKNgl7CiAgIDB4MDAwMDAwMDEwMDQwMTA4 MCA8KzA+OglwdXNoICAgJXJicAogICAweDAwMDAwMDAxMDA0MDEwODEgPCsx PjoJbW92ICAgICVyc3AsJXJicAogICAweDAwMDAwMDAxMDA0MDEwODQgPCs0 PjoJc3ViICAgICQweDQwLCVyc3AKICAgMHgwMDAwMDAwMTAwNDAxMDg4IDwr OD46CW1vdiAgICAlZWN4LDB4MTAoJXJicCkKICAgMHgwMDAwMDAwMTAwNDAx MDhiIDwrMTE+Ogltb3YgICAgJXJkeCwweDE4KCVyYnApCiAgIDB4MDAwMDAw MDEwMDQwMTA4ZiA8KzE1PjoJbW92ICAgICVyOCwweDIwKCVyYnApCiAgIDB4 MDAwMDAwMDEwMDQwMTA5MyA8KzE5PjoJbW92ICAgICVyOSwweDI4KCVyYnAp Cgo3CSAgaW50IGk7CjgJICBkb3VibGUgdmFsOwo5CSAgcHJpbnRmICgiUHJp bnRpbmcgZmxvYXRzOiIpOwogICAweDAwMDAwMDAxMDA0MDEwOTcgPCsyMz46 CWxlYSAgICAweDFmNjIoJXJpcCksJXJjeCAgICAgICAgIyAweDEwMDQwMzAw MAogICAweDAwMDAwMDAxMDA0MDEwOWUgPCszMD46CWNhbGxxICAweDEwMDQw MTFhMCA8cHJpbnRmPgoKMTAJICB2YV9saXN0IHZsOwoxMQkgIHZhX3N0YXJ0 KHZsLG4pOwogICAweDAwMDAwMDAxMDA0MDEwYTMgPCszNT46CWxlYSAgICAw eDE4KCVyYnApLCVyYXgKICAgMHgwMDAwMDAwMTAwNDAxMGE3IDwrMzk+Oglt b3YgICAgJXJheCwtMHgxOCglcmJwKQoKMTIJICBmb3IgKGk9MDtpPG47aSsr KQogICAweDAwMDAwMDAxMDA0MDEwYWIgPCs0Mz46CW1vdmwgICAkMHgwLC0w eDQoJXJicCkKICAgMHgwMDAwMDAwMTAwNDAxMGIyIDwrNTA+OglqbXAgICAg MHgxMDA0MDEwZTggPFByaW50RmxvYXRzKzEwND4KCjEzCSAgewoxNAkgICAg dmFsPXZhX2FyZyh2bCxkb3VibGUpOwogICAweDAwMDAwMDAxMDA0MDEwYjQg PCs1Mj46CW1vdiAgICAtMHgxOCglcmJwKSwlcmF4CiAgIDB4MDAwMDAwMDEw MDQwMTBiOCA8KzU2PjoJbGVhICAgIDB4OCglcmF4KSwlcmR4CiAgIDB4MDAw MDAwMDEwMDQwMTBiYyA8KzYwPjoJbW92ICAgICVyZHgsLTB4MTgoJXJicCkK ICAgMHgwMDAwMDAwMTAwNDAxMGMwIDwrNjQ+Ogltb3ZzZCAgKCVyYXgpLCV4 bW0wCiAgIDB4MDAwMDAwMDEwMDQwMTBjNCA8KzY4PjoJbW92c2QgICV4bW0w LC0weDEwKCVyYnApCgoxNQkgICAgcHJpbnRmICgiIFslLjJmXSIsdmFsKTsK ICAgMHgwMDAwMDAwMTAwNDAxMGM5IDwrNzM+Ogltb3ZzZCAgLTB4MTAoJXJi cCksJXhtbTEKICAgMHgwMDAwMDAwMTAwNDAxMGNlIDwrNzg+Ogltb3ZzZCAg LTB4MTAoJXJicCksJXhtbTAKICAgMHgwMDAwMDAwMTAwNDAxMGQzIDwrODM+ Ogltb3ZxICAgJXhtbTAsJXJkeAogICAweDAwMDAwMDAxMDA0MDEwZDggPCs4 OD46CWxlYSAgICAweDFmMzIoJXJpcCksJXJjeCAgICAgICAgIyAweDEwMDQw MzAxMQogICAweDAwMDAwMDAxMDA0MDEwZGYgPCs5NT46CWNhbGxxICAweDEw MDQwMTFhMCA8cHJpbnRmPgoKMTIJICBmb3IgKGk9MDtpPG47aSsrKQogICAw eDAwMDAwMDAxMDA0MDEwZTQgPCsxMDA+OglhZGRsICAgJDB4MSwtMHg0KCVy YnApCiAgIDB4MDAwMDAwMDEwMDQwMTBlOCA8KzEwND46CW1vdiAgICAtMHg0 KCVyYnApLCVlYXgKICAgMHgwMDAwMDAwMTAwNDAxMGViIDwrMTA3PjoJY21w ICAgIDB4MTAoJXJicCksJWVheAogICAweDAwMDAwMDAxMDA0MDEwZWUgPCsx MTA+OglqbCAgICAgMHgxMDA0MDEwYjQgPFByaW50RmxvYXRzKzUyPgoKMTYJ ICB9CjE3CSAgdmFfZW5kKHZsKTsKMTgJICBwcmludGYgKCJcbiIpOwogICAw eDAwMDAwMDAxMDA0MDEwZjAgPCsxMTI+Ogltb3YgICAgJDB4YSwlZWN4CiAg IDB4MDAwMDAwMDEwMDQwMTBmNSA8KzExNz46CWNhbGxxICAweDEwMDQwMTFi MCA8cHV0Y2hhcj4KCjE5CX0KICAgMHgwMDAwMDAwMTAwNDAxMGZhIDwrMTIy PjoJbm9wCiAgIDB4MDAwMDAwMDEwMDQwMTBmYiA8KzEyMz46CWFkZCAgICAk MHg0MCwlcnNwCiAgIDB4MDAwMDAwMDEwMDQwMTBmZiA8KzEyNz46CXBvcCAg ICAlcmJwCiAgIDB4MDAwMDAwMDEwMDQwMTEwMCA8KzEyOD46CXJldHEgICAK RW5kIG9mIGFzc2VtYmxlciBkdW1wLgo= --000000000000cf4896058112255b Content-Type: application/octet-stream; name="test_sysvabi.c" Content-Disposition: attachment; filename="test_sysvabi.c" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrqf573q2 LyogdmFfc3RhcnQgZXhhbXBsZSAqLwojaW5jbHVkZSA8c3RkaW8uaD4gICAg ICAvKiBwcmludGYgKi8KI2luY2x1ZGUgPHN0ZGFyZy5oPiAgICAgLyogdmFf bGlzdCwgdmFfc3RhcnQsIHZhX2FyZywgdmFfZW5kICovCgp2b2lkIF9fYXR0 cmlidXRlX18gKChzeXN2X2FiaSkpIFByaW50RmxvYXRzIChpbnQgbiwgLi4u KQp7CiAgaW50IGk7CiAgZG91YmxlIHZhbDsKICBwcmludGYgKCJQcmludGlu ZyBmbG9hdHM6Iik7CiAgdmFfbGlzdCB2bDsKICB2YV9zdGFydCh2bCxuKTsK ICBmb3IgKGk9MDtpPG47aSsrKQogIHsKICAgIHZhbD12YV9hcmcodmwsZG91 YmxlKTsKICAgIHByaW50ZiAoIiBbJS4yZl0iLHZhbCk7CiAgfQogIHZhX2Vu ZCh2bCk7CiAgcHJpbnRmICgiXG4iKTsKfQoKaW50IG1haW4gKCkKewogIFBy aW50RmxvYXRzICgzLDMuMTQxNTksMi43MTgyOCwxLjQxNDIxKTsKICByZXR1 cm4gMDsKfQo= --000000000000cf4896058112255b Content-Type: application/octet-stream; name="test_win64abi.c" Content-Disposition: attachment; filename="test_win64abi.c" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jrqf57433 LyogdmFfc3RhcnQgZXhhbXBsZSAqLwojaW5jbHVkZSA8c3RkaW8uaD4gICAg ICAvKiBwcmludGYgKi8KI2luY2x1ZGUgPHN0ZGFyZy5oPiAgICAgLyogdmFf bGlzdCwgdmFfc3RhcnQsIHZhX2FyZywgdmFfZW5kICovCgp2b2lkIFByaW50 RmxvYXRzIChpbnQgbiwgLi4uKQp7CiAgaW50IGk7CiAgZG91YmxlIHZhbDsK ICBwcmludGYgKCJQcmludGluZyBmbG9hdHM6Iik7CiAgdmFfbGlzdCB2bDsK ICB2YV9zdGFydCh2bCxuKTsKICBmb3IgKGk9MDtpPG47aSsrKQogIHsKICAg IHZhbD12YV9hcmcodmwsZG91YmxlKTsKICAgIHByaW50ZiAoIiBbJS4yZl0i LHZhbCk7CiAgfQogIHZhX2VuZCh2bCk7CiAgcHJpbnRmICgiXG4iKTsKfQoK aW50IG1haW4gKCkKewogIFByaW50RmxvYXRzICgzLDMuMTQxNTksMi43MTgy OCwxLjQxNDIxKTsKICByZXR1cm4gMDsKfQo= --000000000000cf4896058112255b Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --000000000000cf4896058112255b--