Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Jan 2026 15:09:40 +0000
From:      Brooks Davis <brooks@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: d5c827648ead - main - devel/llvm1[4567]: keep backport patches local
Message-ID:  <6967b1b4.cf4b.6bc749c@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d5c827648ead25c364859541c957a09ba0c276fb

commit d5c827648ead25c364859541c957a09ba0c276fb
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2026-01-14 15:09:14 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2026-01-14 15:09:14 +0000

    devel/llvm1[4567]: keep backport patches local
    
    The patches generated by adding .patch to a github commit URL are
    unstable and the output of some of them changed recently.  It's
    concivable this will be fixed, but they probably won't make any
    long term guarantees so store the patches in the ports tree instead of
    downloading them.
    
    PR:             292291
    MFH:            2026Q1
    Sponsored by:   DARPA, AFRL
    See also:       https://github.com/orgs/community/discussions/184094
---
 devel/llvm14/Makefile                              |  5 ---
 devel/llvm14/distinfo                              |  8 +---
 ...ch-backport-llvmorg-18-init-15199-gb9935bb02a50 | 52 ++++++++++++++++++++++
 ...ch-backport-llvmorg-18-init-15680-g966d564e43e6 | 32 +++++++++++++
 ...tch-backport-llvmorg-18-init-1760-g68744ffbdd7d | 31 +++++++++++++
 devel/llvm15/Makefile                              |  5 ---
 devel/llvm15/distinfo                              |  8 +---
 ...ch-backport-llvmorg-18-init-15199-gb9935bb02a50 | 52 ++++++++++++++++++++++
 ...ch-backport-llvmorg-18-init-15680-g966d564e43e6 | 32 +++++++++++++
 ...tch-backport-llvmorg-18-init-1760-g68744ffbdd7d | 31 +++++++++++++
 devel/llvm16/Makefile                              |  5 ---
 devel/llvm16/distinfo                              |  8 +---
 ...ch-backport-llvmorg-18-init-15199-gb9935bb02a50 | 52 ++++++++++++++++++++++
 ...ch-backport-llvmorg-18-init-15680-g966d564e43e6 | 32 +++++++++++++
 ...tch-backport-llvmorg-18-init-1760-g68744ffbdd7d | 31 +++++++++++++
 devel/llvm17/Makefile                              |  5 ---
 devel/llvm17/distinfo                              | 10 +----
 ...ch-backport-llvmorg-18-init-15199-gb9935bb02a50 | 52 ++++++++++++++++++++++
 ...ch-backport-llvmorg-18-init-15680-g966d564e43e6 | 32 +++++++++++++
 ...tch-backport-llvmorg-18-init-1760-g68744ffbdd7d | 31 +++++++++++++
 20 files changed, 464 insertions(+), 50 deletions(-)

diff --git a/devel/llvm14/Makefile b/devel/llvm14/Makefile
index ff9ad76a61e3..ef1896238fb4 100644
--- a/devel/llvm14/Makefile
+++ b/devel/llvm14/Makefile
@@ -8,11 +8,6 @@ PKGNAMESUFFIX=	${LLVM_SUFFIX}
 DISTNAME=	llvm-project-${DISTVERSION}.src
 DISTFILES=	llvm-project-${DISTVERSION}.src${EXTRACT_SUFX}
 
-PATCH_SITES=	https://github.com/llvm/llvm-project/commit/
-PATCHFILES+=	llvmorg-18-init-1760-g68744ffbdd7d.patch:-p1 # https://reviews.llvm.org/D157589
-PATCHFILES+=	llvmorg-18-init-15199-gb9935bb02a50.patch:-p1 # https://github.com/llvm/llvm-project/pull/75748
-PATCHFILES+=	llvmorg-18-init-15680-g966d564e43e6.patch:-p1 # https://github.com/llvm/llvm-project/pull/76185
-
 MAINTAINER=	brooks@FreeBSD.org
 COMMENT=	LLVM and Clang
 WWW=		https://llvm.org/
diff --git a/devel/llvm14/distinfo b/devel/llvm14/distinfo
index 37e3d0cb3e6a..6e3ca6dfa7d3 100644
--- a/devel/llvm14/distinfo
+++ b/devel/llvm14/distinfo
@@ -1,9 +1,3 @@
-TIMESTAMP = 1722603694
+TIMESTAMP = 1768385123
 SHA256 (llvm-project-14.0.6.src.tar.xz) = 8b3cfd7bc695bd6cea0f37f53f0981f34f87496e79e2529874fd03a2f9dd3a8a
 SIZE (llvm-project-14.0.6.src.tar.xz) = 105618228
-SHA256 (llvmorg-18-init-1760-g68744ffbdd7d.patch) = ad9ad1613491f69b010dbbd6a9d90d5dd505e46d9537a6e533f36dacd552d0f7
-SIZE (llvmorg-18-init-1760-g68744ffbdd7d.patch) = 1491
-SHA256 (llvmorg-18-init-15199-gb9935bb02a50.patch) = b0805cba765084c7bef426fa1235dd887c61ae0c1fd5e3fad5c8742cdd6ee8b0
-SIZE (llvmorg-18-init-15199-gb9935bb02a50.patch) = 1893
-SHA256 (llvmorg-18-init-15680-g966d564e43e6.patch) = 3abf92d4a788ff2f74fa9fc627a113f04d9fb72cd7e47344a8c4dce06140a163
-SIZE (llvmorg-18-init-15680-g966d564e43e6.patch) = 1297
diff --git a/devel/llvm14/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50 b/devel/llvm14/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
new file mode 100644
index 000000000000..2459b80609d7
--- /dev/null
+++ b/devel/llvm14/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
@@ -0,0 +1,52 @@
+From b9935bb02a506e9142ae79b6c58303cb2e1ffb08 Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Mon, 18 Dec 2023 13:48:46 -0800
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ (#75748)
+
+Fix #57086: when ASAN_SHADOW_OFFSET_CONST >= 0x80000000 (FreeBSD,
+NetBSD, etc), `movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d` has an
+invalid displacement (not representable as a signed 32-bit integer),
+which will be diagnosed by GNU assembler.
+
+```
+% cat a.s
+movsbl 0x80000000(%r10),%r10d
+% as a.s
+a.s: Assembler messages:
+a.s:1: Error: 0x80000000 out of range of signed 32bit displacement
+% clang -c a.s
+```
+
+The integrated assembler after #75747 will diagnose the invalid
+displacement as well.
+```
+% clang -c a.s
+a.s:1:19: error: displacement 2147483648 is not within [-2147483648, 2147483647]
+movsbl 0x80000000(%r10),%r10d
+                  ^
+```
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq+movsbl`.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index 0b7363018f425f..e44587ac4331c7 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -27,7 +27,12 @@ FNAME(reg, op, s, i): ;\
+ #define ASAN_MEMORY_ACCESS_INITIAL_CHECK_ADD(reg, op, s) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000   ;\
+         movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d ;\
++        .else                                       ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11      ;\
++        movsbl (%r10,%r11),%r10d                    ;\
++        .endif                                      ;\
+         test   %r10d,%r10d ;\
+         jne    CLABEL(reg, op, s, add) ;\
+ RLABEL(reg, op, s, add): ;\
diff --git a/devel/llvm14/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6 b/devel/llvm14/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
new file mode 100644
index 000000000000..424e5f9eeea3
--- /dev/null
+++ b/devel/llvm14/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
@@ -0,0 +1,32 @@
+From 966d564e43e650b9c34f9c67829d3947f52add91 Mon Sep 17 00:00:00 2001
+From: Dan McGregor <dan.mcgregor@usask.ca>
+Date: Sun, 24 Dec 2023 22:37:35 -0600
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ redux (#76185)
+
+Similar to b9935bb02a50, but also apply a similar change to
+ACCESS_CHECK_ADD.
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq` and the register offset variant of cmp.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index e44587ac4331c7..9c5289856d8ae6 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -89,7 +89,12 @@ ENDF
+ #define ASAN_MEMORY_ACCESS_CHECK_ADD(reg, op, s, c) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000  ;\
+         ##c    $0x0,ASAN_SHADOW_OFFSET_CONST(%r10) ;\
++        .else                                      ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11     ;\
++        ##c    $0x0,(%r10,%r11)                    ;\
++        .endif                                     ;\
+         jne    FLABEL(reg, op, s, add) ;\
+         retq  ;\
+ 
diff --git a/devel/llvm14/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d b/devel/llvm14/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
new file mode 100644
index 000000000000..58ff453d8a06
--- /dev/null
+++ b/devel/llvm14/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
@@ -0,0 +1,31 @@
+From 68744ffbdd7daac41da274eef9ac0d191e11c16d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
+Date: Thu, 10 Aug 2023 11:09:36 +0300
+Subject: [PATCH] [lldb] Fix building with latest libc++
+
+Since https://reviews.llvm.org/D157058 in libc++,
+the base template for char_traits has been removed - it is only
+provided for char, wchar_t, char8_t, char16_t and char32_t.
+(Thus, to use basic_string with a type other than those, we'd need
+to supply suitable traits ourselves.)
+
+For this particular use, a vector works just as well as basic_string.
+
+Differential Revision: https://reviews.llvm.org/D157589
+---
+ .../Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+index 4efc454967a12..f9d95fc5d2a66 100644
+--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
++++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+@@ -631,7 +631,7 @@ static void WriteRegisterValueInHexFixedWidth(
+   } else {
+     // Zero-out any unreadable values.
+     if (reg_info.byte_size > 0) {
+-      std::basic_string<uint8_t> zeros(reg_info.byte_size, '\0');
++      std::vector<uint8_t> zeros(reg_info.byte_size, '\0');
+       AppendHexValue(response, zeros.data(), zeros.size(), false);
+     }
+   }
diff --git a/devel/llvm15/Makefile b/devel/llvm15/Makefile
index 156426834d94..9ff045804255 100644
--- a/devel/llvm15/Makefile
+++ b/devel/llvm15/Makefile
@@ -8,11 +8,6 @@ PKGNAMESUFFIX=	${LLVM_SUFFIX}
 DISTNAME=	llvm-project-${DISTVERSION}.src
 DISTFILES=	llvm-project-${DISTVERSION}.src${EXTRACT_SUFX}
 
-PATCH_SITES=	https://github.com/llvm/llvm-project/commit/
-PATCHFILES+=	llvmorg-18-init-1760-g68744ffbdd7d.patch:-p1 # https://reviews.llvm.org/D157589
-PATCHFILES+=	llvmorg-18-init-15199-gb9935bb02a50.patch:-p1 # https://github.com/llvm/llvm-project/pull/75748
-PATCHFILES+=	llvmorg-18-init-15680-g966d564e43e6.patch:-p1 # https://github.com/llvm/llvm-project/pull/76185
-
 MAINTAINER=	brooks@FreeBSD.org
 COMMENT=	LLVM and Clang
 WWW=		https://llvm.org/
diff --git a/devel/llvm15/distinfo b/devel/llvm15/distinfo
index 31cb67814ddc..5f89327ea3c6 100644
--- a/devel/llvm15/distinfo
+++ b/devel/llvm15/distinfo
@@ -1,9 +1,3 @@
-TIMESTAMP = 1722603701
+TIMESTAMP = 1768386286
 SHA256 (llvm-project-15.0.7.src.tar.xz) = 8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6
 SIZE (llvm-project-15.0.7.src.tar.xz) = 110936452
-SHA256 (llvmorg-18-init-1760-g68744ffbdd7d.patch) = ad9ad1613491f69b010dbbd6a9d90d5dd505e46d9537a6e533f36dacd552d0f7
-SIZE (llvmorg-18-init-1760-g68744ffbdd7d.patch) = 1491
-SHA256 (llvmorg-18-init-15199-gb9935bb02a50.patch) = b0805cba765084c7bef426fa1235dd887c61ae0c1fd5e3fad5c8742cdd6ee8b0
-SIZE (llvmorg-18-init-15199-gb9935bb02a50.patch) = 1893
-SHA256 (llvmorg-18-init-15680-g966d564e43e6.patch) = 3abf92d4a788ff2f74fa9fc627a113f04d9fb72cd7e47344a8c4dce06140a163
-SIZE (llvmorg-18-init-15680-g966d564e43e6.patch) = 1297
diff --git a/devel/llvm15/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50 b/devel/llvm15/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
new file mode 100644
index 000000000000..2459b80609d7
--- /dev/null
+++ b/devel/llvm15/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
@@ -0,0 +1,52 @@
+From b9935bb02a506e9142ae79b6c58303cb2e1ffb08 Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Mon, 18 Dec 2023 13:48:46 -0800
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ (#75748)
+
+Fix #57086: when ASAN_SHADOW_OFFSET_CONST >= 0x80000000 (FreeBSD,
+NetBSD, etc), `movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d` has an
+invalid displacement (not representable as a signed 32-bit integer),
+which will be diagnosed by GNU assembler.
+
+```
+% cat a.s
+movsbl 0x80000000(%r10),%r10d
+% as a.s
+a.s: Assembler messages:
+a.s:1: Error: 0x80000000 out of range of signed 32bit displacement
+% clang -c a.s
+```
+
+The integrated assembler after #75747 will diagnose the invalid
+displacement as well.
+```
+% clang -c a.s
+a.s:1:19: error: displacement 2147483648 is not within [-2147483648, 2147483647]
+movsbl 0x80000000(%r10),%r10d
+                  ^
+```
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq+movsbl`.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index 0b7363018f425f..e44587ac4331c7 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -27,7 +27,12 @@ FNAME(reg, op, s, i): ;\
+ #define ASAN_MEMORY_ACCESS_INITIAL_CHECK_ADD(reg, op, s) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000   ;\
+         movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d ;\
++        .else                                       ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11      ;\
++        movsbl (%r10,%r11),%r10d                    ;\
++        .endif                                      ;\
+         test   %r10d,%r10d ;\
+         jne    CLABEL(reg, op, s, add) ;\
+ RLABEL(reg, op, s, add): ;\
diff --git a/devel/llvm15/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6 b/devel/llvm15/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
new file mode 100644
index 000000000000..424e5f9eeea3
--- /dev/null
+++ b/devel/llvm15/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
@@ -0,0 +1,32 @@
+From 966d564e43e650b9c34f9c67829d3947f52add91 Mon Sep 17 00:00:00 2001
+From: Dan McGregor <dan.mcgregor@usask.ca>
+Date: Sun, 24 Dec 2023 22:37:35 -0600
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ redux (#76185)
+
+Similar to b9935bb02a50, but also apply a similar change to
+ACCESS_CHECK_ADD.
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq` and the register offset variant of cmp.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index e44587ac4331c7..9c5289856d8ae6 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -89,7 +89,12 @@ ENDF
+ #define ASAN_MEMORY_ACCESS_CHECK_ADD(reg, op, s, c) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000  ;\
+         ##c    $0x0,ASAN_SHADOW_OFFSET_CONST(%r10) ;\
++        .else                                      ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11     ;\
++        ##c    $0x0,(%r10,%r11)                    ;\
++        .endif                                     ;\
+         jne    FLABEL(reg, op, s, add) ;\
+         retq  ;\
+ 
diff --git a/devel/llvm15/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d b/devel/llvm15/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
new file mode 100644
index 000000000000..58ff453d8a06
--- /dev/null
+++ b/devel/llvm15/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
@@ -0,0 +1,31 @@
+From 68744ffbdd7daac41da274eef9ac0d191e11c16d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
+Date: Thu, 10 Aug 2023 11:09:36 +0300
+Subject: [PATCH] [lldb] Fix building with latest libc++
+
+Since https://reviews.llvm.org/D157058 in libc++,
+the base template for char_traits has been removed - it is only
+provided for char, wchar_t, char8_t, char16_t and char32_t.
+(Thus, to use basic_string with a type other than those, we'd need
+to supply suitable traits ourselves.)
+
+For this particular use, a vector works just as well as basic_string.
+
+Differential Revision: https://reviews.llvm.org/D157589
+---
+ .../Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+index 4efc454967a12..f9d95fc5d2a66 100644
+--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
++++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+@@ -631,7 +631,7 @@ static void WriteRegisterValueInHexFixedWidth(
+   } else {
+     // Zero-out any unreadable values.
+     if (reg_info.byte_size > 0) {
+-      std::basic_string<uint8_t> zeros(reg_info.byte_size, '\0');
++      std::vector<uint8_t> zeros(reg_info.byte_size, '\0');
+       AppendHexValue(response, zeros.data(), zeros.size(), false);
+     }
+   }
diff --git a/devel/llvm16/Makefile b/devel/llvm16/Makefile
index 3a71b032b9ee..5d392446e2ec 100644
--- a/devel/llvm16/Makefile
+++ b/devel/llvm16/Makefile
@@ -8,11 +8,6 @@ PKGNAMESUFFIX=	${LLVM_SUFFIX}
 DISTNAME=	llvm-project-${DISTVERSION}.src
 DISTFILES=	llvm-project-${DISTVERSION}.src${EXTRACT_SUFX}
 
-PATCH_SITES=	https://github.com/llvm/llvm-project/commit/
-PATCHFILES+=	llvmorg-18-init-1760-g68744ffbdd7d.patch:-p1 # https://reviews.llvm.org/D157589
-PATCHFILES+=	llvmorg-18-init-15199-gb9935bb02a50.patch:-p1 # https://github.com/llvm/llvm-project/pull/75748
-PATCHFILES+=	llvmorg-18-init-15680-g966d564e43e6.patch:-p1 # https://github.com/llvm/llvm-project/pull/76185
-
 MAINTAINER=	brooks@FreeBSD.org
 COMMENT=	LLVM and Clang
 WWW=		https://llvm.org/
diff --git a/devel/llvm16/distinfo b/devel/llvm16/distinfo
index 9cf157883e23..34235f1cf972 100644
--- a/devel/llvm16/distinfo
+++ b/devel/llvm16/distinfo
@@ -1,9 +1,3 @@
-TIMESTAMP = 1722603709
+TIMESTAMP = 1768386129
 SHA256 (llvm-project-16.0.6.src.tar.xz) = ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e
 SIZE (llvm-project-16.0.6.src.tar.xz) = 118013488
-SHA256 (llvmorg-18-init-1760-g68744ffbdd7d.patch) = ad9ad1613491f69b010dbbd6a9d90d5dd505e46d9537a6e533f36dacd552d0f7
-SIZE (llvmorg-18-init-1760-g68744ffbdd7d.patch) = 1491
-SHA256 (llvmorg-18-init-15199-gb9935bb02a50.patch) = b0805cba765084c7bef426fa1235dd887c61ae0c1fd5e3fad5c8742cdd6ee8b0
-SIZE (llvmorg-18-init-15199-gb9935bb02a50.patch) = 1893
-SHA256 (llvmorg-18-init-15680-g966d564e43e6.patch) = 3abf92d4a788ff2f74fa9fc627a113f04d9fb72cd7e47344a8c4dce06140a163
-SIZE (llvmorg-18-init-15680-g966d564e43e6.patch) = 1297
diff --git a/devel/llvm16/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50 b/devel/llvm16/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
new file mode 100644
index 000000000000..2459b80609d7
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
@@ -0,0 +1,52 @@
+From b9935bb02a506e9142ae79b6c58303cb2e1ffb08 Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Mon, 18 Dec 2023 13:48:46 -0800
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ (#75748)
+
+Fix #57086: when ASAN_SHADOW_OFFSET_CONST >= 0x80000000 (FreeBSD,
+NetBSD, etc), `movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d` has an
+invalid displacement (not representable as a signed 32-bit integer),
+which will be diagnosed by GNU assembler.
+
+```
+% cat a.s
+movsbl 0x80000000(%r10),%r10d
+% as a.s
+a.s: Assembler messages:
+a.s:1: Error: 0x80000000 out of range of signed 32bit displacement
+% clang -c a.s
+```
+
+The integrated assembler after #75747 will diagnose the invalid
+displacement as well.
+```
+% clang -c a.s
+a.s:1:19: error: displacement 2147483648 is not within [-2147483648, 2147483647]
+movsbl 0x80000000(%r10),%r10d
+                  ^
+```
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq+movsbl`.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index 0b7363018f425f..e44587ac4331c7 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -27,7 +27,12 @@ FNAME(reg, op, s, i): ;\
+ #define ASAN_MEMORY_ACCESS_INITIAL_CHECK_ADD(reg, op, s) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000   ;\
+         movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d ;\
++        .else                                       ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11      ;\
++        movsbl (%r10,%r11),%r10d                    ;\
++        .endif                                      ;\
+         test   %r10d,%r10d ;\
+         jne    CLABEL(reg, op, s, add) ;\
+ RLABEL(reg, op, s, add): ;\
diff --git a/devel/llvm16/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6 b/devel/llvm16/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
new file mode 100644
index 000000000000..424e5f9eeea3
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
@@ -0,0 +1,32 @@
+From 966d564e43e650b9c34f9c67829d3947f52add91 Mon Sep 17 00:00:00 2001
+From: Dan McGregor <dan.mcgregor@usask.ca>
+Date: Sun, 24 Dec 2023 22:37:35 -0600
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ redux (#76185)
+
+Similar to b9935bb02a50, but also apply a similar change to
+ACCESS_CHECK_ADD.
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq` and the register offset variant of cmp.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index e44587ac4331c7..9c5289856d8ae6 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -89,7 +89,12 @@ ENDF
+ #define ASAN_MEMORY_ACCESS_CHECK_ADD(reg, op, s, c) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000  ;\
+         ##c    $0x0,ASAN_SHADOW_OFFSET_CONST(%r10) ;\
++        .else                                      ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11     ;\
++        ##c    $0x0,(%r10,%r11)                    ;\
++        .endif                                     ;\
+         jne    FLABEL(reg, op, s, add) ;\
+         retq  ;\
+ 
diff --git a/devel/llvm16/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d b/devel/llvm16/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
new file mode 100644
index 000000000000..58ff453d8a06
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
@@ -0,0 +1,31 @@
+From 68744ffbdd7daac41da274eef9ac0d191e11c16d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
+Date: Thu, 10 Aug 2023 11:09:36 +0300
+Subject: [PATCH] [lldb] Fix building with latest libc++
+
+Since https://reviews.llvm.org/D157058 in libc++,
+the base template for char_traits has been removed - it is only
+provided for char, wchar_t, char8_t, char16_t and char32_t.
+(Thus, to use basic_string with a type other than those, we'd need
+to supply suitable traits ourselves.)
+
+For this particular use, a vector works just as well as basic_string.
+
+Differential Revision: https://reviews.llvm.org/D157589
+---
+ .../Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+index 4efc454967a12..f9d95fc5d2a66 100644
+--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
++++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+@@ -631,7 +631,7 @@ static void WriteRegisterValueInHexFixedWidth(
+   } else {
+     // Zero-out any unreadable values.
+     if (reg_info.byte_size > 0) {
+-      std::basic_string<uint8_t> zeros(reg_info.byte_size, '\0');
++      std::vector<uint8_t> zeros(reg_info.byte_size, '\0');
+       AppendHexValue(response, zeros.data(), zeros.size(), false);
+     }
+   }
diff --git a/devel/llvm17/Makefile b/devel/llvm17/Makefile
index c7e7f02ddf95..40ce82ecc6d5 100644
--- a/devel/llvm17/Makefile
+++ b/devel/llvm17/Makefile
@@ -8,11 +8,6 @@ PKGNAMESUFFIX=	${LLVM_SUFFIX}
 DISTNAME=	llvm-project-${DISTVERSION}.src
 DISTFILES=	llvm-project-${DISTVERSION}.src${EXTRACT_SUFX}
 
-PATCH_SITES=	https://github.com/llvm/llvm-project/commit/
-PATCHFILES+=	llvmorg-18-init-1760-g68744ffbdd7d.patch:-p1 # https://reviews.llvm.org/D157589
-PATCHFILES+=	llvmorg-18-init-15199-gb9935bb02a50.patch:-p1 # https://github.com/llvm/llvm-project/pull/75748
-PATCHFILES+=	llvmorg-18-init-15680-g966d564e43e6.patch:-p1 # https://github.com/llvm/llvm-project/pull/76185
-
 MAINTAINER=	brooks@FreeBSD.org
 COMMENT=	LLVM and Clang
 WWW=		https://llvm.org/
diff --git a/devel/llvm17/distinfo b/devel/llvm17/distinfo
index a3690faf6fce..1ae367e96951 100644
--- a/devel/llvm17/distinfo
+++ b/devel/llvm17/distinfo
@@ -1,11 +1,3 @@
-TIMESTAMP = 1722603078
+TIMESTAMP = 1768385988
 SHA256 (llvm-project-17.0.6.src.tar.xz) = 58a8818c60e6627064f312dbf46c02d9949956558340938b71cf731ad8bc0813
 SIZE (llvm-project-17.0.6.src.tar.xz) = 127838860
-SHA256 (llvmorg-18-init-1760-g68744ffbdd7d.patch) = ad9ad1613491f69b010dbbd6a9d90d5dd505e46d9537a6e533f36dacd552d0f7
-SIZE (llvmorg-18-init-1760-g68744ffbdd7d.patch) = 1491
-SHA256 (llvmorg-18-init-2919-g7549cde6bd52.patch) = 3c388e7c79949ba16f8587316cfb5ef7cd4c7e231941b3513e1950260a490e5f
-SIZE (llvmorg-18-init-2919-g7549cde6bd52.patch) = 1737
-SHA256 (llvmorg-18-init-15199-gb9935bb02a50.patch) = b0805cba765084c7bef426fa1235dd887c61ae0c1fd5e3fad5c8742cdd6ee8b0
-SIZE (llvmorg-18-init-15199-gb9935bb02a50.patch) = 1893
-SHA256 (llvmorg-18-init-15680-g966d564e43e6.patch) = 3abf92d4a788ff2f74fa9fc627a113f04d9fb72cd7e47344a8c4dce06140a163
-SIZE (llvmorg-18-init-15680-g966d564e43e6.patch) = 1297
diff --git a/devel/llvm17/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50 b/devel/llvm17/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
new file mode 100644
index 000000000000..2459b80609d7
--- /dev/null
+++ b/devel/llvm17/files/patch-backport-llvmorg-18-init-15199-gb9935bb02a50
@@ -0,0 +1,52 @@
+From b9935bb02a506e9142ae79b6c58303cb2e1ffb08 Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Mon, 18 Dec 2023 13:48:46 -0800
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ (#75748)
+
+Fix #57086: when ASAN_SHADOW_OFFSET_CONST >= 0x80000000 (FreeBSD,
+NetBSD, etc), `movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d` has an
+invalid displacement (not representable as a signed 32-bit integer),
+which will be diagnosed by GNU assembler.
+
+```
+% cat a.s
+movsbl 0x80000000(%r10),%r10d
+% as a.s
+a.s: Assembler messages:
+a.s:1: Error: 0x80000000 out of range of signed 32bit displacement
+% clang -c a.s
+```
+
+The integrated assembler after #75747 will diagnose the invalid
+displacement as well.
+```
+% clang -c a.s
+a.s:1:19: error: displacement 2147483648 is not within [-2147483648, 2147483647]
+movsbl 0x80000000(%r10),%r10d
+                  ^
+```
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq+movsbl`.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index 0b7363018f425f..e44587ac4331c7 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -27,7 +27,12 @@ FNAME(reg, op, s, i): ;\
+ #define ASAN_MEMORY_ACCESS_INITIAL_CHECK_ADD(reg, op, s) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000   ;\
+         movsbl ASAN_SHADOW_OFFSET_CONST(%r10),%r10d ;\
++        .else                                       ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11      ;\
++        movsbl (%r10,%r11),%r10d                    ;\
++        .endif                                      ;\
+         test   %r10d,%r10d ;\
+         jne    CLABEL(reg, op, s, add) ;\
+ RLABEL(reg, op, s, add): ;\
diff --git a/devel/llvm17/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6 b/devel/llvm17/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
new file mode 100644
index 000000000000..424e5f9eeea3
--- /dev/null
+++ b/devel/llvm17/files/patch-backport-llvmorg-18-init-15680-g966d564e43e6
@@ -0,0 +1,32 @@
+From 966d564e43e650b9c34f9c67829d3947f52add91 Mon Sep 17 00:00:00 2001
+From: Dan McGregor <dan.mcgregor@usask.ca>
+Date: Sun, 24 Dec 2023 22:37:35 -0600
+Subject: [PATCH] asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST
+ redux (#76185)
+
+Similar to b9935bb02a50, but also apply a similar change to
+ACCESS_CHECK_ADD.
+
+If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch
+to `movabsq` and the register offset variant of cmp.
+---
+ compiler-rt/lib/asan/asan_rtl_x86_64.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git compiler-rt/lib/asan/asan_rtl_x86_64.S compiler-rt/lib/asan/asan_rtl_x86_64.S
+index e44587ac4331c7..9c5289856d8ae6 100644
+--- compiler-rt/lib/asan/asan_rtl_x86_64.S
++++ compiler-rt/lib/asan/asan_rtl_x86_64.S
+@@ -89,7 +89,12 @@ ENDF
+ #define ASAN_MEMORY_ACCESS_CHECK_ADD(reg, op, s, c) \
+         mov    %##reg,%r10 ;\
+         shr    $0x3,%r10 ;\
++        .if ASAN_SHADOW_OFFSET_CONST < 0x80000000  ;\
+         ##c    $0x0,ASAN_SHADOW_OFFSET_CONST(%r10) ;\
++        .else                                      ;\
++        movabsq $ASAN_SHADOW_OFFSET_CONST,%r11     ;\
++        ##c    $0x0,(%r10,%r11)                    ;\
++        .endif                                     ;\
+         jne    FLABEL(reg, op, s, add) ;\
+         retq  ;\
+ 
diff --git a/devel/llvm17/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d b/devel/llvm17/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
new file mode 100644
index 000000000000..58ff453d8a06
--- /dev/null
+++ b/devel/llvm17/files/patch-backport-llvmorg-18-init-1760-g68744ffbdd7d
@@ -0,0 +1,31 @@
+From 68744ffbdd7daac41da274eef9ac0d191e11c16d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
+Date: Thu, 10 Aug 2023 11:09:36 +0300
+Subject: [PATCH] [lldb] Fix building with latest libc++
+
+Since https://reviews.llvm.org/D157058 in libc++,
+the base template for char_traits has been removed - it is only
+provided for char, wchar_t, char8_t, char16_t and char32_t.
+(Thus, to use basic_string with a type other than those, we'd need
+to supply suitable traits ourselves.)
+
+For this particular use, a vector works just as well as basic_string.
+
+Differential Revision: https://reviews.llvm.org/D157589
+---
+ .../Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+index 4efc454967a12..f9d95fc5d2a66 100644
+--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
++++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+@@ -631,7 +631,7 @@ static void WriteRegisterValueInHexFixedWidth(
+   } else {
+     // Zero-out any unreadable values.
+     if (reg_info.byte_size > 0) {
+-      std::basic_string<uint8_t> zeros(reg_info.byte_size, '\0');
++      std::vector<uint8_t> zeros(reg_info.byte_size, '\0');
+       AppendHexValue(response, zeros.data(), zeros.size(), false);
+     }
+   }


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6967b1b4.cf4b.6bc749c>