public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: ddaney@avtrex.com To: gcc-gnats@gcc.gnu.org Subject: c/4700: GCC not honoring asm clobbered regesters for -fPIC on i386 Date: Fri, 26 Oct 2001 10:56:00 -0000 [thread overview] Message-ID: <20011026175314.4736.qmail@sourceware.cygnus.com> (raw) >Number: 4700 >Category: c >Synopsis: GCC not honoring asm clobbered regesters for -fPIC on i386 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Fri Oct 26 10:56:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: David Daney >Release: gcc 3.0.1 >Organization: >Environment: Linux dl 2.4.13-1 #1 Wed Oct 24 14:35:01 PDT 2001 i686 unknown GNU assembler 2.11.2 GNU ld 2.11.2 >Description: The test case for the problem is an inline function that contains only asm code. When compiled with -fPIC it seems that gcc uses the register ebx to point to the static data area. However the asm statement says that the asm code clobbers ebx. Gcc should save ebx and then restore its value after the asm block, but it does not. This leads to SEGV when the clobbered ebx is used to access static data. >How-To-Repeat: break the included file into its three parts clobber.c clobbertest.c and Makefile Then build with make all. The executable clobberbad will SEGV when run. The executable clobbergood will complete with out problems. clobberbad links to the asm code compiled with -fPIC and clobbergood links to the same code but without -fPIC. >Fix: explicitly save and restore all clobbered registers in asm statements and then do not use the asm clobbers clause. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bundle" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bundle" LS0tLS0tLSBjbG9iYmVyLmMgLS0tLS0tLS0tCgoKCmludCBjb25maWd1cmVkID0gMDsKaW50IGNv bmZpZ1ZhbHVlID0gMDsKCgoKLyoJRnVuY3Rpb24gdG8gdGVzdCBpZiBtdWx0aW1lZGlhIGluc3Ry dWN0aW9ucyBhcmUgc3VwcG9ydGVkLi4uCiovCmlubGluZSBleHRlcm4gaW50Cm1tX3N1cHBvcnQo dm9pZCkKewoJLyogUmV0dXJucyAxIGlmIE1NWCBpbnN0cnVjdGlvbnMgYXJlIHN1cHBvcnRlZCwK CSAgIDMgaWYgQ3lyaXggTU1YIGFuZCBFeHRlbmRlZCBNTVggaW5zdHJ1Y3Rpb25zIGFyZSBzdXBw b3J0ZWQKCSAgIDUgaWYgQU1EIE1NWCBhbmQgM0ROb3chIGluc3RydWN0aW9ucyBhcmUgc3VwcG9y dGVkCgkgICAwIGlmIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgYW55IG9mIHRoZXNlCgkqLwoJ cmVnaXN0ZXIgaW50IHJ2YWwgPSAwOwoKCV9fYXNtX18gX192b2xhdGlsZV9fICgKCQkvKiBTZWUg aWYgQ1BVSUQgaW5zdHJ1Y3Rpb24gaXMgc3VwcG9ydGVkIC4uLiAqLwoJCS8qIC4uLiBHZXQgY29w aWVzIG9mIEVGTEFHUyBpbnRvIGVheCBhbmQgZWN4ICovCgkJInB1c2hmXG5cdCIKCQkicG9wbCAl JWVheFxuXHQiCgkJIm1vdmwgJSVlYXgsICUlZWN4XG5cdCIKCgkJLyogLi4uIFRvZ2dsZSB0aGUg SUQgYml0IGluIG9uZSBjb3B5IGFuZCBzdG9yZSAqLwoJCS8qICAgICB0byB0aGUgRUZMQUdTIHJl ZyAqLwoJCSJ4b3JsICQweDIwMDAwMCwgJSVlYXhcblx0IgoJCSJwdXNoICUlZWF4XG5cdCIKCQki cG9wZlxuXHQiCgoJCS8qIC4uLiBHZXQgdGhlIChob3BlZnVsbHkgbW9kaWZpZWQpIEVGTEFHUyAq LwoJCSJwdXNoZlxuXHQiCgkJInBvcGwgJSVlYXhcblx0IgoKCQkvKiAuLi4gQ29tcGFyZSBhbmQg dGVzdCByZXN1bHQgKi8KCQkieG9ybCAlJWVheCwgJSVlY3hcblx0IgoJCSJ0ZXN0bCAkMHgyMDAw MDAsICUlZWN4XG5cdCIKCQkianogTm90U3VwcG9ydGVkMVxuXHQiCQkvKiBDUFVJRCBub3Qgc3Vw cG9ydGVkICovCgoKCQkvKiBHZXQgc3RhbmRhcmQgQ1BVSUQgaW5mb3JtYXRpb24sIGFuZAoJCSAg ICAgICBnbyB0byBhIHNwZWNpZmljIHZlbmRvciBzZWN0aW9uICovCgkJIm1vdmwgJDAsICUlZWF4 XG5cdCIKCQkiY3B1aWRcblx0IgoKCQkvKiBDaGVjayBmb3IgSW50ZWwgKi8KCQkiY21wbCAkMHg3 NTZlNjU0NywgJSVlYnhcblx0IgoJCSJqbmUgVHJ5QU1EXG5cdCIKCQkiY21wbCAkMHg0OTY1NmU2 OSwgJSVlZHhcblx0IgoJCSJqbmUgVHJ5QU1EXG5cdCIKCQkiY21wbCAkMHg2YzY1NzQ2ZSwgJSVl Y3hcbiIKCQkiam5lIFRyeUFNRFxuXHQiCgkJImptcCBJbnRlbFxuXHQiCgoJCS8qIENoZWNrIGZv ciBBTUQgKi8KCQkiXG5UcnlBTUQ6XG5cdCIKCQkiY21wbCAkMHg2ODc0NzU0MSwgJSVlYnhcblx0 IgoJCSJqbmUgVHJ5Q3lyaXhcblx0IgoJCSJjbXBsICQweDY5NzQ2ZTY1LCAlJWVkeFxuXHQiCgkJ ImpuZSBUcnlDeXJpeFxuXHQiCgkJImNtcGwgJDB4NDQ0ZDQxNjMsICUlZWN4XG4iCgkJImpuZSBU cnlDeXJpeFxuXHQiCgkJImptcCBBTURcblx0IgoKCQkvKiBDaGVjayBmb3IgQ3lyaXggKi8KCQki XG5UcnlDeXJpeDpcblx0IgoJCSJjbXBsICQweDY5NzI3OTQzLCAlJWVieFxuXHQiCgkJImpuZSBO b3RTdXBwb3J0ZWQyXG5cdCIKCQkiY21wbCAkMHg3MzZlNDk3OCwgJSVlZHhcblx0IgoJCSJqbmUg Tm90U3VwcG9ydGVkM1xuXHQiCgkJImNtcGwgJDB4NjQ2MTY1NzQsICUlZWN4XG5cdCIKCQkiam5l IE5vdFN1cHBvcnRlZDRcblx0IgoJCS8qIERyb3AgdGhyb3VnaCB0byBDeXJpeC4uLiAqLwoKCgkJ LyogQ3lyaXggU2VjdGlvbiAqLwoJCS8qIFNlZSBpZiBleHRlbmRlZCBDUFVJRCBsZXZlbCA4MDAw MDAwMSBpcyBzdXBwb3J0ZWQgKi8KCQkvKiBUaGUgdmFsdWUgb2YgQ1BVSUQvODAwMDAwMDEgZm9y IHRoZSA2eDg2TVggaXMgdW5kZWZpbmVkCgkJICAgYWNjb3JkaW5nIHRvIHRoZSBDeXJpeCBDUFUg RGV0ZWN0aW9uIEd1aWRlIChQcmVsaW1pbmFyeQoJCSAgIFJldi4gMS4wMSB0YWJsZSAxKSwgc28g d2UnbGwgY2hlY2sgdGhlIHZhbHVlIG9mIGVheCBmb3IKCQkgICBDUFVJRC8wIHRvIHNlZSBpZiBz dGFuZGFyZCBDUFVJRCBsZXZlbCAyIGlzIHN1cHBvcnRlZC4KCQkgICBBY2NvcmRpbmcgdG8gdGhl IHRhYmxlLCB0aGUgb25seSBDUFUgd2hpY2ggc3VwcG9ydHMgbGV2ZWwKCQkgICAyIGlzIGFsc28g dGhlIG9ubHkgb25lIHdoaWNoIHN1cHBvcnRzIGV4dGVuZGVkIENQVUlEIGxldmVscy4KCQkqLwoJ CSJjbXBsICQweDIsICUlZWF4XG5cdCIKCQkiam5lIE1NWHRlc3Rcblx0IgkvKiBVc2Ugc3RhbmRh cmQgQ1BVSUQgaW5zdGVhZCAqLwoKCQkvKiBFeHRlbmRlZCBDUFVJRCBzdXBwb3J0ZWQgKGluIHRo ZW9yeSksIHNvIGdldCBleHRlbmRlZAoJCSAgIGZlYXR1cmVzICovCgkJIm1vdmwgJDB4ODAwMDAw MDEsICUlZWF4XG5cdCIKCQkiY3B1aWRcblx0IgoJCSJ0ZXN0bCAkMHgwMDgwMDAwMCwgJSVlYXhc blx0IgkvKiBUZXN0IGZvciBNTVggKi8KCQkianogTm90U3VwcG9ydGVkNVxuXHQiCQkvKiBNTVgg bm90IHN1cHBvcnRlZCAqLwoJCSJ0ZXN0bCAkMHgwMTAwMDAwMCwgJSVlYXhcblx0IgkvKiBUZXN0 IGZvciBFeHQnZCBNTVggKi8KCQkiam56IEVNTVhTdXBwb3J0ZWRcblx0IgoJCSJtb3ZsICQxLCAl MFxuXG5cdCIJCS8qIE1NWCBTdXBwb3J0ZWQgKi8KCQkiam1wIFJldHVyblxuXG4iCgkJIkVNTVhT dXBwb3J0ZWQ6XG5cdCIKCQkibW92bCAkMywgJTBcblxuXHQiCQkvKiBFTU1YIGFuZCBNTVggU3Vw cG9ydGVkICovCgkJImptcCBSZXR1cm5cblx0IgoKCgkJLyogQU1EIFNlY3Rpb24gKi8KCQkiQU1E OlxuXHQiCgoJCS8qIFNlZSBpZiBleHRlbmRlZCBDUFVJRCBpcyBzdXBwb3J0ZWQgKi8KCQkibW92 bCAkMHg4MDAwMDAwMCwgJSVlYXhcblx0IgoJCSJjcHVpZFxuXHQiCgkJImNtcGwgJDB4ODAwMDAw MDAsICUlZWF4XG5cdCIKCQkiamwgTU1YdGVzdFxuXHQiCS8qIFVzZSBzdGFuZGFyZCBDUFVJRCBp bnN0ZWFkICovCgoJCS8qIEV4dGVuZGVkIENQVUlEIHN1cHBvcnRlZCwgc28gZ2V0IGV4dGVuZGVk IGZlYXR1cmVzICovCgkJIm1vdmwgJDB4ODAwMDAwMDEsICUlZWF4XG5cdCIKCQkiY3B1aWRcblx0 IgoJCSJ0ZXN0bCAkMHgwMDgwMDAwMCwgJSVlZHhcblx0IgkvKiBUZXN0IGZvciBNTVggKi8KCQki anogTm90U3VwcG9ydGVkNlxuXHQiCQkvKiBNTVggbm90IHN1cHBvcnRlZCAqLwoJCSJ0ZXN0bCAk MHg4MDAwMDAwMCwgJSVlZHhcblx0IgkvKiBUZXN0IGZvciAzRE5vdyEgKi8KCQkiam56IFRocmVl RE5vd1N1cHBvcnRlZFxuXHQiCgkJIm1vdmwgJDEsICUwXG5cblx0IgkJLyogTU1YIFN1cHBvcnRl ZCAqLwoJCSJqbXAgUmV0dXJuXG5cbiIKCQkiVGhyZWVETm93U3VwcG9ydGVkOlxuXHQiCgkJIm1v dmwgJDUsICUwXG5cblx0IgkJLyogM0ROb3chIGFuZCBNTVggU3VwcG9ydGVkICovCgkJImptcCBS ZXR1cm5cblx0IgoKCgkJLyogSW50ZWwgU2VjdGlvbiAqLwoJCSJJbnRlbDpcblx0IgoKCQkvKiBD aGVjayBmb3IgTU1YICovCgkJIk1NWHRlc3Q6XG5cdCIKCQkibW92bCAkMSwgJSVlYXhcblx0IgoJ CSJjcHVpZFxuXHQiCgkJInRlc3RsICQweDAwODAwMDAwLCAlJWVkeFxuXHQiCS8qIFRlc3QgZm9y IE1NWCAqLwoJCSJqeiBOb3RTdXBwb3J0ZWQ3XG5cdCIJCS8qIE1NWCBOb3Qgc3VwcG9ydGVkICov CgkJIm1vdmwgJDEsICUwXG5cblx0IgkJLyogTU1YIFN1cHBvcnRlZCAqLwoJCSJqbXAgUmV0dXJu XG5cdCIKCgkJLyogTm90aGluZyBzdXBwb3J0ZWQgKi8KCQkiXG5Ob3RTdXBwb3J0ZWQxOlxuXHQi CgkJIiNtb3ZsICQxMDEsICUwXG5cblx0IgoJCSJcbk5vdFN1cHBvcnRlZDI6XG5cdCIKCQkiI21v dmwgJDEwMiwgJTBcblxuXHQiCgkJIlxuTm90U3VwcG9ydGVkMzpcblx0IgoJCSIjbW92bCAkMTAz LCAlMFxuXG5cdCIKCQkiXG5Ob3RTdXBwb3J0ZWQ0OlxuXHQiCgkJIiNtb3ZsICQxMDQsICUwXG5c blx0IgoJCSJcbk5vdFN1cHBvcnRlZDU6XG5cdCIKCQkiI21vdmwgJDEwNSwgJTBcblxuXHQiCgkJ IlxuTm90U3VwcG9ydGVkNjpcblx0IgoJCSIjbW92bCAkMTA2LCAlMFxuXG5cdCIKCQkiXG5Ob3RT dXBwb3J0ZWQ3OlxuXHQiCgkJIiNtb3ZsICQxMDcsICUwXG5cblx0IgoJCSJtb3ZsICQwLCAlMFxu XG5cdCIKCgkJIlJldHVybjpcblx0IgoJCTogIj1hIiAocnZhbCkKCQk6IC8qIG5vIGlucHV0ICov CgkJOiAiZWJ4IiwgImVjeCIsICJlZHgiCgkpOwoKCS8qIFJldHVybiAqLwoJcmV0dXJuKHJ2YWwp Owp9CgovKglGdW5jdGlvbiB0byB0ZXN0IGlmIG1teCBpbnN0cnVjdGlvbnMgYXJlIHN1cHBvcnRl ZC4uLgoqLwppbmxpbmUgZXh0ZXJuIGludAptbXhfb2sodm9pZCkKewoJLyogUmV0dXJucyAxIGlm IE1NWCBpbnN0cnVjdGlvbnMgYXJlIHN1cHBvcnRlZCwgMCBvdGhlcndpc2UgKi8KCXJldHVybiAo IG1tX3N1cHBvcnQoKSAmIDB4MSApOwp9CgoKaW50IGNvbmZpZ3VyZSgpCnsKICAgaWYoIWNvbmZp Z3VyZWQpewogICAgICBjb25maWdWYWx1ZSA9IG1teF9vaygpOwogICAgICBjb25maWd1cmVkID0g MTsKICAgfQogICByZXR1cm4gY29uZmlnVmFsdWU7Cn0KCi0tLS0tLS0tLS0gZW5kIGNsb2JiZXIu YyAtLS0tLS0tLQotLS0tLS0tLS0tIGNsb2JiZXJ0ZXN0LmMgLS0tLS0tLS0KCmV4dGVybiBpbnQg Y29uZmlndXJlKHZvaWQpOwoKCmludAptYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAg aW50IGk7CgogICBpID0gY29uZmlndXJlKCk7CiAgIGkgPSBjb25maWd1cmUoKTsKICAgCiAgIHJl dHVybiBpOwp9Ci0tLS0tLS0tLS0gZW5kIGNsb2JiZXJ0ZXN0LmMgLS0tLS0tLS0KLS0tLS0tLS0t LSBNYWtlZmlsZSAtLS0tLS0tLS0tLQoKCmFsbDoJY2xvYmJlcmJhZCBjbG9iYmVyZ29vZAoKY2xv YmJlci5vOgljbG9iYmVyLmMKCWdjYyAtZyAtTzIgLWZQSUMgLURQSUMgLW8gY2xvYmJlci5vIC1j IGNsb2JiZXIuYwoKb2subzoJY2xvYmJlci5jCglnY2MgLWcgLU8yIC1vIG9rLm8gLWMgY2xvYmJl ci5jCgpsaWJjbG9iYmVyLnNvOgljbG9iYmVyLm8KCWdjYyAtZyAtTzIgLXNoYXJlZCAtZlBJQyAt byBsaWJjbG9iYmVyLnNvIGNsb2JiZXIubwoKCmNsb2JiZXJ0ZXN0Lm86IGNsb2JiZXJ0ZXN0LmMK CWdjYyAtZyAtTzIgLW8gY2xvYmJlcnRlc3QubyAtYyBjbG9iYmVydGVzdC5jCgpjbG9iYmVyYmFk OgljbG9iYmVydGVzdC5vIGxpYmNsb2JiZXIuc28KCWdjYyAtZyAtTzIgLUwgLiAtWGxpbmtlciAt cnBhdGggLVhsaW5rZXIgLiAtbGNsb2JiZXIgLW8gY2xvYmJlcmJhZCBjbG9iYmVydGVzdC5vCgpj bG9iYmVyZ29vZDoJY2xvYmJlcnRlc3QubyBvay5vCglnY2MgLWcgLU8yIC1vIGNsb2JiZXJnb29k IGNsb2JiZXJ0ZXN0Lm8gb2subwoKCi5QSE9OWTogY2xlYW4KCmNsZWFuOgoJcm0gLWYgKi5vICou c28gY29yZSBjb3JlLiogY2xvYmJlcmJhZCBjbG9iYmVyZ29vZAoKCi0tLS0tLS0tLS0gZW5kIE1h a2VmaWxlIC0tLS0tLS0K
next reply other threads:[~2001-10-26 10:56 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2001-10-26 10:56 ddaney [this message] 2002-04-23 1:05 rth
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20011026175314.4736.qmail@sourceware.cygnus.com \ --to=ddaney@avtrex.com \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).