[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27866: Handle clang's internal libraries when finding compiler's int
From: |
Martin Storsjö |
Subject: |
bug#27866: Handle clang's internal libraries when finding compiler's internal libraries |
Date: |
Sun, 15 May 2022 23:21:35 +0300 (EEST) |
On Sun, 15 May 2022, Alex Ameen wrote:
Earlier this week I read through the thread, and created a patch based on the
ones posted. This was checked if you would like to experiment with it.
What I did notice was that this change has a wider effect than the problem
statement initially suggests. I'm not crazy about the way it has a
conditional behavior for two specific libraries since it is an ad-hoc
solution directed at two compiler-collections, as opposed to a general
purpose solution; but for the time being I see this as a practical change.
As a side effect this change should also resolve issues with certain
flag-specs such as `-fsanitize' which is nice; but the impact of unknown side
effects is something I expect will rear its head in the near future. With
that in mind, I think this is a necessary change, but I want to express up
front that "I'm confident this will break a lot of existing builds, and I
consider this to be a first draft".
I would greatly appreciate y'all taking this for a spin on any available
projects you have to get a sense of how it will behave "in the field". This
change really effects "unspecified behavior" that the test-suite isn't
designed to audit, but nonetheless has a practical effect on users.
Thanks!
I tested this now, and it doesn't work quite as is - it needs this
modification:
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index ab5af335..9c084816 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -7554,7 +7554,7 @@ if AC_TRY_EVAL(ac_compile); then
for p in `eval "$output_verbose_link_cmd"`; do
case $prev$p in
- -L* | -R* | -l* | */clang_rt*.a)
+ -L* | -R* | -l* | */libclang_rt*.a)
# Some compilers place space between "-{L,R}" and the path.
# Remove the space.
if test x-L = "$p" ||
(This was correct in one out of two instances in
1d2577357ee704da2d6d7c7da119ad82ba8ca172.)
With that changed, it does seem to work as it should for me on a test
project.
// Martin