Date: Thursday, January 5, 2023 @ 14:13:42
  Author: foutrelis
Revision: 465889

upgpkg: llvm 15.0.6-1

Added:
  llvm/trunk/keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc
Modified:
  llvm/trunk/PKGBUILD
Deleted:
  llvm/trunk/llvm-coroutines-ubsan.patch

-------------------------------------------------------+
 PKGBUILD                                              |   24 -
 keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc |    1 
 llvm-coroutines-ubsan.patch                           |  288 ----------------
 3 files changed, 13 insertions(+), 300 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2023-01-05 14:13:32 UTC (rev 465888)
+++ PKGBUILD    2023-01-05 14:13:42 UTC (rev 465889)
@@ -2,31 +2,31 @@
 # Contributor: Jan "heftig" Steffens <[email protected]>
 
 pkgname=('llvm' 'llvm-libs')
-pkgver=14.0.6
-pkgrel=4
+pkgver=15.0.6
+pkgrel=1
 arch=('x86_64')
 url="https://llvm.org/";
 license=('custom:Apache 2.0 with LLVM Exception')
-makedepends=('cmake' 'ninja' 'libffi' 'libedit' 'ncurses' 'libxml2'
-             'python-setuptools' 'python-psutil' 'python-sphinx'
+makedepends=('cmake' 'ninja' 'zlib' 'zstd' 'libffi' 'libedit' 'ncurses'
+             'libxml2' 'python-setuptools' 'python-psutil' 'python-sphinx'
              'python-recommonmark')
 options=('staticlibs' 'debug' '!lto') # Getting thousands of test failures 
with LTO
 
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
 source=($_source_base/llvm-$pkgver.src.tar.xz{,.sig}
-        llvm-coroutines-ubsan.patch
+        $_source_base/cmake-$pkgver.src.tar.xz{,.sig}
         llvm-config.h)
-sha256sums=('050922ecaaca5781fdf6631ea92bc715183f202f9d2f15147226f023414f619a'
+sha256sums=('0b32199401f27e2e0353846a8c5fbadd77beca2570654fb9ef7ac9b7f26967e3'
             'SKIP'
-            'ee9baf6df05474083857044d92f26f59d3ee709cdf82ba3bdb2792e6645f71d9'
+            '7613aeeaba9b8b12b35224044bc349b5fa45525919625057fa54dc882dcb4c86'
+            'SKIP'
             '597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
-validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard 
<[email protected]>
+validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A'  # Tom Stellard 
<[email protected]>
+              'D574BD5D1D0E98895E3BF90044F2485E45D59042') # Tobias Hieta 
<[email protected]>
 
 prepare() {
+  mv cmake{-$pkgver.src,}
   cd llvm-$pkgver.src
   mkdir build
-
-  # https://github.com/llvm/llvm-project/issues/49689
-  patch -Np2 -i ../llvm-coroutines-ubsan.patch
 }
 
 build() {
@@ -98,7 +98,7 @@
 
 package_llvm-libs() {
   pkgdesc="LLVM runtime libraries"
-  depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses' 'libxml2')
+  depends=('gcc-libs' 'zlib' 'zstd' 'libffi' 'libedit' 'ncurses' 'libxml2')
 
   install -d "$pkgdir/usr/lib"
   cp -P \

Added: keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc
===================================================================
(Binary files differ)

Index: llvm/trunk/keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc
===================================================================
--- keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc       2023-01-05 
14:13:32 UTC (rev 465888)
+++ keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc       2023-01-05 
14:13:42 UTC (rev 465889)

Property changes on: 
llvm/trunk/keys/pgp/D574BD5D1D0E98895E3BF90044F2485E45D59042.asc
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pgp-keys
\ No newline at end of property
Deleted: llvm-coroutines-ubsan.patch
===================================================================
--- llvm-coroutines-ubsan.patch 2023-01-05 14:13:32 UTC (rev 465888)
+++ llvm-coroutines-ubsan.patch 2023-01-05 14:13:42 UTC (rev 465889)
@@ -1,288 +0,0 @@
-From 1030297d77ae5110b7873530f645aeec3a4264ba Mon Sep 17 00:00:00 2001
-From: Yuanfang Chen <[email protected]>
-Date: Mon, 27 Jun 2022 11:33:45 -0700
-Subject: [PATCH 1/2] [ubsan] Using metadata instead of prologue data for
- function sanitizer
-
-Information in the function `Prologue Data` is intentionally opaque.
-When a function with `Prologue Data` is duplicated. The self (global
-value) references inside `Prologue Data` is still pointing to the
-original function. This may cause errors like `fatal error: error in backend: 
Cannot represent a difference across sections`.
-
-This patch detaches the information from function `Prologue Data`
-and attaches it to a function metadata node.
-
-This and D116130 fix https://github.com/llvm/llvm-project/issues/49689.
-
-Reviewed By: pcc
-
-Differential Revision: https://reviews.llvm.org/D115844
-
-(cherry picked from commit 6678f8e505b19069a9dbdc3e3ee088d543752412)
----
- llvm/docs/LangRef.rst                         | 22 ++++++++++++++++++-
- llvm/include/llvm/IR/FixedMetadataKinds.def   |  1 +
- llvm/include/llvm/IR/MDBuilder.h              |  4 ++++
- llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp    | 18 +++++++++++++++
- llvm/lib/IR/MDBuilder.cpp                     |  8 +++++++
- .../Instrumentation/AddressSanitizer.cpp      | 10 ++++-----
- llvm/test/CodeGen/X86/func-sanitizer.ll       | 18 +++++++++++++++
- 7 files changed, 75 insertions(+), 6 deletions(-)
- create mode 100644 llvm/test/CodeGen/X86/func-sanitizer.ll
-
-diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst
-index 920834b10897..a5a84a2f297b 100644
---- a/llvm/docs/LangRef.rst
-+++ b/llvm/docs/LangRef.rst
-@@ -5194,7 +5194,7 @@ multiple metadata attachments with the same identifier.
- 
- A transformation is required to drop any metadata attachment that it does not
- know or know it can't preserve. Currently there is an exception for metadata
--attachment to globals for ``!type`` and ``!absolute_symbol`` which can't be
-+attachment to globals for ``!func_sanitize``, ``!type`` and 
``!absolute_symbol`` which can't be
- unconditionally dropped unless the global is itself deleted.
- 
- Metadata attached to a module using named metadata may not be dropped, with
-@@ -7080,6 +7080,26 @@ Example:
-     %a.addr = alloca float*, align 8, !annotation !0
-     !0 = !{!"auto-init"}
- 
-+'``func_sanitize``' Metadata
-+^^^^^^^^^^^^^^^^^^^^^^^^^
-+
-+The ``func_sanitize`` metadata is used to attach two values for the function
-+sanitizer instrumentation. The first value is the ubsan function signature.
-+The second value is the address of the proxy variable which stores the address
-+of the RTTI descriptor. If :ref:`prologue <prologuedata>` and 
'``func_sanitize``'
-+are used at the same time, :ref:`prologue <prologuedata>` is emitted before
-+'``func_sanitize``' in the output.
-+
-+Example:
-+
-+.. code-block:: text
-+
-+    @__llvm_rtti_proxy = private unnamed_addr constant i8* bitcast ({ i8*, 
i8* }* @_ZTIFvvE to i8*)
-+    define void @_Z3funv() !func_sanitize !0 {
-+      return void
-+    }
-+    !0 = !{i32 846595819, i8** @__llvm_rtti_proxy}
-+
- Module Flags Metadata
- =====================
- 
-diff --git a/llvm/include/llvm/IR/FixedMetadataKinds.def 
b/llvm/include/llvm/IR/FixedMetadataKinds.def
-index 31979cd2f9db..baa7a91cbf56 100644
---- a/llvm/include/llvm/IR/FixedMetadataKinds.def
-+++ b/llvm/include/llvm/IR/FixedMetadataKinds.def
-@@ -42,3 +42,4 @@ LLVM_FIXED_MD_KIND(MD_preserve_access_index, 
"llvm.preserve.access.index", 27)
- LLVM_FIXED_MD_KIND(MD_vcall_visibility, "vcall_visibility", 28)
- LLVM_FIXED_MD_KIND(MD_noundef, "noundef", 29)
- LLVM_FIXED_MD_KIND(MD_annotation, "annotation", 30)
-+LLVM_FIXED_MD_KIND(MD_func_sanitize, "func_sanitize", 31)
-diff --git a/llvm/include/llvm/IR/MDBuilder.h 
b/llvm/include/llvm/IR/MDBuilder.h
-index 42829388b79a..21d7b8b6da71 100644
---- a/llvm/include/llvm/IR/MDBuilder.h
-+++ b/llvm/include/llvm/IR/MDBuilder.h
-@@ -108,6 +108,10 @@ public:
-   /// Merge the new callback encoding \p NewCB into \p ExistingCallbacks.
-   MDNode *mergeCallbackEncodings(MDNode *ExistingCallbacks, MDNode *NewCB);
- 
-+  /// Return metadata feeding to the CodeGen about how to generate a function
-+  /// prologue for the "function" santizier.
-+  MDNode *createRTTIPointerPrologue(Constant *PrologueSig, Constant *RTTI);
-+
-   //===------------------------------------------------------------------===//
-   // AA metadata.
-   //===------------------------------------------------------------------===//
-diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp 
b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
-index 3e8e190eecc3..091f16567a36 100644
---- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
-+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
-@@ -844,6 +844,24 @@ void AsmPrinter::emitFunctionHeader() {
-   // Emit the prologue data.
-   if (F.hasPrologueData())
-     emitGlobalConstant(F.getParent()->getDataLayout(), F.getPrologueData());
-+
-+  // Emit the function prologue data for the indirect call sanitizer.
-+  if (const MDNode *MD = F.getMetadata(LLVMContext::MD_func_sanitize)) {
-+    assert(TM.getTargetTriple().getArch() == Triple::x86 ||
-+           TM.getTargetTriple().getArch() == Triple::x86_64);
-+    assert(MD->getNumOperands() == 2);
-+
-+    auto *PrologueSig = mdconst::extract<Constant>(MD->getOperand(0));
-+    auto *FTRTTIProxy = mdconst::extract<Constant>(MD->getOperand(1));
-+    assert(PrologueSig && FTRTTIProxy);
-+    emitGlobalConstant(F.getParent()->getDataLayout(), PrologueSig);
-+
-+    const MCExpr *Proxy = lowerConstant(FTRTTIProxy);
-+    const MCExpr *FnExp = MCSymbolRefExpr::create(CurrentFnSym, OutContext);
-+    const MCExpr *PCRel = MCBinaryExpr::createSub(Proxy, FnExp, OutContext);
-+    // Use 32 bit since only small code model is supported.
-+    OutStreamer->emitValue(PCRel, 4u);
-+  }
- }
- 
- /// EmitFunctionEntryLabel - Emit the label that is the entrypoint for the
-diff --git a/llvm/lib/IR/MDBuilder.cpp b/llvm/lib/IR/MDBuilder.cpp
-index 35af8490287b..fc59fda9fe22 100644
---- a/llvm/lib/IR/MDBuilder.cpp
-+++ b/llvm/lib/IR/MDBuilder.cpp
-@@ -150,6 +150,14 @@ MDNode *MDBuilder::mergeCallbackEncodings(MDNode 
*ExistingCallbacks,
-   return MDNode::get(Context, Ops);
- }
- 
-+MDNode *MDBuilder::createRTTIPointerPrologue(Constant *PrologueSig,
-+                                             Constant *RTTI) {
-+  SmallVector<Metadata *, 4> Ops;
-+  Ops.push_back(createConstant(PrologueSig));
-+  Ops.push_back(createConstant(RTTI));
-+  return MDNode::get(Context, Ops);
-+}
-+
- MDNode *MDBuilder::createAnonymousAARoot(StringRef Name, MDNode *Extra) {
-   SmallVector<Metadata *, 3> Args(1, nullptr);
-   if (Extra)
-diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp 
b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
-index 8f94172a6402..9d11ef26c1f0 100644
---- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
-+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
-@@ -1405,7 +1405,11 @@ static GlobalVariable 
*createPrivateGlobalForSourceLoc(Module &M,
- /// Check if \p G has been created by a trusted compiler pass.
- static bool GlobalWasGeneratedByCompiler(GlobalVariable *G) {
-   // Do not instrument @llvm.global_ctors, @llvm.used, etc.
--  if (G->getName().startswith("llvm."))
-+  if (G->getName().startswith("llvm.") ||
-+      // Do not instrument gcov counter arrays.
-+      G->getName().startswith("__llvm_gcov_ctr") ||
-+      // Do not instrument rtti proxy symbols for function sanitizer.
-+      G->getName().startswith("__llvm_rtti_proxy"))
-     return true;
- 
-   // Do not instrument asan globals.
-@@ -1414,10 +1418,6 @@ static bool GlobalWasGeneratedByCompiler(GlobalVariable 
*G) {
-       G->getName().startswith(kODRGenPrefix))
-     return true;
- 
--  // Do not instrument gcov counter arrays.
--  if (G->getName() == "__llvm_gcov_ctr")
--    return true;
--
-   return false;
- }
- 
-diff --git a/llvm/test/CodeGen/X86/func-sanitizer.ll 
b/llvm/test/CodeGen/X86/func-sanitizer.ll
-new file mode 100644
-index 000000000000..b8d96a346d0c
---- /dev/null
-+++ b/llvm/test/CodeGen/X86/func-sanitizer.ll
-@@ -0,0 +1,18 @@
-+; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
-+
-+; CHECK: _Z3funv:
-+; CHECK:         .cfi_startproc
-+; CHECK:         .long   846595819
-+; CHECK:         .long   .L__llvm_rtti_proxy-_Z3funv
-+; CHECK: .L__llvm_rtti_proxy:
-+; CHECK:         .quad   i
-+; CHECK:         .size   .L__llvm_rtti_proxy, 8
-+
-+@i = linkonce_odr constant i32 1
-+@__llvm_rtti_proxy = private unnamed_addr constant i32* @i
-+
-+define dso_local void @_Z3funv() !func_sanitize !0 {
-+  ret void
-+}
-+
-+!0 = !{i32 846595819, i32** @__llvm_rtti_proxy}
-
-From 640a28cc0fe12741daa4c22f34b618ad57195528 Mon Sep 17 00:00:00 2001
-From: Yuanfang Chen <[email protected]>
-Date: Mon, 27 Jun 2022 11:36:32 -0700
-Subject: [PATCH 2/2] [Coroutine] Remove the '!func_sanitize' metadata for
- split functions
-
-There is no proper RTTI for these split functions. So just delete the
-metadata.
-
-Fixes https://github.com/llvm/llvm-project/issues/49689.
-
-Reviewed By: rjmccall
-
-Differential Revision: https://reviews.llvm.org/D116130
-
-(cherry picked from commit e2e9e708e5c2c3d5357b4bb355285ef55cd060d9)
----
- llvm/lib/Transforms/Coroutines/CoroSplit.cpp     |  6 ++++++
- llvm/test/Transforms/Coroutines/coro-split-00.ll | 12 +++++++-----
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp 
b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
-index b5129809c6a6..78134fd297da 100644
---- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
-+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
-@@ -923,6 +923,12 @@ void CoroCloner::create() {
-   NewF->setVisibility(savedVisibility);
-   NewF->setUnnamedAddr(savedUnnamedAddr);
-   NewF->setDLLStorageClass(savedDLLStorageClass);
-+  // The function sanitizer metadata needs to match the signature of the
-+  // function it is being attached to. However this does not hold for split
-+  // functions here. Thus remove the metadata for split functions.
-+  if (Shape.ABI == coro::ABI::Switch &&
-+      NewF->hasMetadata(LLVMContext::MD_func_sanitize))
-+    NewF->eraseMetadata(LLVMContext::MD_func_sanitize);
- 
-   // Replace the attributes of the new function:
-   auto OrigAttrs = NewF->getAttributes();
-diff --git a/llvm/test/Transforms/Coroutines/coro-split-00.ll 
b/llvm/test/Transforms/Coroutines/coro-split-00.ll
-index d5c6279a6a87..cf2dc10549e7 100644
---- a/llvm/test/Transforms/Coroutines/coro-split-00.ll
-+++ b/llvm/test/Transforms/Coroutines/coro-split-00.ll
-@@ -1,7 +1,7 @@
- ; Tests that coro-split pass splits the coroutine into f, f.resume and 
f.destroy
- ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | 
FileCheck %s
- 
--define i8* @f() "coroutine.presplit"="1" {
-+define i8* @f() "coroutine.presplit"="1" !func_sanitize !0 {
- entry:
-   %id = call token @llvm.coro.id(i32 0, i8* null, i8* null, i8* null)
-   %need.alloc = call i1 @llvm.coro.alloc(token %id)
-@@ -32,7 +32,7 @@ suspend:
-   ret i8* %hdl
- }
- 
--; CHECK-LABEL: @f(
-+; CHECK-LABEL: @f() !func_sanitize !0 {
- ; CHECK: call i8* @malloc
- ; CHECK: @llvm.coro.begin(token %id, i8* %phi)
- ; CHECK: store void (%f.Frame*)* @f.resume, void (%f.Frame*)** %resume.addr
-@@ -43,7 +43,7 @@ suspend:
- ; CHECK-NOT: call void @free(
- ; CHECK: ret i8* %hdl
- 
--; CHECK-LABEL: @f.resume(
-+; CHECK-LABEL: @f.resume({{.*}}) {
- ; CHECK-NOT: call i8* @malloc
- ; CHECK-NOT: call void @print(i32 0)
- ; CHECK: call void @print(i32 1)
-@@ -51,13 +51,13 @@ suspend:
- ; CHECK: call void @free(
- ; CHECK: ret void
- 
--; CHECK-LABEL: @f.destroy(
-+; CHECK-LABEL: @f.destroy({{.*}}) {
- ; CHECK-NOT: call i8* @malloc
- ; CHECK-NOT: call void @print(
- ; CHECK: call void @free(
- ; CHECK: ret void
- 
--; CHECK-LABEL: @f.cleanup(
-+; CHECK-LABEL: @f.cleanup({{.*}}) {
- ; CHECK-NOT: call i8* @malloc
- ; CHECK-NOT: call void @print(
- ; CHECK-NOT: call void @free(
-@@ -77,3 +77,5 @@ declare i1 @llvm.coro.end(i8*, i1)
- declare noalias i8* @malloc(i32)
- declare void @print(i32)
- declare void @free(i8*) willreturn
-+
-+!0 = !{i32 846595819, i8** null}

Reply via email to