From: John Hubbard <jhubbard@nvidia.com>
To: Ryan Roberts <ryan.roberts@arm.com>, Shuah Khan <shuah@kernel.org>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Maciej Wieczor-Retman" <maciej.wieczor-retman@intel.com>,
"Christian Brauner" <brauner@kernel.org>,
"Muhammad Usama Anjum" <usama.anjum@collabora.com>,
"Alexey Gladkov" <legion@kernel.org>,
"Valentin Obst" <kernel@valentinobst.de>,
linux-kselftest@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>,
llvm@lists.linux.dev
Subject: Re: [PATCH 1/2] selftests/openat2: fix clang build failures: -static-libasan, LOCAL_HDRS
Date: Tue, 7 May 2024 09:19:38 -0700 [thread overview]
Message-ID: <9e346b64-0a7c-4eb9-88c4-8fb6cf65b33f@nvidia.com> (raw)
In-Reply-To: <8fdefaa9-675e-4b37-9456-896b9989d18f@arm.com>
On 5/7/24 12:45 AM, Ryan Roberts wrote:
> On 04/05/2024 05:43, John Hubbard wrote:
...
> Hi John,
>
> I sent out a similar fix a couple of weeks ago, see [1]. I don't think it got
> picked up though. It takes a slightly different approach, explicitly adding
> -static-libsan (note no 'a') for clang, instead of relying on its default.
>
> And it just drops helpers.h from the makefile altogether, on the assumption that
> it was a mistake; its just a header and shouldn't be compiled directly. I'm not
> exactly sure what the benefit of adding it to LOCAL_HDRS is?
Ah no, you must not drop headers.h. That's a mistake itself, because
LOCAL_HDRS adds a Make dependency; that's its purpose. If you touch
helpers.h it should cause a rebuild, which won't happen if you remove it
from LOCAL_HDRS.
The way it works is that lib.mk adds $(LOCAL_HDRS) to the dependencies list,
but then filters precisely that same set *out* of the list that it provides
to the compile invocation.
The other way to implement this requirement of "some things need to be
Make dependencies, and some need to be both dependencies and compilation
inputs", is to add everything to the dependency list, but then use a
separate list of files to pass to the compiler. For an example of that,
see $(EXTRA_FILES) in patch 1/7 [1] of my selftests/x86 cleanup.
[1] https://lore.kernel.org/all/20240503030214.86681-2-jhubbard@nvidia.com/
thanks,
John Hubbard
>
> [1]
> https://lore.kernel.org/linux-kselftest/20240417160740.2019530-1-ryan.roberts@arm.com/
>
> Thanks,
> Ryan
>
>
>> ---
>> tools/testing/selftests/openat2/Makefile | 14 ++++++++++++--
>> 1 file changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/testing/selftests/openat2/Makefile b/tools/testing/selftests/openat2/Makefile
>> index 254d676a2689..185dc76ebb5f 100644
>> --- a/tools/testing/selftests/openat2/Makefile
>> +++ b/tools/testing/selftests/openat2/Makefile
>> @@ -1,8 +1,18 @@
>> # SPDX-License-Identifier: GPL-2.0-or-later
>>
>> -CFLAGS += -Wall -O2 -g -fsanitize=address -fsanitize=undefined -static-libasan
>> +CFLAGS += -Wall -O2 -g -fsanitize=address -fsanitize=undefined
>> TEST_GEN_PROGS := openat2_test resolve_test rename_attack_test
>>
>> +# gcc requires -static-libasan in order to ensure that Address Sanitizer's
>> +# library is the first one loaded. However, clang already statically links the
>> +# Address Sanitizer if -fsanitize is specified. Therefore, simply omit
>> +# -static-libasan for clang builds.
>> +ifeq ($(LLVM),)
>> + CFLAGS += -static-libasan
>> +endif
>> +
>> +LOCAL_HDRS += helpers.h
>> +
>> include ../lib.mk
>>
>> -$(TEST_GEN_PROGS): helpers.c helpers.h
>> +$(TEST_GEN_PROGS): helpers.c
>>
>> base-commit: ddb4c3f25b7b95df3d6932db0b379d768a6ebdf7
>> prerequisite-patch-id: b901ece2a5b78503e2fb5480f20e304d36a0ea27
>
thanks,
--
John Hubbard
NVIDIA
next prev parent reply other threads:[~2024-05-07 16:19 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-04 4:43 [PATCH 1/2] selftests/openat2: fix clang build failures: -static-libasan, LOCAL_HDRS John Hubbard
2024-05-04 4:43 ` [PATCH 2/2] selftests/fchmodat2: fix clang build failure due to -static-libasan John Hubbard
2024-05-07 7:45 ` [PATCH 1/2] selftests/openat2: fix clang build failures: -static-libasan, LOCAL_HDRS Ryan Roberts
2024-05-07 16:19 ` John Hubbard [this message]
2024-05-07 16:34 ` Ryan Roberts
2024-05-07 16:47 ` John Hubbard
2024-05-07 16:56 ` Ryan Roberts
2024-05-10 11:52 ` Ryan Roberts
2024-05-10 17:56 ` John Hubbard
2024-05-10 18:22 ` John Hubbard
2024-05-11 17:19 ` Ryan Roberts
2024-05-30 3:58 ` Muhammad Usama Anjum
2024-05-30 4:35 ` John Hubbard
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=9e346b64-0a7c-4eb9-88c4-8fb6cf65b33f@nvidia.com \
--to=jhubbard@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=kernel@valentinobst.de \
--cc=legion@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=maciej.wieczor-retman@intel.com \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=usama.anjum@collabora.com \
/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: link
Be 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