From mboxrd@z Thu Jan 1 00:00:00 1970 From: eskil@e.kth.se To: gcc-gnats@gcc.gnu.org Cc: mpkg@e.kth.se Subject: c++/2242: C++ programs built with gcc won't find libstdc++.so Date: Sun, 01 Apr 2001 00:00:00 -0000 Message-id: <20010309114947.8449.qmail@sourceware.cygnus.com> X-SW-Source: 2001-q1/msg02145.html List-Id: >Number: 2242 >Category: c++ >Synopsis: C++ programs built with gcc won't find libstdc++.so >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Fri Mar 09 03:56:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: Johan Fredriksson >Release: gcc version 2.95.2 >Organization: >Environment: Digital Unix 4.0 on Alphas >Description: A C++ program compiled and linked with g++ won't find libstdc++.so if gcc is installed in a location other than /usr or /usr/local The problem can be solved using the flag -Wl,-rpath,/usr/foo/lib but I think gcc should do this itself. I have made a quick-and-dirty patch wich is included below >How-To-Repeat: Not necessery >Fix: Apply the patch >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="patch-rpath" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch-rpath" LS0tIGdjYy9nY2MuYy5vbGQJVGh1IE1hciAgOCAxMToxNDozMiAyMDAxCisrKyBnY2MvZ2NjLmMJ VGh1IE1hciAgOCAxMzo0NTozMiAyMDAxCkBAIC0yNTc0LDEwICsyNTc0LDEyIEBACiAgIGNvbnN0 IGNoYXIgKnRlbXA7CiAgIGNoYXIgKnRlbXAxOwogICBjaGFyICpzcGVjX2xhbmcgPSAwOworICBj aGFyICpycGF0aCA9IE5VTEw7CiAgIGludCBsYXN0X2xhbmd1YWdlX25faW5maWxlczsKICAgaW50 IGhhdmVfYyA9IDA7CiAgIGludCBoYXZlX28gPSAwOwogICBpbnQgbGFuZ19uX2luZmlsZXMgPSAw OworICBpbnQgbmV4dF9pc19ycGF0aCA9IDA7CiAKICAgR0VUX0VOVl9QQVRIX0xJU1QgKGdjY19l eGVjX3ByZWZpeCwgIkdDQ19FWEVDX1BSRUZJWCIpOwogCkBAIC0yODE4LDYgKzI4MjAsOCBAQAog ICAgICAgZWxzZSBpZiAoc3RybmNtcCAoYXJndltpXSwgIi1XbCwiLCA0KSA9PSAwKQogCXsKIAkg IGludCBqOworCSAgaWYoc3Ryc3RyKGFyZ3ZbaV0sICIsLXJwYXRoLCIpKQorCSAgICBuZXh0X2lz X3JwYXRoID0gMTsKIAkgIC8qIFNwbGl0IHRoZSBhcmd1bWVudCBhdCBjb21tYXMuICAqLwogCSAg Zm9yIChqID0gMzsgYXJndltpXVtqXTsgaisrKQogCSAgICBuX2luZmlsZXMgKz0gKGFyZ3ZbaV1b al0gPT0gJywnKTsKQEAgLTMwNDcsNiArMzA1MSwxMSBAQAogCX0KICAgICB9CiAKKyAgLyogTWFr ZSBzcGFjZSBmb3IgLXJwYXRoIGFyZ3VtZW50ICovCisgIGlmKCFuZXh0X2lzX3JwYXRoICYmICFo YXZlX2MpCisgICAgbl9pbmZpbGVzICs9IDI7CisgIG5leHRfaXNfcnBhdGggPSAwOworCiAgIGlm IChoYXZlX2MgJiYgaGF2ZV9vICYmIGxhbmdfbl9pbmZpbGVzID4gMSkKICAgICBmYXRhbCAoImNh bm5vdCBzcGVjaWZ5IC1vIHdpdGggLWMgb3IgLVMgYW5kIG11bHRpcGxlIGNvbXBpbGF0aW9ucyIp OwogCkBAIC0zMTgyLDE2ICszMTkxLDUwIEBACiAJICAvKiBTcGxpdCB0aGUgYXJndW1lbnQgYXQg Y29tbWFzLiAgKi8KIAkgIHByZXYgPSA0OwogCSAgZm9yIChqID0gNDsgYXJndltpXVtqXTsgaisr KQotCSAgICBpZiAoYXJndltpXVtqXSA9PSAnLCcpCi0JICAgICAgewotCQlpbmZpbGVzW25faW5m aWxlc10ubGFuZ3VhZ2UgPSAiKiI7Ci0JCWluZmlsZXNbbl9pbmZpbGVzKytdLm5hbWUKLQkJICA9 IHNhdmVfc3RyaW5nIChhcmd2W2ldICsgcHJldiwgaiAtIHByZXYpOwotCQlwcmV2ID0gaiArIDE7 CisJICAgIGlmIChhcmd2W2ldW2pdID09ICcsJykgeworCQlpZihuZXh0X2lzX3JwYXRoKSB7CisJ CSAgICAvKiBBcHBlbmQgb3VyIG93biBycGF0aCAqLworCQkgICAgcnBhdGggPSBtYWxsb2Moc3Ry bGVuKGFyZ3ZbaV0pICsKKwkJCQkgICBzdHJsZW4oU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWCkp OworCQkgICAgcnBhdGggPSBzYXZlX3N0cmluZyAoYXJndltpXSArIHByZXYsIGogLSBwcmV2KTsK KwkJICAgIHJwYXRoW2ogLSBwcmV2XSA9ICc6JzsKKwkJICAgIHN0cmNweShycGF0aCArIGogLSBw cmV2ICsgMSwgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWCk7CisJCSAgICBpZihycGF0aFtzdHJs ZW4ocnBhdGgpIC0gMV0gPT0gJy8nKQorCQkJLyogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoICovCisJ CQlycGF0aFtzdHJsZW4ocnBhdGgpIC0gMV0gPSAnXDAnOworCQkgICAgaW5maWxlc1tuX2luZmls ZXNdLmxhbmd1YWdlID0gImMrKyI7CisJCSAgICBpbmZpbGVzW25faW5maWxlcysrXS5uYW1lID0g cnBhdGg7CisJCSAgICBuZXh0X2lzX3JwYXRoID0gMDsKKwkJfSBlbHNlIHsKKwkJICAgIGluZmls ZXNbbl9pbmZpbGVzXS5sYW5ndWFnZSA9ICIqIjsKKwkJICAgIGluZmlsZXNbbl9pbmZpbGVzXS5u YW1lCisJCQk9IHNhdmVfc3RyaW5nIChhcmd2W2ldICsgcHJldiwgaiAtIHByZXYpOworCQkgICAg aWYoIXN0cmNtcChpbmZpbGVzW25faW5maWxlc10ubmFtZSwgIi1ycGF0aCIpKQorCQkJbmV4dF9p c19ycGF0aCA9IDE7CisJCSAgICBlbHNlCisJCQluZXh0X2lzX3JwYXRoID0gMDsKKwkJICAgIG5f aW5maWxlcysrOworCQkgICAgcHJldiA9IGogKyAxOworCQl9CiAJICAgICAgfQogCSAgLyogUmVj b3JkIHRoZSBwYXJ0IGFmdGVyIHRoZSBsYXN0IGNvbW1hLiAgKi8KLQkgIGluZmlsZXNbbl9pbmZp bGVzXS5sYW5ndWFnZSA9ICIqIjsKLQkgIGluZmlsZXNbbl9pbmZpbGVzKytdLm5hbWUgPSBhcmd2 W2ldICsgcHJldjsKKwkgIGlmKG5leHRfaXNfcnBhdGgpIHsKKwkgICAgICBycGF0aCA9IG1hbGxv YyhzdHJsZW4oYXJndltpXSkgKworCQkJICAgICBzdHJsZW4oU1RBTkRBUkRfU1RBUlRGSUxFX1BS RUZJWCkpOworCSAgICAgIHN0cmNweShycGF0aCwgYXJndltpXSArIHByZXYpOworCSAgICAgIHJw YXRoW3N0cmxlbihhcmd2W2ldKSAtIHByZXZdID0gJzonOworCSAgICAgIHN0cmNweShycGF0aCAr IHN0cmxlbihhcmd2W2ldKSAtIHByZXYgKyAxLAorCQkgICAgIFNUQU5EQVJEX1NUQVJURklMRV9Q UkVGSVgpOworCSAgICAgIGlmKHJwYXRoW3N0cmxlbihycGF0aCkgLSAxXSA9PSAnLycpCisJCSAg LyogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoICovCisJCSAgcnBhdGhbc3RybGVuKHJwYXRoKSAtIDFd ID0gJ1wwJzsKKwkgICAgICBpbmZpbGVzW25faW5maWxlc10ubGFuZ3VhZ2UgPSAiKiI7CisJICAg ICAgaW5maWxlc1tuX2luZmlsZXMrK10ubmFtZSA9IHJwYXRoOworCSAgICAgIG5leHRfaXNfcnBh dGggPSAwOworCSAgfSBlbHNlIHsKKwkgICAgICBpbmZpbGVzW25faW5maWxlc10ubGFuZ3VhZ2Ug PSAiKiI7CisJICAgICAgaW5maWxlc1tuX2luZmlsZXMrK10ubmFtZSA9IGFyZ3ZbaV0gKyBwcmV2 OworCSAgfQogCX0KICAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJndltpXSwgIi1YbGlua2VyIikg PT0gMCkKIAl7CkBAIC0zMzAyLDYgKzMzNDUsMTkgQEAKIAkgICAgfQogCX0KICAgICB9CisKKyAg aWYocnBhdGggPT0gTlVMTCAmJiAhaGF2ZV9jKSB7CisgICAgLyogTm8gcnBhdGggd2FzIGdpdmVu IHRvIHRoZSBsaW5rZXIsIGdpdmUgb3VyIG93biAqLworICAgIGluZmlsZXNbbl9pbmZpbGVzXS5s YW5ndWFnZSA9ICIqIjsKKyAgICBpbmZpbGVzW25faW5maWxlcysrXS5uYW1lID0gIi1ycGF0aCI7 CisgICAgaW5maWxlc1tuX2luZmlsZXNdLmxhbmd1YWdlID0gIioiOworICAgIHJwYXRoID0gbWFs bG9jKHN0cmxlbihTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYKSArIDEpOworICAgIHN0cmNweShy cGF0aCwgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWCk7CisgICAgaWYocnBhdGhbc3RybGVuKHJw YXRoKSAtIDFdID09ICcvJykKKwkvKiBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggKi8KKwlycGF0aFtz dHJsZW4ocnBhdGgpIC0gMV0gPSAnXDAnOworICAgIGluZmlsZXNbbl9pbmZpbGVzKytdLm5hbWUg PSBycGF0aDsKKyAgfQogCiAgIGlmIChuX2luZmlsZXMgPT0gbGFzdF9sYW5ndWFnZV9uX2luZmls ZXMgJiYgc3BlY19sYW5nICE9IDApCiAgICAgZXJyb3IgKCJXYXJuaW5nOiBgLXggJXMnIGFmdGVy IGxhc3QgaW5wdXQgZmlsZSBoYXMgbm8gZWZmZWN0Iiwgc3BlY19sYW5nKTsK