From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60133.outbound.protection.outlook.com [40.107.6.133]) by sourceware.org (Postfix) with ESMTPS id 057133839C62; Fri, 1 Jul 2022 12:40:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 057133839C62 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=QeMgi81Ae4U2p86JN0kFVC1UqgexHtivxDbH8czzlAH26NeMi/IEEsMHnCD9Q4Re7GT8RKQWsmhifG5ruzpEtjbngP2qF+JgkdGIPuVdyIulPcOolCBkTOgHPT4MgDUHqf9YLlUDIoeHUp+D7GN6umC/URVSmvQzrG+OhaW7ikT10OI1SRfPe6NZRWU1FVZyZX28Z6hvYEnN5NwXRWFzJXMW6cGJRHbhAfypVUlXBs8M8ahno+W/afZoliDUoEUrxItVo8sGI39mYVu98MhqJ9opRF2IGdQQF2ShWrTlgVstBAP+fZKJgDsoLTWiXYYBIgwSnFHvvoyIHg2Y+GChJg== 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=59H2k2O0UgMok2MR/2lHvA9VtbNGqAzDSXWKQgo8tBY=; b=AgQWjRHTcgbLXvPRIpATpwh+gITh+m3Y1G3KexamYZENvuze1hT2bMK/zokw6Kq7oDTUZxc04NI4pGxIdISBFkQQgB2EV0f3JzSWHP0Rt1VdNVqjNHAwzJVnBsQBaOw2B7xAkjFtv+6DiVYupjF0/HLUp/9TB4u0rX3ep5KvkvKDub9+e/2bi/2ppSwGgTbVV6rKDpiCEX/h73Gf9ABQcHpvb3vKQreg9VwGVwyUOyl+WZEQ6An2nl0NlZ+GTglIJIM53Gm2jjpDwFsgdb/YDBrX8b87E7egnnuMUab+N3iPi7/CDLkZgyRc4mYN4eeyzn5gIidYlIUwm1iDfox1kw== 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=59H2k2O0UgMok2MR/2lHvA9VtbNGqAzDSXWKQgo8tBY=; b=AAXq/MYOjDW5jcVYnDCFxs4qbCu+q6I0xcDZqiDIJX3aIcKsSzjdhEc1bj4w27mgtYUuj9pHJbsN+SAV+BOzLcCoLKS4kAjt10sYC3Wge8bHwFv7mnmRHOSH9HBUCqqQI3wKRtnb7RipP0JIryC9Cg7G1RfOV0pXvApNgo8R2wU= Received: from AM0PR03MB4882.eurprd03.prod.outlook.com (2603:10a6:208:fb::17) by AS4PR03MB8577.eurprd03.prod.outlook.com (2603:10a6:20b:584::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Fri, 1 Jul 2022 12:40:54 +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 12:40:54 +0000 From: Dimitrije Milosevic To: "gcc-patches@gcc.gnu.org" CC: Djordje Todorovic , "xry111@xry111.site" , "jakub@gcc.gnu.org" Subject: [PATCH] libsanitizer: Fix linkage errors for cross toolchains Thread-Topic: [PATCH] libsanitizer: Fix linkage errors for cross toolchains Thread-Index: AQHYjUY07VdvZBYx+E+BoWlZKEKzog== Date: Fri, 1 Jul 2022 12:40:54 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: 8d2e46d8-d60e-6cc7-0eaa-2e4777008f5e 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: 82f0322f-c7b1-43f7-d89c-08da5b5ef0a7 x-ms-traffictypediagnostic: AS4PR03MB8577:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /bXSgVUalijUvep5l1ItkOynZT0aTNx8Vcjzw/lGeIHPC7z2lkj4VjDCT+H+Ma9wlvoTsIicIyS9uMdaEPwYtTe+FWuso7ksykyFKriyhg66ASgZ8VSQDgO7CYWvSEBVc7d7bUZjLL7EG4txs68lq7KbiNDmbYyIyw/U+j+Yn47whu+dmJH1kPdFIoYjGDGtZ4EEgl8dL8F4KCEbHTXoPEo/W8W2TtU4F46sL6NwTa/eU7N8iWNnwJKM4X++DY+xDr5tnKpa1SLmQsjpVQh+z5k7BYcWA4M75NUoeWaIuc1dvQKsJo6zRsUXyfGYQHib33ZjyCKz+YlBSbo9TN9tXD4H+h/GKIPU2jziM1aUYep/PhztaYHxeGQo8NrIYGOe3gY9iBQ8OA5I3DKakLWXxvCIMlAQ2VvYPpjEiY+2L2IRxPMFCbcGv88KdfesN/od0za0wMSG5pclnNXaEGs7ac4vmqCIbGk/DFVZmvNyy2LBFmddH8f+CzdQtBFAhT4UenIG3blhRIxOMynqyNgSU83lgORMCEW2eu/OefAGuV6UKtjd7HrS7lgmbNrQUfPAiv30OvNnTpmUu429eNGnNGv+fjYdTQnAy0BW2F7mvVucNIn1VFBTRE3ZjJVbfyVkNg02zkakTb5alnb6fYKu61wyUz2ZEMOakTr9eSesyXuZCJFQlTjXgTHI6ryP9zxE2J4TYiN/JXG7uojYuHjwYDy8Tt7zsx6av+NNIcwuHEPVytmLnSfhQNCDrf1XlWeXC/8otbJvefcO2eJNGu7gxSXrhzWk6IqlGHJ0S7zPIOG1oRbfQTfWEkkcZ2lhHFmoGm4z3jrWQ+iPcQgZxDIrug== 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)(366004)(39830400003)(136003)(346002)(396003)(376002)(122000001)(6506007)(38100700002)(7696005)(83380400001)(2906002)(33656002)(41300700001)(186003)(55016003)(26005)(9686003)(52536014)(38070700005)(91956017)(54906003)(6916009)(8936002)(5660300002)(76116006)(86362001)(478600001)(316002)(966005)(66476007)(66446008)(71200400001)(30864003)(66556008)(64756008)(66946007)(8676002)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?QQqLUJqvwU6GEyLPa64vFwjGLtwbl0t0t2WjnEAl1wW/AszrKzBpl4QSfN?= =?iso-8859-1?Q?sxxcn1BbU9gCvS7SOvqK0pzyZ6YX+wMpd4ysg2Hh/T1q0/khpG4cfKilVw?= =?iso-8859-1?Q?5i8reTDPqsusyHuhCtQ8jKuRjTbl1L6QtMavlcD1ykxxZQGZpr+8cvxH4C?= =?iso-8859-1?Q?XBCHCYNYHjaX3jSItSbBd4Afu/ct4IBeOC64uMzHxHlNDPd1OKQGcthk8k?= =?iso-8859-1?Q?YH37hKrXaVj7kJRBok3cr/EUKbuZDHSG3MHA+BoBLZReAfdhzlbVoEmGWA?= =?iso-8859-1?Q?iKVpA9Ykg/xbmqPaUnPhN3PgVgEvJieJe0eSQmCYFkkU3QemRugP6rO7nM?= =?iso-8859-1?Q?oU2zh8s/Gehqrfgt22VmOHeazfMHwQN3L/74MV1tYNQcCpqax92pxhLC0w?= =?iso-8859-1?Q?DuCpEnUpebX0NuYgRl8YanaPNSPqqRWxaYy3eNx4xx12zGcFIDIOQ2XdUi?= =?iso-8859-1?Q?Wkku8k3n2DDMgY7EgjS5uYuqXjH+hDwNYecbnulVTPA2IZl9nWMfRXXfxA?= =?iso-8859-1?Q?3u5BHpdoTHyhiAfd67VDug6Ar/QkEO3vBhbixSlveXShKpBA3SUnWnJFfU?= =?iso-8859-1?Q?ch4608Rf6feJ1dq3+EvJ3zsmXP0R9mVl4Mq9UzLiaspThK9957I0TzOggC?= =?iso-8859-1?Q?1lw7q59TqLddtfXw55/r7eO9d4w6Mi6Mx9ICSx+zISsaarQOb6K/s8y+T4?= =?iso-8859-1?Q?HPR9L+evArj0NSJ9+Edx4q/v7E8maCIVyX86fKteRsq7HeBZGBQ8qBuEUi?= =?iso-8859-1?Q?oM3OAxdyKlZ17gF9NlHY1LrsZH5qbE2qscpWRhY/1fLIh/g6TKOOiAluzC?= =?iso-8859-1?Q?uco+H8fQ2eixbnn6+s3KBxFSBBG0Dfcb7xX0rTIoP055NqfPYjMXDmVe7A?= =?iso-8859-1?Q?mr2zJtT1TUhqILdZKsSfKFnTfNro1pr7/Q/LJrOoSUY5tG822qwkCyfoSq?= =?iso-8859-1?Q?+STt1Nkt5HAM35xQKULRS0Cc8NoohYAdHwOR0VF88wc3Ys8YL+P32FDEzg?= =?iso-8859-1?Q?kby+c0h+hbXstKaWMeHDZoVhpAQfIRY8F5cyT6B3gsSVCM0exTydO6dOhp?= =?iso-8859-1?Q?bteOKE0AsdSy8mc/0MMUbgXirG/+aD9M3QDgZcYbm4MKIEl5XK3uHlvNhP?= =?iso-8859-1?Q?AhOvK9WMAtDrqpzK255FEDvjTZO/4xJdn7RkKbhv8GwIp4984RJkVRRVFc?= =?iso-8859-1?Q?ZhPG9pazH7mh98NyzgwmrzDjjFvcMbMczaXUlRfup5YqTQpjo7BznEn5dc?= =?iso-8859-1?Q?fPFzypodNlGga6j/UIpAQ0LT8yJsIC0YspZeces1ZdV3RHn/Tv9GyM1AKh?= =?iso-8859-1?Q?IRqj8EW4bzcTI7eiOaMsb7wZ+BeIIMl0LP+A528paSiePVeoh94d3s0n4W?= =?iso-8859-1?Q?oqdkFbxAEQpSmu1sg3/4PE/fXVBmM3DBrsm6Qesd3Zb4ENbCI3aEzxtyf5?= =?iso-8859-1?Q?KkqqLt/wKEmT5GDz4QqF68TmJxQvyHkZuItMirIwkmA1D8f7CZueqQ02q+?= =?iso-8859-1?Q?hmLVWuV44p8UdLjj+8VAjQnhbTuFZPtK2wGkD36nZOcz8ZjWuR+HK8oUWU?= =?iso-8859-1?Q?dDnuV8VXq4MvPATzNwCItm8p6jkzfopHG5RdZwqarA7mMErzP37LiMi+I9?= =?iso-8859-1?Q?2TuD94CZE0fsZFdNEui6W0c2yYqEHTk9YpTW/2CWT/Yn519i8LWdOdeQ?= =?iso-8859-1?Q?=3D=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 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: 82f0322f-c7b1-43f7-d89c-08da5b5ef0a7 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2022 12:40:54.8463 (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: upokHslxJCTXBCTSMDMT8SHil/vUvkdnTguBGaprdr0UWRwJRoVQ+EiJeV6Z/m8GFUEMtXRm6tipnoktmndqlIXHsMw4QQTEOdTyXqGg8p8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR03MB8577 X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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-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: , X-List-Received-Date: Fri, 01 Jul 2022 12:41:02 -0000 When we use cross toolchains, in which the GCC libraries are not installed = =0A= within a designated system root, the shared sanitizer libraries link agains= t =0A= libstdc++.so* within the same libraries. This directory, however, is not in= RPATH, =0A= so attempting to build a dynamically linked application with -fsanitize=3D.= .. =0A= gives a linkage error.=0A= More information can be found here: https://gcc.gnu.org/bugzilla/show_bug.c= gi?id=3D69839.=0A= =0A= GCC, even when configured with -with-sysroot, by default, doesn't install l= ibstdc++.so*=0A= within the sysroot, as GCC's installation process isn't designed to help co= nstruct sysroot trees.=0A= This has to be done manually. =0A= Furthermore, if we are using a multiarch/multilib configuration (mips-mti*,= for example), =0A= we may not even want to install them within the sysroot.=0A= Would love to hear your thoughts on this, as I'm not sure myself that this = is the best solution.=0A= =0A= gcc/ChangeLog:=0A= =0A= * gcc.cc (LIBSAN_RPATH): New macro.=0A= (LIBASAN_SPEC): Add LIBSAN_RPATH.=0A= (LIBTSAN_SPEC): Likewise.=0A= (LIBLSAN_SPEC): Likewise.=0A= (LIBUBSAN_SPEC): Likewise.=0A= =0A= libsanitizer/ChangeLog:=0A= =0A= * Makefile.in: New Makefile variable.=0A= * asan/Makefile.in: Likewise.=0A= * configure: Regenerate.=0A= * configure.ac: New config variable.=0A= * hwasan/Makefile.in: New Makefile variable.=0A= * interception/Makefile.in: Likewise.=0A= * libbacktrace/Makefile.in: Likewise.=0A= * libsanitizer.spec.in: New spec.=0A= * lsan/Makefile.in: New Makefile variable.=0A= * sanitizer_common/Makefile.in: Likewise.=0A= * tsan/Makefile.in: Likewise.=0A= * ubsan/Makefile.in: Likewise.=0A= =0A= ---=0A= =0A= gcc/gcc.cc | 20 ++++++++++++--------=0A= libsanitizer/Makefile.in | 1 +=0A= libsanitizer/asan/Makefile.in | 1 +=0A= libsanitizer/configure | 10 ++++++++--=0A= libsanitizer/configure.ac | 7 +++++++=0A= libsanitizer/hwasan/Makefile.in | 1 +=0A= libsanitizer/interception/Makefile.in | 1 +=0A= libsanitizer/libbacktrace/Makefile.in | 1 +=0A= libsanitizer/libsanitizer.spec.in | 2 ++=0A= libsanitizer/lsan/Makefile.in | 1 +=0A= libsanitizer/sanitizer_common/Makefile.in | 1 +=0A= libsanitizer/tsan/Makefile.in | 1 +=0A= libsanitizer/ubsan/Makefile.in | 1 +=0A= 13 files changed, 38 insertions(+), 10 deletions(-)=0A= =0A= diff --git a/gcc/gcc.cc b/gcc/gcc.cc=0A= index 299e09c4f54..0d2d361b9a4 100644=0A= --- a/gcc/gcc.cc=0A= +++ b/gcc/gcc.cc=0A= @@ -738,17 +738,21 @@ proper position among the other output files. */=0A= #define STACK_SPLIT_SPEC " %{fsplit-stack: --wrap=3Dpthread_create}"=0A= #endif=0A= =0A= +#ifndef LIBSAN_RPATH=0A= +#define LIBSAN_RPATH " %:include(libsanitizer.spec)%(link_libsan_rpath)"= =0A= +#endif=0A= +=0A= #ifndef LIBASAN_SPEC=0A= #define STATIC_LIBASAN_LIBS \=0A= " %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}"= =0A= #ifdef LIBASAN_EARLY_SPEC=0A= -#define LIBASAN_SPEC STATIC_LIBASAN_LIBS=0A= +#define LIBASAN_SPEC STATIC_LIBASAN_LIBS LIBSAN_RPATH=0A= #elif defined(HAVE_LD_STATIC_DYNAMIC)=0A= #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \=0A= "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \= =0A= STATIC_LIBASAN_LIBS=0A= #else=0A= -#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS=0A= +#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS LIBSAN_RPATH=0A= #endif=0A= #endif=0A= =0A= @@ -778,13 +782,13 @@ proper position among the other output files. */=0A= #define STATIC_LIBTSAN_LIBS \=0A= " %{static-libtsan|static:%:include(libsanitizer.spec)%(link_libtsan)}"= =0A= #ifdef LIBTSAN_EARLY_SPEC=0A= -#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS=0A= +#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS LIBSAN_RPATH=0A= #elif defined(HAVE_LD_STATIC_DYNAMIC)=0A= #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \=0A= "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \= =0A= STATIC_LIBTSAN_LIBS=0A= #else=0A= -#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS=0A= +#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS LIBSAN_RPATH=0A= #endif=0A= #endif=0A= =0A= @@ -796,13 +800,13 @@ proper position among the other output files. */=0A= #define STATIC_LIBLSAN_LIBS \=0A= " %{static-liblsan|static:%:include(libsanitizer.spec)%(link_liblsan)}"= =0A= #ifdef LIBLSAN_EARLY_SPEC=0A= -#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS=0A= +#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS LIBSAN_RPATH=0A= #elif defined(HAVE_LD_STATIC_DYNAMIC)=0A= #define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \=0A= "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \= =0A= STATIC_LIBLSAN_LIBS=0A= #else=0A= -#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS=0A= +#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS LIBSAN_RPATH=0A= #endif=0A= #endif=0A= =0A= @@ -816,9 +820,9 @@ proper position among the other output files. */=0A= #ifdef HAVE_LD_STATIC_DYNAMIC=0A= #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \=0A= "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \= =0A= - STATIC_LIBUBSAN_LIBS=0A= + STATIC_LIBUBSAN_LIBS LIBSAN_RPATH=0A= #else=0A= -#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS=0A= +#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS LIBSAN_RPATH=0A= #endif=0A= #endif=0A= =0A= diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in=0A= index 65e7f2e9553..ef71407a512 100644=0A= --- a/libsanitizer/Makefile.in=0A= +++ b/libsanitizer/Makefile.in=0A= @@ -333,6 +333,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/asan/Makefile.in b/libsanitizer/asan/Makefile.in= =0A= index 7833a9a4c3f..143dafa450d 100644=0A= --- a/libsanitizer/asan/Makefile.in=0A= +++ b/libsanitizer/asan/Makefile.in=0A= @@ -387,6 +387,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/configure b/libsanitizer/configure=0A= index 771b135573a..4408167929f 100755=0A= --- a/libsanitizer/configure=0A= +++ b/libsanitizer/configure=0A= @@ -660,6 +660,7 @@ link_libubsan=0A= link_libtsan=0A= link_libhwasan=0A= link_libasan=0A= +link_libsan_rpath=0A= HWASAN_SUPPORTED_FALSE=0A= HWASAN_SUPPORTED_TRUE=0A= LSAN_SUPPORTED_FALSE=0A= @@ -12359,7 +12360,7 @@ else=0A= lt_dlunknown=3D0; lt_dlno_uscore=3D1; lt_dlneed_uscore=3D2=0A= lt_status=3D$lt_dlunknown=0A= cat > conftest.$ac_ext <<_LT_EOF=0A= -#line 12362 "configure"=0A= +#line 12363 "configure"=0A= #include "confdefs.h"=0A= =0A= #if HAVE_DLFCN_H=0A= @@ -12465,7 +12466,7 @@ else=0A= lt_dlunknown=3D0; lt_dlno_uscore=3D1; lt_dlneed_uscore=3D2=0A= lt_status=3D$lt_dlunknown=0A= cat > conftest.$ac_ext <<_LT_EOF=0A= -#line 12468 "configure"=0A= +#line 12469 "configure"=0A= #include "confdefs.h"=0A= =0A= #if HAVE_DLFCN_H=0A= @@ -15935,6 +15936,11 @@ if test "x$ac_cv_lib_dl_dlsym" =3D xyes; then :=0A= link_sanitizer_common=3D"-ldl $link_sanitizer_common"=0A= fi=0A= =0A= +lt_multi_os_dir=3D`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-director= y 2>/dev/null`=0A= +if test -n "$with_cross_host" &&=0A= + test x"$with_cross_host" !=3D x"no"; then=0A= + link_libsan_rpath=3D"-rpath-link=3D%R/../${target_alias}/lib/$lt_multi= _os_dir"=0A= +fi=0A= =0A= # Set up the set of additional libraries that we need to link against for = libasan.=0A= link_libasan=3D$link_sanitizer_common=0A= diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac=0A= index 7f1ef3979c4..4c7c3814cf1 100644=0A= --- a/libsanitizer/configure.ac=0A= +++ b/libsanitizer/configure.ac=0A= @@ -118,6 +118,13 @@ AC_CHECK_LIB(rt, shm_open,=0A= AC_CHECK_LIB(dl, dlsym,=0A= [link_sanitizer_common=3D"-ldl $link_sanitizer_common"])=0A= =0A= +lt_multi_os_dir=3D`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-director= y 2>/dev/null`=0A= +if test -n "$with_cross_host" &&=0A= + test x"$with_cross_host" !=3D x"no"; then=0A= + link_libsan_rpath=3D"-rpath-link=3D%R/../../${target_alias}/lib/$lt_mu= lti_os_dir"=0A= +fi=0A= +AC_SUBST(link_libsan_rpath)=0A= +=0A= # Set up the set of additional libraries that we need to link against for = libasan.=0A= link_libasan=3D$link_sanitizer_common=0A= AC_SUBST(link_libasan)=0A= diff --git a/libsanitizer/hwasan/Makefile.in b/libsanitizer/hwasan/Makefile= .in=0A= index b9b942003a3..cda1c944542 100644=0A= --- a/libsanitizer/hwasan/Makefile.in=0A= +++ b/libsanitizer/hwasan/Makefile.in=0A= @@ -376,6 +376,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/interception/Makefile.in b/libsanitizer/intercept= ion/Makefile.in=0A= index 85dd386de47..a10851cd157 100644=0A= --- a/libsanitizer/interception/Makefile.in=0A= +++ b/libsanitizer/interception/Makefile.in=0A= @@ -305,6 +305,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/libbacktrace/Makefile.in b/libsanitizer/libbacktr= ace/Makefile.in=0A= index c0243fa4aab..4c75070a6e3 100644=0A= --- a/libsanitizer/libbacktrace/Makefile.in=0A= +++ b/libsanitizer/libbacktrace/Makefile.in=0A= @@ -355,6 +355,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/libsanitizer.spec.in b/libsanitizer/libsanitizer.= spec.in=0A= index 70a33574d7b..1df604335d5 100644=0A= --- a/libsanitizer/libsanitizer.spec.in=0A= +++ b/libsanitizer/libsanitizer.spec.in=0A= @@ -11,3 +11,5 @@=0A= =0A= *link_liblsan: @link_liblsan@=0A= =0A= +*link_libsan_rpath: @link_libsan_rpath@=0A= +=0A= diff --git a/libsanitizer/lsan/Makefile.in b/libsanitizer/lsan/Makefile.in= =0A= index d8fd4ee9557..8f459b255d7 100644=0A= --- a/libsanitizer/lsan/Makefile.in=0A= +++ b/libsanitizer/lsan/Makefile.in=0A= @@ -350,6 +350,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/sanitizer_common/Makefile.in b/libsanitizer/sanit= izer_common/Makefile.in=0A= index 07047bd4b17..e916a803786 100644=0A= --- a/libsanitizer/sanitizer_common/Makefile.in=0A= +++ b/libsanitizer/sanitizer_common/Makefile.in=0A= @@ -342,6 +342,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/tsan/Makefile.in b/libsanitizer/tsan/Makefile.in= =0A= index 36498832bb8..ab8db13a268 100644=0A= --- a/libsanitizer/tsan/Makefile.in=0A= +++ b/libsanitizer/tsan/Makefile.in=0A= @@ -379,6 +379,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= diff --git a/libsanitizer/ubsan/Makefile.in b/libsanitizer/ubsan/Makefile.i= n=0A= index 92a8e387fd7..5fc063fe9ee 100644=0A= --- a/libsanitizer/ubsan/Makefile.in=0A= +++ b/libsanitizer/ubsan/Makefile.in=0A= @@ -344,6 +344,7 @@ libexecdir =3D @libexecdir@=0A= link_libasan =3D @link_libasan@=0A= link_libhwasan =3D @link_libhwasan@=0A= link_liblsan =3D @link_liblsan@=0A= +link_libsan_rpath =3D @link_libsan_rpath@=0A= link_libtsan =3D @link_libtsan@=0A= link_libubsan =3D @link_libubsan@=0A= localedir =3D @localedir@=0A= =0A= ---=