From patchwork Fri Jul 1 08:18:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RGltaXRyaWplIE1pbG/FoWV2acSH?= X-Patchwork-Id: 55624 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D20043854810 for ; Fri, 1 Jul 2022 08:19:19 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130100.outbound.protection.outlook.com [40.107.13.100]) by sourceware.org (Postfix) with ESMTPS id 32073385801D for ; Fri, 1 Jul 2022 08:18:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 32073385801D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=Syrmia.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Syrmia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lZLTDf8M1MPVvOQqFGkImfOVjtM1hRfjn7kXj0ZCdiv0AvcmGJ+6vZtxlYc+fYRWgDyjvyY/4+0ziifqQcWYwXg9RL/Ctb1EdNr00+9p3opV/2vpXrsugWusL89xY55i+sCwiXjbLk+9zo95cIjyrDLSJKrV13bvwnyja4RRGWlswpL2m75XjFPUIKbuE8PwjyZrRq46wTCHwPBGbNpSp53yrVJFXZmFI1p/GxBNEXpR2y9TGZblWQ+4bh63fGdIz9/fsV1KysnNFlSmMMfdWHqKO9gvq/5VcfpWZ/XT2fRygY+RadJuIR5S/asCZdn4rDCsoPdz9rCO123MYfGikg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ridYmSZxs1+ovondj4DfNJlugosA6uW+usgJ7KGUc4w=; b=Eo36JAMbggXQU8INTub/C2BVdS1s9R9U8XSZLTldpwvUn2i65GegxhUkFEnISpd4vnBCeBpjF3DX9jAzuRPkou6i1ZATd9xdjtebRmpDklL7oghEYH/k49hszbMI/Y3B9ZSU2TT3MmB74j7va2rHQ5BeJ8RoofrerWyFqSBrQox5x+GFXl+jYdRB2HIs77NgkDXGyXQD10+/6A68PtC60ElABVXfxqbUKBi5qo16yT3p82wFuTO9OgPkJw9kfb5RkbcSoOheJfT8C2R/TutANv/A5JDIDLrfHpS9W/lmv9uHGCWWOJ8+BCbMdKdMHOAVzzf5i1d1Rfm6Gc8O9csalw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=syrmia.com; dmarc=pass action=none header.from=syrmia.com; dkim=pass header.d=syrmia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=syrmia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ridYmSZxs1+ovondj4DfNJlugosA6uW+usgJ7KGUc4w=; b=mw9niSd/x2xzNzkA5Z2/4n9qdps/CBY6ckSEXgHh/fc8YQiWmjStFR0sMhHqIo0iHcXk+I9e1GbtgtGpOhOpVnWu7kZc0gI5EgwYBW989gwRMswSOfjQe9Um/sc24k7y4AdACfp7fC6iCQCrlwinB9mdLzAD+Uww+uXTHcuN7wA= Received: from AM0PR03MB4882.eurprd03.prod.outlook.com (2603:10a6:208:fb::17) by VE1PR03MB6111.eurprd03.prod.outlook.com (2603:10a6:803:10b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.18; Fri, 1 Jul 2022 08:18:52 +0000 Received: from AM0PR03MB4882.eurprd03.prod.outlook.com ([fe80::3926:6805:c765:27ec]) by AM0PR03MB4882.eurprd03.prod.outlook.com ([fe80::3926:6805:c765:27ec%7]) with mapi id 15.20.5395.015; Fri, 1 Jul 2022 08:18:52 +0000 From: Dimitrije Milosevic To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] libsanitizer: Fix linkage errors for cross toolchains Thread-Topic: [PATCH] libsanitizer: Fix linkage errors for cross toolchains Thread-Index: AQHYh79Dn2gUU+4fu0GIGPVPq2iFBw== Date: Fri, 1 Jul 2022 08:18:52 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: 73d1a8dc-23be-d4c9-32b7-f381541da709 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Syrmia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bbb563e2-4619-414c-34ad-08da5b3a554b x-ms-traffictypediagnostic: VE1PR03MB6111:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4ojFXWEgvPP6Z9VSMn1BYMYiaI1gBk7iu0x7wGmfiZo1rv4ILV846JvHertEHzUc6Vk9cgIW3p2IQazdqLaPHRGR5ooT0EexhJ+98/iUJZ943PxYo3vPD5BGNyRFQpcz3lbJ6uTU6RTrWDRsDtp7e5Rv68ymjYByUUd47zxGBE1g2Jl6Kf6Ycttuv58wAW5nn/EaIzNjIothy2XJ2RtXugj+Gqs1NNkRcCbYwvhksgsLTOKEncpnttyCalyPaoAT3+gLt8RpeKvvjEX10dnv0RfkiEyd6VYvTCLTvJrwxzSQN55Zj10SC6QWuyywC42zeKln+rVJDLpUS3h8EsN8k1G8HeFRegkBpHwsgfCSIylvF9Hb4SVzd9vLqLnMJHweAZ9ExC3WPKKZ1SsSGfHrFXNrJ2OU34GMYcHsUXwI4TO5B2OCSy5M2/qNSDQbl5EatQmHHS/OzzBIaXp1x01CqGfDjm4gMXBCY1Dggr30IcPq6rVGlW2zmLbZvT1l2H5FCs2FSfOHxrjZlAKpE5pym733l6uPb6NqOQoMUqPYfbnOQM0HgdR1LSXmPE7V3kO0jlUeR/mpWUpdHBI9sPj7wI1bU07FmqwKzf8qdIjz/nnsISIKFXLs8JPGx2fTUq8kBJVGhIOT0g/oQMwkR5W32QGUJ/P3OvCjJ018UAV3YzGQq6Nep4PPo6S/midUNpDJJW6o2qwMESGq2unId4KDYQzlqyHX6bj/QjSc/9DtSIC/Mam8MEp554RnJN+FkDrM9ohrC4E0PjyrBmRqbIr/kDqhnZKyqfExX4vN4QlMwrO6bAwgQtFw5UoEjFeixGfr5kSWSSNRoRVi6jELb8dOwg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR03MB4882.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(396003)(366004)(136003)(376002)(346002)(39830400003)(38070700005)(52536014)(64756008)(478600001)(33656002)(66446008)(4326008)(66556008)(316002)(30864003)(19627405001)(71200400001)(76116006)(66946007)(91956017)(8676002)(66476007)(38100700002)(26005)(966005)(166002)(9686003)(41300700001)(55016003)(5660300002)(8936002)(2906002)(86362001)(7696005)(6506007)(83380400001)(122000001)(6916009)(54906003)(186003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?IrYUDBtyQ9+OOlGiCnWehQz?= =?iso-8859-1?q?Ny4rD/mYcZXGvySd1lR+QDTJMdIvr4a7bW0eLELy9u7yBCz+5SsHCTlgZiSp?= =?iso-8859-1?q?7sZ4T3jd0LgDRmtASx5XKSrczJY0kFCbexfKy6ZE6nbN8fSJFwYaLJJecl2P?= =?iso-8859-1?q?j3d6qQOvGDCAnMwHFhNm4Yxu/EHSdd6P+vogz4kVy+2afRkqwFy+gvgSCW0C?= =?iso-8859-1?q?rknf+M7gsDiGThtvATMx6zU9QTWkNJCYFkBSsmAKXW9y6SKkmwI6I9WBnI3f?= =?iso-8859-1?q?VUQ8iGGSSy0aixTb7mFooxbshH96oToKxmv71h63yqdrYVYZYvOjJgENni2H?= =?iso-8859-1?q?GOWytWrgqmODl3305qTBkoptORzJ5Pc8fXosDzP91dEKvWSr5uyfb+UMzf5G?= =?iso-8859-1?q?dgu22E8XlJFWlSf3tquXl92Dll43goYDS/uSUfVNaNM9iLea30P7Ln6N8LBL?= =?iso-8859-1?q?UFxX7NjRwr4AVwuoIZuylD3+ZLqNjimX7iC/MpugNazqxFTePTIwuwgNQHB7?= =?iso-8859-1?q?Sh6tggs6btLcfgZzXVnZDtC2Vv5QH2ONR8k2iE8quvdvlklQUBfD6EezbooX?= =?iso-8859-1?q?BBLektnLVxF2aXKzKIpj3RezgdZyZDQ4jP1jJEb0IMZssGwCWjGuHq4YnxgV?= =?iso-8859-1?q?3fo2FnX0bEDV9VfdIP0mdaclyyosZ8oavlzwc8Wd6Wt9TL8RhB0+lfAf9iFb?= =?iso-8859-1?q?XM/I5A4/zPpk6av7BSIwwg9PL0W5bWDfwFKiCrUrtoB/dVPFKrZhlqnboryK?= =?iso-8859-1?q?9opARjiPRTz5DWENKZLxA0OesfzvP90qHWlnL7E4867j8ReZpccg1g4APl+o?= =?iso-8859-1?q?rBYVziTRjJvgY7zYIGolxWs/0+0tj65EQPzI6Lnn78fGXGdeSi4DAjfmIFrA?= =?iso-8859-1?q?QOC/sEr5U1waOj1O0wTTJSgXpXs/0dQsUUS8LfUyK8vtsAP8TCjoJc8tqS9K?= =?iso-8859-1?q?6NNBX+WX+UIjUrXxPF/g0nPX1qCSfdQHTNBOh104eBy5iWlA2paNKIlM5Y3q?= =?iso-8859-1?q?XLJS7bYk+tBw/5FHLj/Q/TNTuG6yVHJD8UaiSGfFUAAO1CMNT0M9bTWowEWX?= =?iso-8859-1?q?2ch6GepVKvoaAB5w7kSZx/1G+P7z8jV7D47PbpqWbVOjVDTvDc1agpa8YY4Z?= =?iso-8859-1?q?pqkd8JYLa0/uVBXcQxqrbbzltjigeb8j9+qAcXSP6PJ3FGOstqLfNqFShiaH?= =?iso-8859-1?q?cfVsFMsU3ZMjYFtweDzVBi7B1SqBD6K0Pke00sTgo7dMlYSfh2DeEpgMGNGR?= =?iso-8859-1?q?RP7feyW/kP+06wLyrDYbhHHz8pINPH8MNlx3n1yPVZcNsPeOi+1dH8m7faE1?= =?iso-8859-1?q?W5oKQr//lH918PiZuKEwrxLyvOQUtk8i0eSXOnVH0YWjywCpPi3O+L+dqDsL?= =?iso-8859-1?q?OluphOcXCOHv8EZKEJuJtpDuHRRbt9XSVkGmDFqXqChJ/IaS7ekbumkVwKue?= =?iso-8859-1?q?KJBGZuW1YBWcfyHOsnoHOqypQU4PiamfScYBI810OISbQ205AIyOxca6dY8L?= =?iso-8859-1?q?vlsd3dMpmWocawaWKcqMCZaXJN/Z/7fydlHan7SZXsFNsl6TvY2pCQwj7LY7?= =?iso-8859-1?q?VNgrNWiVA0esxL0LEqdMjyFs8XklprSDEpUAzFQMaucO2CMP/BK2oMqhx3bm?= =?iso-8859-1?q?HrkbkwMtmXDKSLaOG1qz5ItUz6FZk6GvPqXK6eg=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: syrmia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR03MB4882.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbb563e2-4619-414c-34ad-08da5b3a554b X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2022 08:18:52.3256 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 19214a73-c1ab-4e19-8f59-14bdcb09a66e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /w6AGdIZk4VH09XnV9J4zPt4OZClffiF1cI1cEpATvPDsRF9tX7UTgZIM1atkmI3Yw1hoTvp/Agnz+WIj3B+/e6fKdCxIXE/B8GLTT6FwRY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR03MB6111 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Djordje Todorovic Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" When we use cross toolchains, in which the GCC libraries are not installed within a designated system root, the shared sanitizer libraries link against libstdc++.so* within the same libraries. This directory, however, is not in RPATH, so attempting to build a dynamically linked application with -fsanitize=... gives a linkage error. More information can be found here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69839. gcc/ChangeLog: * gcc.c (LIBSAN_RPATH): New macro. (LIBASAN_SPEC): Add LIBSAN_RPATH. (LIBUBSAN_SPEC): Likewise. (LIBTSAN_SPEC): Likewise. (LIBLSAN_SPEC): Likewise. libsanitizer/ChangeLog: * configure.ac (link_libsan_rpath): New config variable. * libsanitizer.spec.in (link_libsan_rpath): New spec. * configure (link_libsan_rpath): New config variable. * Makefile.in (link_libsan_rpath): Define new Makefile variable. * asan/Makefile.in: Likewise. * interception/Makefile.in: Likewise. * libbacktrace/Makefile.in: Likewise. * lsan/Makefile.in: Likewise. * sanitizer_common/Makefile.in: Likewise. * tsan/Makefile.in: Likewise. * ubsan/Makefile.in: Likewise. * hwasan/Makefile.in: Likewise. --- gcc/gcc.cc | 20 ++++++++++++-------- libsanitizer/Makefile.in | 1 + libsanitizer/asan/Makefile.in | 1 + libsanitizer/configure | 10 ++++++++-- libsanitizer/configure.ac | 7 +++++++ libsanitizer/hwasan/Makefile.in | 1 + libsanitizer/interception/Makefile.in | 1 + libsanitizer/libbacktrace/Makefile.in | 1 + libsanitizer/libsanitizer.spec.in | 2 ++ libsanitizer/lsan/Makefile.in | 1 + libsanitizer/sanitizer_common/Makefile.in | 1 + libsanitizer/tsan/Makefile.in | 1 + libsanitizer/ubsan/Makefile.in | 1 + 13 files changed, 38 insertions(+), 10 deletions(-) --- diff --git a/gcc/gcc.cc b/gcc/gcc.cc index 299e09c4f54..37ff75f1ad5 100644 --- a/gcc/gcc.cc +++ b/gcc/gcc.cc @@ -738,17 +738,21 @@ proper position among the other output files. */ #define STACK_SPLIT_SPEC " %{fsplit-stack: --wrap=pthread_create}" #endif +#ifndef LIBSAN_RPATH +#define LIBSAN_RPATH " %:include(libsanitizer.spec)%(link_libsan_rpath)" +#endif + #ifndef LIBASAN_SPEC #define STATIC_LIBASAN_LIBS \ " %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}" #ifdef LIBASAN_EARLY_SPEC -#define LIBASAN_SPEC STATIC_LIBASAN_LIBS +#define LIBASAN_SPEC STATIC_LIBASAN_LIBS LIBSAN_RPATH #elif defined(HAVE_LD_STATIC_DYNAMIC) #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \ "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \ STATIC_LIBASAN_LIBS #else -#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS LIBSAN_RPATH #endif #endif @@ -778,13 +782,13 @@ proper position among the other output files. */ #define STATIC_LIBTSAN_LIBS \ " %{static-libtsan|static:%:include(libsanitizer.spec)%(link_libtsan)}" #ifdef LIBTSAN_EARLY_SPEC -#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS +#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS LIBSAN_RPATH #elif defined(HAVE_LD_STATIC_DYNAMIC) #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \ "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ STATIC_LIBTSAN_LIBS #else -#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS LIBSAN_RPATH #endif #endif @@ -793,7 +797,7 @@ proper position among the other output files. */ #endif #ifndef LIBLSAN_SPEC -#define STATIC_LIBLSAN_LIBS \ +#define STATIC_LIBLSAN_LIBS LIBSAN_RPATH \ " %{static-liblsan|static:%:include(libsanitizer.spec)%(link_liblsan)}" #ifdef LIBLSAN_EARLY_SPEC #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS @@ -802,7 +806,7 @@ proper position among the other output files. */ "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ STATIC_LIBLSAN_LIBS #else -#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS LIBSAN_RPATH #endif #endif @@ -816,9 +820,9 @@ proper position among the other output files. */ #ifdef HAVE_LD_STATIC_DYNAMIC #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \ "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ - STATIC_LIBUBSAN_LIBS + STATIC_LIBUBSAN_LIBS LIBSAN_RPATH #else -#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS LIBSAN_RPATH #endif #endif diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in index 65e7f2e9553..ef71407a512 100644 --- a/libsanitizer/Makefile.in +++ b/libsanitizer/Makefile.in @@ -333,6 +333,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/asan/Makefile.in b/libsanitizer/asan/Makefile.in index 7833a9a4c3f..143dafa450d 100644 --- a/libsanitizer/asan/Makefile.in +++ b/libsanitizer/asan/Makefile.in @@ -387,6 +387,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/configure b/libsanitizer/configure index 771b135573a..4408167929f 100755 --- a/libsanitizer/configure +++ b/libsanitizer/configure @@ -660,6 +660,7 @@ link_libubsan link_libtsan link_libhwasan link_libasan +link_libsan_rpath HWASAN_SUPPORTED_FALSE HWASAN_SUPPORTED_TRUE LSAN_SUPPORTED_FALSE @@ -12359,7 +12360,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12362 "configure" +#line 12363 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12465,7 +12466,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12468 "configure" +#line 12469 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15935,6 +15936,11 @@ if test "x$ac_cv_lib_dl_dlsym" = xyes; then : link_sanitizer_common="-ldl $link_sanitizer_common" fi +lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + link_libsan_rpath="-rpath-link=%R/../${target_alias}/lib/$lt_multi_os_dir" +fi # Set up the set of additional libraries that we need to link against for libasan. link_libasan=$link_sanitizer_common diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac index 7f1ef3979c4..4c7c3814cf1 100644 --- a/libsanitizer/configure.ac +++ b/libsanitizer/configure.ac @@ -118,6 +118,13 @@ AC_CHECK_LIB(rt, shm_open, AC_CHECK_LIB(dl, dlsym, [link_sanitizer_common="-ldl $link_sanitizer_common"]) +lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + link_libsan_rpath="-rpath-link=%R/../../${target_alias}/lib/$lt_multi_os_dir" +fi +AC_SUBST(link_libsan_rpath) + # Set up the set of additional libraries that we need to link against for libasan. link_libasan=$link_sanitizer_common AC_SUBST(link_libasan) diff --git a/libsanitizer/hwasan/Makefile.in b/libsanitizer/hwasan/Makefile.in index b9b942003a3..cda1c944542 100644 --- a/libsanitizer/hwasan/Makefile.in +++ b/libsanitizer/hwasan/Makefile.in @@ -376,6 +376,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/interception/Makefile.in b/libsanitizer/interception/Makefile.in index 85dd386de47..a10851cd157 100644 --- a/libsanitizer/interception/Makefile.in +++ b/libsanitizer/interception/Makefile.in @@ -305,6 +305,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/libbacktrace/Makefile.in b/libsanitizer/libbacktrace/Makefile.in index c0243fa4aab..4c75070a6e3 100644 --- a/libsanitizer/libbacktrace/Makefile.in +++ b/libsanitizer/libbacktrace/Makefile.in @@ -355,6 +355,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/libsanitizer.spec.in b/libsanitizer/libsanitizer.spec.in index 70a33574d7b..1df604335d5 100644 --- a/libsanitizer/libsanitizer.spec.in +++ b/libsanitizer/libsanitizer.spec.in @@ -11,3 +11,5 @@ *link_liblsan: @link_liblsan@ +*link_libsan_rpath: @link_libsan_rpath@ + diff --git a/libsanitizer/lsan/Makefile.in b/libsanitizer/lsan/Makefile.in index d8fd4ee9557..8f459b255d7 100644 --- a/libsanitizer/lsan/Makefile.in +++ b/libsanitizer/lsan/Makefile.in @@ -350,6 +350,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/sanitizer_common/Makefile.in b/libsanitizer/sanitizer_common/Makefile.in index 07047bd4b17..e916a803786 100644 --- a/libsanitizer/sanitizer_common/Makefile.in +++ b/libsanitizer/sanitizer_common/Makefile.in @@ -342,6 +342,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/tsan/Makefile.in b/libsanitizer/tsan/Makefile.in index 36498832bb8..ab8db13a268 100644 --- a/libsanitizer/tsan/Makefile.in +++ b/libsanitizer/tsan/Makefile.in @@ -379,6 +379,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@ diff --git a/libsanitizer/ubsan/Makefile.in b/libsanitizer/ubsan/Makefile.in index 92a8e387fd7..5fc063fe9ee 100644 --- a/libsanitizer/ubsan/Makefile.in +++ b/libsanitizer/ubsan/Makefile.in @@ -344,6 +344,7 @@ libexecdir = @libexecdir@ link_libasan = @link_libasan@ link_libhwasan = @link_libhwasan@ link_liblsan = @link_liblsan@ +link_libsan_rpath = @link_libsan_rpath@ link_libtsan = @link_libtsan@ link_libubsan = @link_libubsan@ localedir = @localedir@