)]}'
{
  "log": [
    {
      "commit": "1a1fc00513f16f8e69d06547937b6bafbd9e5452",
      "tree": "081349639963bfd24bcb9e29793dca097a2f4fe3",
      "parents": [
        "8de3745b05054a97bbb9ca2a5b01deacfe03e0aa"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Aug 14 15:10:12 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 14 06:15:38 2026 -0700"
      },
      "message": "[libc++] Upgrade to GCC 16 (#206235)\n\nThis also removes a few `// UNSUPPORTED: gcc` which are unnecessary as a\ndrive-by.\n\nGitOrigin-RevId: 42a986f70324651426cd7e287580160766fc906f\n"
    },
    {
      "commit": "8de3745b05054a97bbb9ca2a5b01deacfe03e0aa",
      "tree": "8a76f4f77529df6cd42fed2bbd0ff7ee120b6118",
      "parents": [
        "566be3e2080b3861706492cd8769490e7d1b1f27"
      ],
      "author": {
        "name": "Zaara Syeda",
        "email": "syzaara@ca.ibm.com",
        "time": "Wed Aug 12 08:14:40 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 12 05:15:24 2026 -0700"
      },
      "message": "[libc++abi] Prevent zero-capacity PODSmallVector (#215386)\n\nRequire PODSmallVector to have a non-zero inline capacity.\nPODSmallVector\u003cT, 0\u003e can reach reserve(0) when growing from\nan empty vector, leaving the capacity at zero. Add a static_assert\nrequiring N \u003e 0 to prevent this unsupported configuration.\n\nGitOrigin-RevId: 6ea395e4fe4db26920d57779ddae98eac6ba945d\n"
    },
    {
      "commit": "566be3e2080b3861706492cd8769490e7d1b1f27",
      "tree": "3addb2da3fc9aecd47269476a0e520cab8e0ae26",
      "parents": [
        "5d028abaea7461b7fa56549a98365ff933df7dcb"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Aug 07 10:46:47 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 07 01:50:35 2026 -0700"
      },
      "message": "[libc++][libc++abi] Merge the operator new implementations into a shared file (#213427)\n\nInstead of copying the code around we can simply share a file that\nactually implements operator new/delete and include that file in the two\nplaces that need the definitions.\n\nGitOrigin-RevId: c7259fcd5f8713aa96e50fec24b95abec3478d81\n"
    },
    {
      "commit": "5d028abaea7461b7fa56549a98365ff933df7dcb",
      "tree": "dfa7dbc1a8d03da9a49a05a7f06bd5a73ccbf09d",
      "parents": [
        "f33722073c545e256b71517c16c5ceb8a2694868"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Wed Aug 05 05:59:21 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 03:00:51 2026 -0700"
      },
      "message": "[runtimes] Remove override of LLVM_ENABLE_PER_TARGET_RUNTIME_DIR on Darwin (#213748)\n\nIt should be possible to produce a per-target include directory even on\nApple platforms. That\u0027s not the way we ship the library by default, but\nthere\u0027s no reason not to allow selecting that configuration.\n\nGitOrigin-RevId: b5c9e1b7bd50ef79fdfa91a7f2292f30889a2fa3\n"
    },
    {
      "commit": "f33722073c545e256b71517c16c5ceb8a2694868",
      "tree": "ff53caacd463a267985f15a12eaa73c327bfebfd",
      "parents": [
        "7f292fc4f19f2a16a1102d02efcb78efab59c872"
      ],
      "author": {
        "name": "Michael G. Kazakov",
        "email": "mike.kazakov@gmail.com",
        "time": "Wed Aug 05 09:20:21 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 05 01:25:15 2026 -0700"
      },
      "message": "[libc++] Add InsertNewlineAtEOF\u003dTrue to .clang-format (#214078)\n\nNewline at the end of a file is a standard convention in the `libc++`\ncodebase, but it\u0027s not enforced via `clang-format`.\nCurrent PR enables this check:\n\nhttps://clang.llvm.org/docs/ClangFormatStyleOptions.html#insertnewlineateof\n\nGitOrigin-RevId: a5b9b6900655feea616ee2337920b85709d9757d\n"
    },
    {
      "commit": "7f292fc4f19f2a16a1102d02efcb78efab59c872",
      "tree": "6dfb11392fcc10695df44a41fc7d5aaced05e337",
      "parents": [
        "c5d5b14bcad2a41c777878190ed5493ceeb59dfd"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Aug 04 10:47:58 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 04 01:51:22 2026 -0700"
      },
      "message": "[libc++abi][NFC] Enable modernize-loop-convert clang-tidy check (#213250)\n\nGitOrigin-RevId: a44620dad09537ba10d22e241c6f2ba011c65bea\n"
    },
    {
      "commit": "c5d5b14bcad2a41c777878190ed5493ceeb59dfd",
      "tree": "e304e9173cbeedbee9a3b91c40d57020c01a67a9",
      "parents": [
        "b72296c4a64668d28146c7ac778767578ff8430e"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Aug 04 10:46:55 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 04 01:51:12 2026 -0700"
      },
      "message": "[libc++abi][NFC] Enable modernize-use-override clang-tidy check (#213253)\n\nGitOrigin-RevId: 62ec1d0f53114cfafb0c111321dd4217f2972de8\n"
    },
    {
      "commit": "b72296c4a64668d28146c7ac778767578ff8430e",
      "tree": "e75d5c8836bdb54b5f1c55ea7af010fd512ea2d6",
      "parents": [
        "0b523d4cf4f82f4a151315f2b4b664b8d052c2b9"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Jul 31 13:26:27 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 31 04:31:01 2026 -0700"
      },
      "message": "[libc++abi] Add a clang-tidy config and test (#207324)\n\nThis essentially copies the `.clang-tidy` file from libc++ into\nlibc++abi, except that the naming conventions are updated to not add\nunderscores and some checks are disabled that don\u0027t pass currently. They\nwill be fixed in follow-ups.\n\nGitOrigin-RevId: 3a809f644c863a17ac665e19d7dcbf7209688d18\n"
    },
    {
      "commit": "0b523d4cf4f82f4a151315f2b4b664b8d052c2b9",
      "tree": "a1d3ece57defaa4e97b69ead39cfc53f6d12d561",
      "parents": [
        "5a295eb383ca85cce4b144319e87d93b2a23208c"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Thu Jul 30 14:10:29 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 30 05:15:56 2026 -0700"
      },
      "message": "[libc++abi] Use the same .clang-format as libc++ (#208661)\n\nlibc++abi is very close to libc++, and even shares some amount of code.\nWe should keep the formatting style the same between the two libraries.\n\nGitOrigin-RevId: e7b04d7b58941cc9173930871a18d149f0b8a432\n"
    },
    {
      "commit": "5a295eb383ca85cce4b144319e87d93b2a23208c",
      "tree": "131c2d3094943203a283cb8984a6d5812c3351b5",
      "parents": [
        "cb11e25ed62a52997586e985a22ffee8c3f322b4"
      ],
      "author": {
        "name": "Demetrius Kanios",
        "email": "demetrius@kanios.net",
        "time": "Tue Jul 28 20:05:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 28 20:10:30 2026 -0700"
      },
      "message": "[WebAssembly] Call EH personality function instead of `Unwind_CallPersonality` (#209282)\n\nOn Wasm, it\u0027s not currently possibly to change which `personality` is\nattached to a given IR function. This is primarily because no matter\nwhat `personality` is attached, codegen creates a call to a\n`Unwind_CallPersonality` wrapper hard-coded to call c++abi\u0027s\npersonality.\n\nIn order to allow alternative personalities without introducing bloat at\neach personality call site, this PR adjusts the ABI of the personality\non Wasm. `Unwind_CallPersonality` is moved to `libcxxabi` under the name\n`__gxx_wasm_personality_v0`, with the \"real\" personality code renamed\n`__gxx_personality_imp` and called by `__gxx_wasm_personality_v0` (after\nresetting the landing pad context).\n\nThe signature of EH personalities on Wasm is now `int personality(void*\nexception_object)` (where the int return is `_Unwind_Reason_Code` and\nthe `void*` is `_Unwind_Exception*`), and personalities are expected to\n`__wasm_lpad_context.selector \u003d 0;`.\n\nBased on #175202\n\nGitOrigin-RevId: 1d4e04f7a7c2669dd652861e7dccc22f67ab3355\n"
    },
    {
      "commit": "cb11e25ed62a52997586e985a22ffee8c3f322b4",
      "tree": "e7daa2d65226bc1b9084faf7448eae6251b36008",
      "parents": [
        "a47310d5cbd7acb2e74ee4c53de790661d736137"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Sun Jul 26 16:19:32 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jul 26 07:20:18 2026 -0700"
      },
      "message": "[libc++abi][NFC] Remove some XFAILs which never trigger (#211241)\n\nThe oldest library we support is from LLVM 12, so we can remove any\nXFAILs for libraries built before that.\n\nGitOrigin-RevId: 9d601915fb9d3f4e6f7ee6e369ddff7fc20ad08d\n"
    },
    {
      "commit": "a47310d5cbd7acb2e74ee4c53de790661d736137",
      "tree": "93fbbb6f439ccb899d108b4cd4c4073fcd15ed54",
      "parents": [
        "cfabc570f3bd8c9a67726fb1f56ceecc2d7e2526"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Wed Jul 22 12:38:40 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 22 09:40:44 2026 -0700"
      },
      "message": "[runtimes] LLVM 24 version bumps (#211262)\n\nThis patch bumps the version of libc++abi and libunwind, and libc++ in\nthe documentation.\n\nGitOrigin-RevId: 743f03189fa76a5daf8211f00f98e81f18e6ecfb\n"
    },
    {
      "commit": "cfabc570f3bd8c9a67726fb1f56ceecc2d7e2526",
      "tree": "7b5e3a774e8e1dc3b5545612fca458065dd64653",
      "parents": [
        "009b9391e40b4c966e1a8fba0ff509f0a5c0fc25"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Thu Jul 16 05:15:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 16 05:20:20 2026 -0700"
      },
      "message": "[libc++] Partially revert #208330 (#209928)\n\nWe found out that the new mechanism for detecting overriden functions\ndoes not support Arm Pointer Authentication (PAuth). Addressing this\nlimitation is going to require changes to Clang. In the meantime, we\nswitched back to the old mechanism when PAuth is enabled.\n\nGitOrigin-RevId: db7356dde8312a86e79ec0d7b7f844878a1a743c\n"
    },
    {
      "commit": "009b9391e40b4c966e1a8fba0ff509f0a5c0fc25",
      "tree": "fc878862474c3230c49b4f602e6e72e93540ee7c",
      "parents": [
        "b767f02d62bd37ed908e222cd2302d5bf1a48fa8"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Wed Jul 15 09:58:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 15 10:00:38 2026 -0700"
      },
      "message": "[libcxx][libc] update LLVM-libc test status (#201236)\n\nThis update removes some unnecessary carveouts, marks some newly\nXFAILing tests, and unmarks some now passing tests.\n\nWith this change the status of tests is:\nTotal Discovered Tests: 11471\n  Unsupported      : 2098 (18.29%)\n  Passed           : 9260 (80.73%)\n  Expectedly Failed:  113 (0.99%)\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 0cf914adef4b0f1f5251354b91f5c709b95b1b1e\n"
    },
    {
      "commit": "b767f02d62bd37ed908e222cd2302d5bf1a48fa8",
      "tree": "56c9598658b9bb2450c0a505be2a332b44c028bf",
      "parents": [
        "ed71cfa0681c87d29aa32c05489335b2dc75078c"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Tue Jul 14 00:15:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 14 00:20:33 2026 -0700"
      },
      "message": "[libcxx][libcxxabi] Remove OVERRIDABLE_FUNCTION macro (#209323)\n\nThis is no longer needed, we can just use [[gnu::weak]] attribute.\n\nGitOrigin-RevId: 6c6ecb376a940d16e17dae2d40dc076466898860\n"
    },
    {
      "commit": "ed71cfa0681c87d29aa32c05489335b2dc75078c",
      "tree": "d902c06646c4421a491e021f383b0328c5bdc6df",
      "parents": [
        "dc50e56ab77024c1f63aa6bfc70b1859749bc0c5"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Jul 10 15:47:09 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 10 06:50:05 2026 -0700"
      },
      "message": "[libc++abi][NFC] Use C++11 spelling of [[noreturn]] (#207344)\n\nWe already use the C++11 spelling for libc++, and there isn\u0027t much of a\nreason not to use it. Except for the changes in `cxxabi.h` this is even\nfully standard code.\n\nGitOrigin-RevId: d6ef81ce4e18563c49116fc82502e4ef237a201d\n"
    },
    {
      "commit": "dc50e56ab77024c1f63aa6bfc70b1859749bc0c5",
      "tree": "892531743bd7a911b2a974ebc9ff965b9938097f",
      "parents": [
        "be8f1b335c09bc4104e4ccba65f6a9c72db9dbc3"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Tue Jul 07 16:16:36 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 07 06:20:35 2026 -0700"
      },
      "message": "[libcxxabi] Don\u0027t enable -fvisibility\u003dhidden on Windows (#207943)\n\nThis option is supported (and hence gets added by the\ntarget_add_compile_flags_if_supported function) on Windows, but if using\ndllexport, there\u0027s no point in using hidden visibility. (However if\nbuilding both static and shared libraries at the same time, it could be\nbeneficial to have hidden visibilty in the static libraries.)\n\nIn asserts enabled builds of Clang, building with -fvisibility\u003dhidden\ncaused errors like this:\n\n    dllexport GlobalValue must have default or protected visibility\n    ptr @_ZTIv\n    [...]\n    fatal error: error in backend: Broken module found, compilation aborted!\n\nNormally, combining -fvisibility\u003dhidden with dllexport is not a problem,\nbut specifically for `__cxxabiv1:: __fundamental_type_info` it does make\nClang trigger an inconsistency, visible in asserts enabled builds of\nClang - see https://github.com/llvm/llvm-project/issues/207963.\n\nThis fixes Windows builds with Clang with asserts enabled, after\ncb942d009a5ed029ce20d9b75b3604f551f0cb56.\n\nGitOrigin-RevId: 5343b204252d7bf5bdfcacd664e78e9f7f9fd745\n"
    },
    {
      "commit": "be8f1b335c09bc4104e4ccba65f6a9c72db9dbc3",
      "tree": "44335ea930206a87f27e0fdb4e2eb71bee866133",
      "parents": [
        "e7ef3b778b44287403f67574728444c99a889cd4"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Mon Jul 06 09:35:11 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jul 06 00:40:50 2026 -0700"
      },
      "message": "[libc++abi] Always enable -fvisibility\u003dhidden (#207333)\n\nBuilding with `-fvisibility\u003dhidden` is generally a good idea, since it\navoids unnecessary relocations when loading a dylib. For libc++abi this\nshould be a no-op, since most things are annotated explicitly. By\nenabling `-fvisibility\u003dhidden` we can remove these explicit annotations\nhowever.\n\nGitOrigin-RevId: cb942d009a5ed029ce20d9b75b3604f551f0cb56\n"
    },
    {
      "commit": "e7ef3b778b44287403f67574728444c99a889cd4",
      "tree": "4f962ca90a1566d4287754fc70c1a2c9692a3963",
      "parents": [
        "5c801ab8f6cf19bab8c02a99d5204b8b9f4e8d14"
      ],
      "author": {
        "name": "aokblast",
        "email": "aokblast@FreeBSD.org",
        "time": "Mon Jul 06 01:35:18 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jul 05 10:40:39 2026 -0700"
      },
      "message": "[libcxxabi] Re-enable `thread_local_destruction_order.pass.cpp‎` on FreeBSD (#186129)\n\nThe underlying bug has been fixed in https://reviews.freebsd.org/D55826.\n\nGitOrigin-RevId: 4a02e116e58d162335cf18b4f1f28c7d34d6d3ac\n"
    },
    {
      "commit": "5c801ab8f6cf19bab8c02a99d5204b8b9f4e8d14",
      "tree": "dc419323b4116f4f83dc125230282f9ebed35449",
      "parents": [
        "bbdd48788f2e1ee47edc1679ef8aa6830980bc00"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Jul 03 20:41:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jul 03 11:44:10 2026 -0700"
      },
      "message": "[libc++abi][NFC] Avoid out parameter in dyn_cast_get_derived_info (#207326)\n\nReturning the object is much more idiomatic than having an out\nparameter.\n\nGitOrigin-RevId: cbb277a718bd9a8ee28df177f42313cda00cb3f6\n"
    },
    {
      "commit": "bbdd48788f2e1ee47edc1679ef8aa6830980bc00",
      "tree": "3fd4b6e286893f95e7166fa01b932b76ad1daa4b",
      "parents": [
        "b4b89219be9b3c1e2cf556ac96e872d346d146dd"
      ],
      "author": {
        "name": "Matt Arsenault",
        "email": "Matthew.Arsenault@amd.com",
        "time": "Wed Jul 01 12:50:29 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 01 03:55:14 2026 -0700"
      },
      "message": "[runtimes][NFC] Re-indent shared library blocks (#205523)\n\nRe-indent the shared library target blocks that were wrapped in\nif(\u003cruntime\u003e_SUPPORTS_SHARED_LIBRARY) in the previous commit. This is a\nwhitespace-only change split out from the functional change to keep that\ndiff minimal and reviewable.\n\nCo-authored-by: Claude (Opus 4.8) \u003cnoreply@anthropic.com\u003e\nGitOrigin-RevId: 6a909d68627ff6027777186699ff8fd54ae6e668\n"
    },
    {
      "commit": "b4b89219be9b3c1e2cf556ac96e872d346d146dd",
      "tree": "df4ff73b1203fb13a862c37b2bfbe66dcf8e7688",
      "parents": [
        "1e1def3e483e5f6c4b6849b8240f2e88607780c9"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Mon Jun 29 11:16:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 29 11:21:14 2026 -0700"
      },
      "message": "[CMake] Warn when the version of CMake is older than 3.31.0 (#204203)\n\nThis is a preparation to raise the minimum required CMake version to\n3.31.0 in LLVM 24.\n\nSee\nhttps://discourse.llvm.org/t/rfc-raising-minimum-required-cmake-version-to-3-31/91086.\n\nGitOrigin-RevId: e192ec42b426f6ffbc25419238a90f3c59088587\n"
    },
    {
      "commit": "1e1def3e483e5f6c4b6849b8240f2e88607780c9",
      "tree": "1994771dee0b33f501a54b82e30b1d5cfcc9a45d",
      "parents": [
        "c1887c2dffafd75a2b6d229150051cf54713eecb"
      ],
      "author": {
        "name": "Matt Arsenault",
        "email": "Matthew.Arsenault@amd.com",
        "time": "Mon Jun 29 17:53:09 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 29 08:55:35 2026 -0700"
      },
      "message": "[runtimes] Don\u0027t create shared library targets when unsupported (#205517)\n\nOn platforms that don\u0027t support shared libraries (e.g. CMAKE_SYSTEM_NAME\nof \"Generic\", used for GPU and other baremetal targets), CMake\u0027s\nPlatform/Generic.cmake sets the global TARGET_SUPPORTS_SHARED_LIBS\nproperty to FALSE. Under CMP0164\u0027s OLD behavior (the default, since the runtimes\nset cmake_minimum_required(3.20)), CMake silently demotes SHARED library\ntargets to STATIC archives. libcxx, libcxxabi and libunwind always create their\nshared target, so after demotion both the shared and static targets emit e.g.\n\"libc++abi.a\" and Ninja fails with \"multiple rules generate ...\".\n\nRather than papering over the collision with a distinct output name,\nskip creating the shared library targets entirely when the platform does not\nsupport them, gating on the TARGET_SUPPORTS_SHARED_LIBS property (left\nundefined on platforms that do support shared libraries). The few consumers of\nthe shared targets are guarded with TARGET checks so they fall back to the static\nlibrary or are skipped.\n\nAlso set policy CMP0164 to NEW so that any future unguarded\nadd_library(... SHARED ...) on an unsupported platform fails at\nconfigure time instead of silently producing a colliding static archive.\n\nSee https://gitlab.kitware.com/cmake/cmake/-/issues/25759.\n\nThe bodies of the newly-conditional blocks are left at their original\nindentation to keep this diff minimal. A follow-up commit will fix the\nindentation. This was mostly AI generated with some comment fixups.\n\nCo-authored-by: Claude (Opus 4.8) \u003cnoreply@anthropic.com\u003e\nGitOrigin-RevId: 885ef9daac3570ddfdd20cc82296eeae5b2c6613\n"
    },
    {
      "commit": "c1887c2dffafd75a2b6d229150051cf54713eecb",
      "tree": "e73f6d1d5a650230684447da5c0398999540633d",
      "parents": [
        "e7d6ce5dd89c1c54cdf1948bde86fe8330746cbd"
      ],
      "author": {
        "name": "Daniel Rank",
        "email": "dwrank@gmail.com",
        "time": "Fri Jun 26 13:53:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 26 13:55:30 2026 -0700"
      },
      "message": "[libc++abi] Fix alternate deletions in exhaustion tests (#193130)\n\nFixes #192773\n\nGitOrigin-RevId: 7b8b8ff3ffe5aa57ec7a8513d4f0a3a97d188878\n"
    },
    {
      "commit": "e7d6ce5dd89c1c54cdf1948bde86fe8330746cbd",
      "tree": "c24abb589e7f629dea19727c19836dff762fdeb9",
      "parents": [
        "a726d913bcd1a71b1fe2d5b0d70016e8100914df"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Thu Jun 25 09:11:33 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 25 00:16:47 2026 -0700"
      },
      "message": "[libc++] Enable clang-tidy in the CI again (#195047)\n\nclang-tidy currently doesn\u0027t run in the CI because CMake doesn\u0027t find\nthe appropriate `ClangConfig.cmake` anymore. This adds the path so\nclang-tidy is built again and fixes most issues. Some things are\ndisabled for now to get most checks back. They will be re-enabled later.\n\nGitOrigin-RevId: 44546e0e32077241ca9a9a90ac57f2f086f9488a\n"
    },
    {
      "commit": "a726d913bcd1a71b1fe2d5b0d70016e8100914df",
      "tree": "6e6ad55f320c8ef2c62dce3ae33ca769e9f105ad",
      "parents": [
        "b47576017396a02a357e513d9afda4d652b32600"
      ],
      "author": {
        "name": "Fabrice de Gans",
        "email": "Steelskin@users.noreply.github.com",
        "time": "Thu Jun 11 09:48:04 2026 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 11 02:50:52 2026 -0700"
      },
      "message": "[Demangle] Guard DEMANGLE_ABI and add missing annotation (#202920)\n\nThis updates the DEMANGLE_ABI annotation to only be defined if it is not\nalready defined. This is required to parse the Demangle headers with the\nids-check script.\nIn addition, this adds one missing DEMANGLE_ABI annotation.\n\nThis effort is tracked in #109483.\n\nGitOrigin-RevId: 8210a58044d1e6d86473fdf810396d285c86ff36\n"
    },
    {
      "commit": "b47576017396a02a357e513d9afda4d652b32600",
      "tree": "0c40ffd89faa4a555837c6687c25955ea7db23f5",
      "parents": [
        "bffb2dee65f9b350545d20e1be4e64b3106830b1"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Wed Jun 10 10:37:56 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 10 01:41:12 2026 -0700"
      },
      "message": "[libc++] Fill in Apple availability for LLVM 21 (#202347)\n\nmacOS 26.4 and aligned platforms have been released and they are roughly\nsynchronized to libc++ 21. As a drive-by, also add missing versions for\nprevious releases.\n\nThis also allows reverting #199682 which moved an XFAIL to UNSUPPORTED\nto silence CI failures temporarily.\n\nGitOrigin-RevId: d602a9343a0e5db98548e360370cebb02bfd421c\n"
    },
    {
      "commit": "bffb2dee65f9b350545d20e1be4e64b3106830b1",
      "tree": "c1c81d8c28d61314462d88cf6f559065f6ba89ce",
      "parents": [
        "51a59d7bb7ae40650b41cc59d8aa8d99de423044"
      ],
      "author": {
        "name": "Corentin Jabot",
        "email": "corentinjabot@gmail.com",
        "time": "Fri May 15 16:50:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 15 07:56:10 2026 -0700"
      },
      "message": "[Clang] Mangling of pack indexing type and expression for itanium (#123513)\n\nSee  https://github.com/itanium-cxx-abi/cxx-abi/pull/198\nand #112003\n\nGitOrigin-RevId: 68e8dd698dc6ac96f26d9144bd3117f2bc6bca49\n"
    },
    {
      "commit": "51a59d7bb7ae40650b41cc59d8aa8d99de423044",
      "tree": "0b41d3f93f344ed86c7d59eba12a99535cdff4f7",
      "parents": [
        "9ec73b8fbfe9ce60ecfd08b6dd692cf9d7a10eec"
      ],
      "author": {
        "name": "Jackson Stogel",
        "email": "jtstogel@gmail.com",
        "time": "Wed Apr 29 08:28:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 29 08:30:19 2026 -0700"
      },
      "message": "[libc++abi][libc][test] Use LLVM-libc headers in LLVM-libc config (#194665)\n\nGitOrigin-RevId: f78419c36b24b8f5fbf2fef94880e8fab0f355e4\n"
    },
    {
      "commit": "9ec73b8fbfe9ce60ecfd08b6dd692cf9d7a10eec",
      "tree": "1336287316c0cbbea97034b8acbcaa4cda21e739",
      "parents": [
        "340d6b50a483033b7da733c04723f0c58424c974"
      ],
      "author": {
        "name": "Khem Raj",
        "email": "khem.raj@oss.qualcomm.com",
        "time": "Mon Apr 27 00:35:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 27 00:41:13 2026 -0700"
      },
      "message": "libcxxabi: declare __gnu_unwind_frame in cxa_personality (#189787)\n\nARM EHABI builds of libcxxabi fail with clang-22+ because\ncxa_personality.cpp calls __gnu_unwind_frame without a visible\ndeclaration, triggering:\n\n  error: use of undeclared identifier \u0027__gnu_unwind_frame\u0027\n\nAdd an extern \"C\" forward declaration before the EHABI unwind helper so\nthe source compiles correctly.\n\nSigned-off-by: Khem Raj \u003ckhem.raj@oss.qualcomm.com\u003e\nGitOrigin-RevId: 8119f1854948b50358bbfaea08f207f51970f06c\n"
    },
    {
      "commit": "340d6b50a483033b7da733c04723f0c58424c974",
      "tree": "80969951bb6ec66d80b9a2da0041c063878c1052",
      "parents": [
        "cbfd95b26e5c9597bafbe7260e04e219bceabe47"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "aidengrossman@google.com",
        "time": "Thu Apr 23 10:15:04 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 23 10:20:55 2026 -0700"
      },
      "message": "[libcxx] Add Testing Configuration for LLVM libc\n\nThis patch adds a CMake cache, and the testing configs to build libc++\nand run the tests against LLVM libc.\n\nReviewers: ldionne, philnik777, jtstogel\n\nPull Request: https://github.com/llvm/llvm-project/pull/165120\n\nGitOrigin-RevId: f650fba569c41637bf7bec8ed0e89bbb13bf3812\n"
    },
    {
      "commit": "cbfd95b26e5c9597bafbe7260e04e219bceabe47",
      "tree": "59da0aafd2939b97b2a53aaa6088757112765bdc",
      "parents": [
        "68282ed08d373233218c3d564e2182bb4e08aabd"
      ],
      "author": {
        "name": "Marco Elver",
        "email": "elver@google.com",
        "time": "Wed Apr 22 17:57:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 22 09:01:15 2026 -0700"
      },
      "message": "[ItaniumDemangle] Strip __alloc_token_ to transparently demangle allocation functions (#191048)\n\nUpdate the Itanium demangler to recognize and strip `__alloc_token_`\nprefixes introduced by AllocToken instrumentation [1]. This ensures that\ninstrumented allocation functions (e.g., `__alloc_token__Znwm`) demangle\nback to their original source-level names (e.g., `operator new(unsigned\nlong)`) with a suffix `(.alloc_token)` indicating their non-standard\norigin.\n\nSince AllocToken is intended to be transparent to users who continue to\nuse `operator new` as before, the demangled name should reflect this\nreality instead of confusing users with internal instrumentation names\nin stack traces or symbolization output.\n\nSynchronize changes across llvm and libcxxabi copies.\n\n[1] https://clang.llvm.org/docs/AllocToken.html\n\nOriginal RFC: https://discourse.llvm.org/t/rfc-a-framework-for-allocator-partitioning-hints/87434\n\nGitOrigin-RevId: fb6f1bde00c4ed3650bd1152607718a95ca0ce6d\n"
    },
    {
      "commit": "68282ed08d373233218c3d564e2182bb4e08aabd",
      "tree": "5bf2de50e18447345a34ab2389264d3919da895b",
      "parents": [
        "0205a4dc0342cb23cc022ab25b2e99c71fa34840"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Mon Apr 20 16:08:36 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 20 07:11:37 2026 -0700"
      },
      "message": "[libc++] Update to Clang 21 as the oldest supported version (#186062)\n\nGitOrigin-RevId: 5d98f79f52dd56750e826eb6efcd8b5cf41de239\n"
    },
    {
      "commit": "0205a4dc0342cb23cc022ab25b2e99c71fa34840",
      "tree": "509e71622f19c5e488780b93406c2f0e4ea99364",
      "parents": [
        "7f223a87dea1c9194c82b4dd20af6bb1f879655d"
      ],
      "author": {
        "name": "Michael Kruse",
        "email": "llvm-project@meinersbur.de",
        "time": "Thu Apr 02 12:32:14 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 02 03:35:03 2026 -0700"
      },
      "message": "[Runtimes] Introduce variables containing resource dir paths (#177953)\n\nIntroduce common infrastructure for runtimes that determines compiler\nresource path locations. These variables introduced are:\n\n * RUNTIMES_OUTPUT_RESOURCE_DIR\n * RUNTIMES_INSTALL_RESOURCE_PATH\n\nThat contain the location for the compiler resource path (typically\n`lib/clang/\u003cversion\u003e`) in the build tree and the install tree (the\nlatter relative to CMAKE_INSTALL_PREFIX).\n\nAdditionally, define\n\n * RUNTIMES_OUTPUT_RESOURCE_LIB_DIR\n * RUNTIMES_INSTALL_RESOURCE_LIB_PATH\n\nas for the location of clang/flang version-locked libraries (typically\n`lib${LLVM_LIBDIR_SUFFIX}/\u003ctarger-triple\u003e`, but also depends on `APPLE`\nand `LLVM_ENABLE_PER_TARGET_RUNTIME_DIR`). This code is moved from\nflang-rt and initially becomes its only user.\n\nRefactored out of #171610 as requested\n[here](https://github.com/llvm/llvm-project/pull/171610#discussion_r2687382481).\n\nExtracted `get_runtimes_target_libdir_common` from compiler-rt as\nrequested\n[here](https://github.com/llvm/llvm-project/pull/171610#discussion_r2689565634).\n\nAdded TODO comments to all runtimes as requested\n[here](https://github.com/llvm/llvm-project/pull/171610#issuecomment-3789598635).\n\nGitOrigin-RevId: afb80bddf147c134c5e3cf3f357f8d00bdfd526c\n"
    },
    {
      "commit": "7f223a87dea1c9194c82b4dd20af6bb1f879655d",
      "tree": "fbfa82be1b781ce7d9db7b3c133c437e26ef81cd",
      "parents": [
        "8fba8aabfc20a4b7e420946b0b58816adeb3b9ec"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Mar 25 15:51:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Mar 25 15:54:56 2026 -0700"
      },
      "message": "Prepare libcxx and libcxxabi for pointer field protection.\n\nPointer field protection has the following characteristics:\n\n- Pointer fields in RTTI types are unsigned. Signing these fields\n  is unnecessary because PFP is a mechanism for protecting the heap,\n  and the RTTI objects typically live in global variables. Therefore,\n  mark the fields with the no_field_protection to inhibit PFP for these\n  fields.\n\n- libcxx\u0027s interim trivial relocatability implementation, which memcpy\u0027s\n  some non-trivially-copyable objects according to the value of a trait,\n  conflicts with PFP in tagged mode (in which the address of the pointer\n  is used as part of the pointer encoding) by causing such copies to\n  result in a crash in some cases where the object being copied includes\n  a pointer field. These copies are undefined behavior. Therefore, make\n  libcxx\u0027s trivially relocatable predicate simply return the value of\n  the trivially copyable trait when PFP in tagged mode is enabled, which\n  results in standards compliant behavior that is accommodated by PFP.\n\nReviewers: philnik777, fmayer, ldionne\n\nPull Request: https://github.com/llvm/llvm-project/pull/151651\n\nGitOrigin-RevId: f3274a496c7f80ff95170c1f78fdad48f95e67bd\n"
    },
    {
      "commit": "8fba8aabfc20a4b7e420946b0b58816adeb3b9ec",
      "tree": "fe07af5f00f5455ffe30cce1918b191cd82d4094",
      "parents": [
        "795dd84bd2259f997159f88fc6a9c865b82bcb9c"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Jan 20 12:51:43 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 20 03:53:31 2026 -0800"
      },
      "message": "[libc++] Remove _LIBCPP_CONSTINIT (#171802)\n\n`_LIBCPP_CONSTINIT` is only ever used inside `src/`, so we can just\nreplace it with `constinit` instead.\n\nGitOrigin-RevId: 67cf9b8f827e816ada6dbbee3a4f0cdb7c1d0595\n"
    },
    {
      "commit": "795dd84bd2259f997159f88fc6a9c865b82bcb9c",
      "tree": "0045cce8b7b42faf9f4116079b29115fd9650674",
      "parents": [
        "3a38a1fa41b8c980c496d6014d36c9610ccd9788"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Mon Jan 19 16:46:13 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jan 19 13:50:48 2026 -0800"
      },
      "message": "[libc++abi] Remove old workaround for detecting libunwind (#176009)\n\nThis workaround should no longer be relevant since we don\u0027t support\nbuilding against libunwind headers from LLVM 14.\n\nGitOrigin-RevId: e02c79a85ac31446a0022a15a3247599c928bef4\n"
    },
    {
      "commit": "3a38a1fa41b8c980c496d6014d36c9610ccd9788",
      "tree": "7a5cf6603c991c49c69c7a76a6cfd77871ac5780",
      "parents": [
        "f24f3e0d42e4e8a58fa09d2b1e030a237a72727f"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Wed Jan 14 13:39:02 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jan 14 10:40:48 2026 -0800"
      },
      "message": "[runtimes] Post-branch tasks for the LLVM 23 release (#176007)\n\nThis performs most of the post-branch tasks to start working on the LLVM\n23 release. Things that are left to do:\n- Update the unicode version\n- Update CI versions and supported compiler versions\n\nGitOrigin-RevId: ec983ad611fa15890fdcf5c3066e938b5b154459\n"
    },
    {
      "commit": "f24f3e0d42e4e8a58fa09d2b1e030a237a72727f",
      "tree": "f16534902a3eedded84a46befffb1ffa9b82eafa",
      "parents": [
        "05ea9d685ce686131f250daf6a1be4e083bad1f9"
      ],
      "author": {
        "name": "willmafh",
        "email": "willmafh@hotmail.com",
        "time": "Wed Jan 14 16:12:26 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jan 14 00:15:01 2026 -0800"
      },
      "message": "[NFC] Exactly one kind typo fixes, change defintions to definitions. (#174333)\n\nGitOrigin-RevId: c705003e8c36c481b8ecfe2af38f03c4fbfa0e0c\n"
    },
    {
      "commit": "05ea9d685ce686131f250daf6a1be4e083bad1f9",
      "tree": "fa164d46b658eee14a74510c72d9d211c590e673",
      "parents": [
        "9c16be67d05b4a0ac283ec8bae8c5724ae1def05"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Jan 13 11:21:52 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 13 02:25:34 2026 -0800"
      },
      "message": "[libc++] Replace uses of _LIBCPP_WEAK with [[gnu::weak]] (#171798)\n\nUsing `_LIBCPP_WEAK` doesn\u0027t give us anything that using `[[gnu::weak]]`\ndirectly couldn\u0027t, so we can just expand the macro.\nAs a drive-by this also refactors `_LIBCPP_OVERRIDABLE_FUNCTION`.\n\nGitOrigin-RevId: f0054a48966e684df26e589f2fc803932e03aba4\n"
    },
    {
      "commit": "9c16be67d05b4a0ac283ec8bae8c5724ae1def05",
      "tree": "94710f22902acbff4e7e0be6a617ebb56bf569f3",
      "parents": [
        "e26cbaaa3f4085465245b3acdb03511aa2b33aec"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Jan 09 12:07:42 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jan 09 03:10:39 2026 -0800"
      },
      "message": "[libc++][NFC] Refactor _LIBCPP_OVERRIDABLE_FUNCTION to be a normal attribute macro (#174964)\n\nCurrently `_LIBCPP_OVERRIDABLE_FUNCTION` takes the return type, function\nname and argument list, but simply constructs the function and adds\nattributes without modifying the signature in any way. We can replace\nthis with a normal attribute macro, making the signature easier to read\nand simpler to understand what\u0027s actually going on. Since it\u0027s an\ninternal macro we can also drop the `_LIBCPP_` prefix.\n\nGitOrigin-RevId: a5cab90071fbf6f700c95c337d850845ccc9ed9b\n"
    },
    {
      "commit": "e26cbaaa3f4085465245b3acdb03511aa2b33aec",
      "tree": "a8e55727cc6fa788b748f856c5d25c292f7ffacd",
      "parents": [
        "faf4e66b94046c3c5bba7108199706f4a5d1896d"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Fri Jan 09 11:58:29 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jan 09 03:01:16 2026 -0800"
      },
      "message": "[libc++] Introduce the notion of a minimum header version (#166074)\n\nIntroducing the notion of a minimum header version has multiple\nbenefits. It allows us to merge a bunch of ABI macros into a single one.\nThis makes configuring the library significantly easier, since, for a\nstable ABI, you only need to know which version you started distributing\nthe library with, instead of checking which ABI flags have been\nintroduced at what point. For platforms which have a moving window of\nthe minimum version a program has been compiled against, this also makes\nit simple to remove symbols from the dylib when they can\u0027t be used by\nany program anymore.\n\nGitOrigin-RevId: 484ee42096f8deeb084c8b36548d09c12b33cde0\n"
    },
    {
      "commit": "faf4e66b94046c3c5bba7108199706f4a5d1896d",
      "tree": "1b7bb5a08312fe2f454867b8c044f46e0b3f3205",
      "parents": [
        "ff0097a7841b7443ee9a82234d4634f92f20ec80"
      ],
      "author": {
        "name": "willmafh",
        "email": "willmafh@hotmail.com",
        "time": "Sun Jan 04 20:02:40 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:06:30 2026 -0800"
      },
      "message": "[NFC] Delete unnecessary apostrophe at the end of its (#173974)\n\nGitOrigin-RevId: 2eb8ee137f28e46a1711a28b6575083dafba7c8e\n"
    },
    {
      "commit": "ff0097a7841b7443ee9a82234d4634f92f20ec80",
      "tree": "9ee0db2dc07c59a4ea0c492bae323ebef8e22c5b",
      "parents": [
        "96f81a7535f2a1f4ce4be9a562ba81b06f9c571e"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Dec 16 11:25:07 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:06:24 2026 -0800"
      },
      "message": "[libc++] Enable -Wmissing-prototypes (#116261)\n\nGitOrigin-RevId: 3c100d5d548d511d09746dd5a2fee29bdd00805c\n"
    },
    {
      "commit": "96f81a7535f2a1f4ce4be9a562ba81b06f9c571e",
      "tree": "63eed58f0937ba832a2195cd848f9f53ef8ecea9",
      "parents": [
        "f841282bbe90e21089f06e138dfa8a9125c0e66f"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Fri Dec 12 12:09:11 2025 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:06:16 2026 -0800"
      },
      "message": "[runtimes] Remove dependencies on cxx_experimental for test-suite installs (#171678)\n\nThis patch removes explicit dependencies on cxx_experimental for\ninstallations that are local to the test suite. Such dependencies\nare not required anymore from the test-suite installation targets\nsince the proper dependency is now encoded between cxx and\ncxx_experimental.\n\nGitOrigin-RevId: 4ffd373e3853ebc00fb339611e215deab682a54c\n"
    },
    {
      "commit": "f841282bbe90e21089f06e138dfa8a9125c0e66f",
      "tree": "503cb9e43990ff4d9406019ad653100b9ac9526b",
      "parents": [
        "c3fc78fbfbce55a99ad863e273365ae737c5be82"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Thu Dec 11 09:10:54 2025 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:06:07 2026 -0800"
      },
      "message": "[libc++] Simplify how we install test-suite dependencies (#171504)\n\nBased on comments in #171474, it was brought to my attention that we can\nmodernize and simplify how we perform the test suite installation in\nlibc++ and libc++abi.\n\nGitOrigin-RevId: f582fc649178931694d6e360ec79e8c1fe8a0d0b\n"
    },
    {
      "commit": "c3fc78fbfbce55a99ad863e273365ae737c5be82",
      "tree": "5b3ac7d473b6f8ccbe7c7aaa2c0ea7c63ebeb0e8",
      "parents": [
        "171353d67cf83b2525706bbb003d5390368619bd"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Thu Dec 11 09:09:37 2025 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:06:01 2026 -0800"
      },
      "message": "[runtimes] Modernize installation targets (#171677)\n\nThis patch moves away from using cmake_install scripts to install the\nvarious targets when building runtimes, since those have been deprecated\nby CMake. Instead, we use `cmake --install` which is the prefered\nmethod.\n\nThis patch also localizes how we set dependencies on the various\ninstallation targets, allowing the removal of a few global variables\nthat were used as lists.\n\nFinally, it makes the way we set up installation targets for libc++,\nlibc++abi and libunwind consistent again.\n\nGitOrigin-RevId: a9fadb3ed4fba28d031a4bc72de8f3fc15c08072\n"
    },
    {
      "commit": "171353d67cf83b2525706bbb003d5390368619bd",
      "tree": "eddc55517099869ccdecdfb004d63890af973562",
      "parents": [
        "2693ebd7687125018314debe710f5fc9ac0f388e"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Mon Nov 24 22:36:13 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:05:54 2026 -0800"
      },
      "message": "[libc++][NFC] Move __memory/aligned_alloc.h into src/ (#166172)\n\nThis header is only ever used inside `src/`, so we might as well move it\nthere. As a drive-by this also removes some dead code.\n\nGitOrigin-RevId: 3dcdb4c7658fb955d61fde5bd5232bdeadfc7eeb\n"
    },
    {
      "commit": "2693ebd7687125018314debe710f5fc9ac0f388e",
      "tree": "8030c412a3b585b28468288ab174758f00ade7ce",
      "parents": [
        "8d9e4b7feb6084a3d9d037210a395affd7424347"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Wed Nov 12 10:12:13 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:05:48 2026 -0800"
      },
      "message": "[libc++abi] Add a test to ensure the abi namespace alias is declared correctly (#167485)\n\nGitOrigin-RevId: a8e058a590842d745106cdffc74a7020c0f85cd4\n"
    },
    {
      "commit": "8d9e4b7feb6084a3d9d037210a395affd7424347",
      "tree": "b08eae43e1424facbbf5b1d9b0a309a7c8cea99a",
      "parents": [
        "6eb5bcc43a721b74b85fae062436431cb48d885b"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Mon Nov 10 20:04:26 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:05:41 2026 -0800"
      },
      "message": "[libc++abi][NFC] Remove some cruft from \u003c__cxxabi_config.h\u003e (#164578)\n\nIn `\u003c__cxxabi_config.h\u003e` there were a few things still around which\naren\u0027t ever actually used. This removes some of that cruft.\n\nGitOrigin-RevId: 46a8ddbd1494812474502de5f9841492225c28a1\n"
    },
    {
      "commit": "6eb5bcc43a721b74b85fae062436431cb48d885b",
      "tree": "b3635d5eab512d0c9fd6e1bfa687e4786f5df68d",
      "parents": [
        "6226762fcb35b945e741d4bf6c17a7fb1fbe9626"
      ],
      "author": {
        "name": "Raul Tambre",
        "email": "raul@tambre.ee",
        "time": "Sat Nov 08 22:20:13 2025 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:05:33 2026 -0800"
      },
      "message": "[libc++abi][libunwind] Enable AT\u0026T syntax explicitly (#166818)\n\nImplementation files using the Intel syntax typically explicitly specify\nit. Do the same for the few files where applicable for AT\u0026T.\n\nThis enables building LLVM with `-mllvm -x86-asm-syntax\u003dintel` in one\u0027s\nClang config files (i.e. a global preference for Intel syntax).\n\nGitOrigin-RevId: afc83688cfadfb07c1cd9edc4f3c855d7cf4a261\n"
    },
    {
      "commit": "6226762fcb35b945e741d4bf6c17a7fb1fbe9626",
      "tree": "876360554d915fc5c37a57521cb182554371fa06",
      "parents": [
        "aa764fc858ec4f7f4317bcc895c5323a879f3715"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Fri Nov 07 07:52:03 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jan 04 04:05:25 2026 -0800"
      },
      "message": "[libcxxabi][ItaniumDemangle] Separate GtIsGt counter into more states (#166578)\n\nCurrently `OutputBuffer::GtIsGt` is used to tell us if we\u0027re inside\ntemplate arguments and have printed a \u0027(\u0027 without a closing \u0027)\u0027. If so,\nwe don\u0027t need to quote \u0027\u003c\u0027 when printing it as part of a binary\nexpression inside a template argument. Otherwise we need to. E.g.,\n```\nfoo\u003ca\u003c(b \u003c c)\u003e\u003e // Quotes around binary expression needed.\n```\n\nLLDB\u0027s `TrackingOutputBuffer` has heuristics that rely on checking\nwhether we are inside template arguments, regardless of the current\nparentheses depth. We\u0027ve been using `isGtInsideTemplateArgs` for this,\nbut that isn\u0027t correct. Resulting in us incorrectly tracking the\nbasename of function like:\n```\nvoid func\u003c(foo::Enum)1\u003e()\n```\nHere `GtIsGt \u003e 0` despite us being inside template arguments (because we\nincremented it when seeing \u0027(\u0027).\n\nThis patch adds a `isInsideTemplateArgs` API which LLDB will use to more\naccurately track parts of the demangled name.\n\nTo make sure this API doesn\u0027t go untested in the actual libcxxabi\ntest-suite, I changed the existing `GtIsGt` logic to use it. Also\nrenamed the various variables/APIs involved to make it (in my opinion)\nmore straightforward to understand what\u0027s going on. But happy to rename\nit back if people disagree.\n\nAlso adjusted LLDB to use the newly introduced API (and added a\nunit-test that would previously fail).\n\nGitOrigin-RevId: 54c9ddddd1da353b0303df1e86cf444c5363733d\n"
    },
    {
      "commit": "aa764fc858ec4f7f4317bcc895c5323a879f3715",
      "tree": "8742e81983db96c241efd132523fe95d708715ca",
      "parents": [
        "2112679894fedafe9c5f447ad77ef524b926f8a0"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Wed Nov 05 17:48:47 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Nov 05 09:50:41 2025 -0800"
      },
      "message": "[libcxxabi][demangle] Fix the cp-to-llvm.sh sync script to copy all headers (#166572)\n\nIn https://github.com/llvm/llvm-project/pull/137947 I refactored the\nscript and added a `copy_files` function, which takes the header files\nto copy as an argument.\n\nBut because the list of headers is a space separated string, we need to\nquote the string. Otherwise we would just copy the first header in the\nlist.\n\nThis patch also adds an `echo` statement in the `copy_files` loop to\nprint the source/destination. Confirming that the files are copied as\nexpected.\n```\n$ libcxxabi/src/demangle/cp-to-llvm.sh\nThis will overwrite the copies of ItaniumDemangle.h ItaniumNodes.def StringViewExtras.h Utility.h in ../../../llvm/include/llvm/Demangle and DemangleTestCases.inc in ../../../llvm/include/llvm/Demangle/../Testing/Demangle; are you sure? [y/N]y\nCopying ./ItaniumDemangle.h to ../../../llvm/include/llvm/Demangle/ItaniumDemangle.h\nCopying ./ItaniumNodes.def to ../../../llvm/include/llvm/Demangle/ItaniumNodes.def\nCopying ./StringViewExtras.h to ../../../llvm/include/llvm/Demangle/StringViewExtras.h\nCopying ./Utility.h to ../../../llvm/include/llvm/Demangle/Utility.h\nCopying ../../test/DemangleTestCases.inc to ../../../llvm/include/llvm/Demangle/../Testing/Demangle/DemangleTestCases.inc\n```\n\nLuckily there weren\u0027t any out-of-sync changes introduced in the\nmeantime.\n\nGitOrigin-RevId: d49c6707d07389e4bccdb23951dc9d3bc20996b1\n"
    },
    {
      "commit": "2112679894fedafe9c5f447ad77ef524b926f8a0",
      "tree": "5fb845ddb81b08dd06b451911e0e550b4a662254",
      "parents": [
        "b98f665cd1894687836187fbddcfdd07f7a177e0"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "aidengrossman@google.com",
        "time": "Mon Nov 03 04:41:26 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Nov 02 20:45:21 2025 -0800"
      },
      "message": "[libcxxabi] Update demangle/Utility.h\n\n4eed68357e4361b3a3aeb349dec2612cfb74c8cc updated the LLVM side but did\nnot bump the libc++abi version. Bump the libc++abi version to fix the\ntest failure caused by the versions differing.\n\nGitOrigin-RevId: c946b96d9bca595888535bcc0499fc1ea6a42192\n"
    },
    {
      "commit": "b98f665cd1894687836187fbddcfdd07f7a177e0",
      "tree": "49ef40090e54e5ab7701dd17a8a3012603394941",
      "parents": [
        "422c1814067ed91dcf0850f3104c3b2a10664706"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Sun Nov 02 17:24:30 2025 -0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Nov 02 17:25:50 2025 -0800"
      },
      "message": "[libc++] Add availability markup for LLVM 19 and LLVM 20 (#140072)\n\nAn LLVM 19-aligned libc++ was released with macOS 15.4 (and corresponding OSes),\nand LLVM-20 aligned with macOS 26.0. This patch adds availability markup to\nreflect that.\n\nGitOrigin-RevId: 3252e11da3ac990732d02d1a881b6544d81fe955\n"
    },
    {
      "commit": "422c1814067ed91dcf0850f3104c3b2a10664706",
      "tree": "43754f3e1175ac160b048c31d973995367b1011b",
      "parents": [
        "9e715ac3511f6f0424751f9405078425dd20e6f0"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Thu Oct 30 08:50:33 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 30 08:55:39 2025 -0700"
      },
      "message": "[libc++] Fix localization failures on macOS 15.4 (#138744)\n\nThis patch reverts e15025dd and 88e15b781 which were temporary measures\nuntil we had figured out the underlying issues. It turns out that recent\nOSes updated localization data, removing the need for several Apple-specific\nworkarounds in the tests.\n\nFixes #135385\n\nGitOrigin-RevId: a98295dbcf500a21ea10e2124b6521a3124da643\n"
    },
    {
      "commit": "9e715ac3511f6f0424751f9405078425dd20e6f0",
      "tree": "c93f13436c12e4955aa3ab8c936983656951332c",
      "parents": [
        "cd8af2164266179509e3e1c354f1a9013c319c28"
      ],
      "author": {
        "name": "Oliver Hunt",
        "email": "oliver@apple.com",
        "time": "Mon Oct 20 09:57:45 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 20 10:01:01 2025 -0700"
      },
      "message": "[runtimes][PAC] Harden unwinding when possible (#143230)\n\nThis hardens the unwinding logic and datastructures on systems\nthat support pointer authentication.\n\nThe approach taken to hardening is to harden the schemas of as many\nhigh value fields in the myriad structs as possible, and then also\nexplicitly qualify local variables referencing privileged or security\ncritical values.\n\nThis does introduce ABI linkage between libcxx, libcxxabi, and\nlibunwind but those are in principle separate from the OS itself\nso we\u0027ve kept the schema definitions in the library specific headers\nrather than ptrauth.h\n\nGitOrigin-RevId: e6a1aff5916447630e9ec0e8a90594ca1ee7a1be\n"
    },
    {
      "commit": "cd8af2164266179509e3e1c354f1a9013c319c28",
      "tree": "2967158edc42f87816995afdba4a6b72e1ae020c",
      "parents": [
        "683c5d6b7770487594a238435f275b2fb8cdf95e"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "aidengrossman@google.com",
        "time": "Thu Oct 09 16:52:42 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 09 16:55:56 2025 -0700"
      },
      "message": "[libcxx] Use %{temp} instead of %T (#162323)\n\nBased on review feedback in #160026.\n\nThis makes the substitution a lot more clear now that there is no\ndocumentation around %T.\n\n---------\n\nCo-authored-by: Louis Dionne \u003cldionne.2@gmail.com\u003e\nGitOrigin-RevId: 0c2913afc82a683d82f16f09442d49b1fb25ca67\n"
    },
    {
      "commit": "683c5d6b7770487594a238435f275b2fb8cdf95e",
      "tree": "29eecb2f7bc9398f10ba27ac32e9e39f3270b739",
      "parents": [
        "0f9760323ec3187ac2f75933550c15d298434b76"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Thu Oct 09 09:00:20 2025 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 09 06:02:36 2025 -0700"
      },
      "message": "[runtimes][NFC] Consistently declare main() functions in tests (#162548)\n\nIn the libc++ test suite, we consistently declare main() functions with\nfull parameters and explicitly return from the function. This helps code\nthat compiles the tests with -ffreestanding, where main() is not a\nspecial function (with an implicit return and special mangling).\n\nThis patch fixes a few stray declarations, including in libunwind and\nlibc++abi.\n\nGitOrigin-RevId: 4f80c064eb2933c00c0ba9b7826aa3631cf3b5c2\n"
    },
    {
      "commit": "0f9760323ec3187ac2f75933550c15d298434b76",
      "tree": "6cb33bdff5eb1c7d7613a4b5c668e3c09b4148a1",
      "parents": [
        "8380c02259455bedf0416043f010852e18c77bd4"
      ],
      "author": {
        "name": "David Spickett",
        "email": "david.spickett@linaro.org",
        "time": "Mon Sep 15 09:20:58 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Sep 15 01:25:57 2025 -0700"
      },
      "message": "[libcxx][CI] Use lld for everything in the ARM picolib builds (#158320)\n\nOur host compiler is a clang install that will default to ld if not told\notherwise.\n\nWe were telling meson to use lld, but the way that we did it was\noutdated, which lead to picolib producing a linker script that lld could\nnot use. The tests were in fact linking with ld instead.\n\nUsing the `c_ld` setting fixes this problem. See:\nhttps://mesonbuild.com/Machine-files.html#binaries\n\nThen to use lld in tests we need `-fuse-ld\u003dlld` in the config files.\n\nSome of these options were not needed for clang 19.1.7, but were for\nclang 21.1.1. We will soon update to 21.1.1 so I have included all of\nthe required options in this PR.\n\nGitOrigin-RevId: e85926545e6313fd3c5c6147e82db42132c389ac\n"
    },
    {
      "commit": "8380c02259455bedf0416043f010852e18c77bd4",
      "tree": "edfa3bbcc52b77b7e87d1e0fe781e3463deb8df4",
      "parents": [
        "a7cd4dde79d88d3c7540c2f61dffe811c6e95edb"
      ],
      "author": {
        "name": "David Tenty",
        "email": "daltenty@ibm.com",
        "time": "Wed Aug 20 12:45:41 2025 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 20 09:50:49 2025 -0700"
      },
      "message": "[NFC][CMake] quote ${CMAKE_SYSTEM_NAME} consistently (#154537)\n\nA CMake change included in CMake 4.0 makes `AIX` into a variable\n(similar to `APPLE`, etc.)\nhttps://gitlab.kitware.com/cmake/cmake/-/commit/ff03db6657c38c8cf992877ea66174c33d0bcb0b\n\nHowever, `${CMAKE_SYSTEM_NAME}` unfortunately also expands exactly to\n`AIX` and `if` auto-expands variable names in CMake. That means you get\na double expansion if you write:\n\n`if (${CMAKE_SYSTEM_NAME}  MATCHES \"AIX\")`\nwhich becomes:\n`if (AIX  MATCHES \"AIX\")`\nwhich is as if you wrote:\n`if (ON MATCHES \"AIX\")`\n\nYou can prevent this by quoting the expansion of \"${CMAKE_SYSTEM_NAME}\",\ndue to policy\n[CMP0054](https://cmake.org/cmake/help/latest/policy/CMP0054.html#policy:CMP0054)\nwhich is on by default in 4.0+. Most of the LLVM CMake already does\nthis, but this PR fixes the remaining cases where we do not.\n\nGitOrigin-RevId: 63195d3d7a8bde05590f91a38398f986bb4265b2\n"
    },
    {
      "commit": "a7cd4dde79d88d3c7540c2f61dffe811c6e95edb",
      "tree": "f5e7f05fe30a6a7d6fd63ec9c171d6826a88dd8e",
      "parents": [
        "ca3e3ac3c5916b3c91f739f494177afa8d4a1956"
      ],
      "author": {
        "name": "Konstantin Varlamov",
        "email": "varconsteq@gmail.com",
        "time": "Tue Jul 29 00:19:15 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 29 00:20:16 2025 -0700"
      },
      "message": "[libc++][hardening] Introduce assertion semantics. (#149459)\n\nAssertion semantics closely mimic C++26 Contracts evaluation semantics.\nThis brings our implementation closer in line with C++26 Library Hardening\n(one particular benefit is that using the `observe` semantic makes adopting\nhardening easier for projects).\n\nGitOrigin-RevId: 3eee9fc2c4d1973904b1a26fa96a8c7473ef6a5e\n"
    },
    {
      "commit": "ca3e3ac3c5916b3c91f739f494177afa8d4a1956",
      "tree": "479f096804ad4c135d0915b3dfd10559384e3a96",
      "parents": [
        "788d49cebc3ab80a3697a99845847832e49d353f"
      ],
      "author": {
        "name": "Andrew Rogers",
        "email": "andrurogerz@gmail.com",
        "time": "Thu Jul 24 03:50:16 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 24 03:52:05 2025 -0700"
      },
      "message": "[llvm] annotate interfaces in Demangle for DLL export (#147564)\n\n## Purpose\n\nThis patch is one in a series of code-mods that annotate LLVM’s public\ninterface for export. This patch annotates the `Demangle` interface with\na new `DEMANGLE_ABI` annotation, which behaves like the `LLVM_ABI`. This\nannotation currently has no meaningful impact on the LLVM build;\nhowever, it is a prerequisite to support an LLVM Windows DLL (shared\nlibrary) build.\n\n## Overview\n\n1. Add a new `Demangle/Visibility.h` header file that defines a new\n`DEMANGLE_ABI` macro. The macro resolves to the proper DLL export/import\nannotation on Windows and a \"default\" visibility annotation elsewhere.\n2. Add a new `LLVM_ENABLE_DEMANGLE_EXPORT_ANNOTATIONS ` `#cmakedefine`\nthat is used to gate the definition of `DEMANGLE_ABI`.\n3. Code-mod annotate the public `Demangle` interface using the\n[Interface Definition Scanner (IDS)](https://github.com/compnerd/ids)\ntool.\n4. Manually fix-up `#include` statements for consistency.\n5. Format the changes with `clang-format`.\n6. Add a \"stub\" version of `Visibility.h` under `libcxxabi/src/demangle`\nthat always defines `DEMANGLE_ABI` to nothing.\n7. Update the canonical `libcxxabi/src/demangle/ItaniumDemangle.h`\ninstead of the llvm copy, and run `cp-to-llvm.sh` to ensure the llvm\ncopy matches. NOTE: we rely on `ccp-to-llvm.sh` not copying\n`Visibillity.h` as is already the case for `DemangleConfig.h`.\n\n## Background\n\nThis PR follows the pattern established with the `llvm-c` changes made\nin #141701.\n\nThis effort is tracked in #109483. Additional context is provided in\n[this\ndiscourse](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307),\nand documentation for `LLVM_ABI` and related annotations is found in the\nLLVM repo\n[here](https://github.com/llvm/llvm-project/blob/main/llvm/docs/InterfaceExportAnnotations.rst).\n\n## Validation\n\nLocal builds and tests to validate cross-platform compatibility. This\nincluded llvm, clang, and lldb on the following configurations:\n\n- Windows with MSVC\n- Windows with Clang\n- Linux with GCC\n- Linux with Clang\n- Darwin with Clang\n\n---------\n\nCo-authored-by: Louis Dionne \u003cldionne.2@gmail.com\u003e\nGitOrigin-RevId: 04f5198e3ecb5592cec3297a782b8179f95434bf\n"
    },
    {
      "commit": "788d49cebc3ab80a3697a99845847832e49d353f",
      "tree": "2078c04be763191d8d90291ad4e64f9a877ceada",
      "parents": [
        "fcc092302e188d24c1001fca7aafbe704cf999c3"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Jul 15 12:43:37 2025 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 15 03:45:24 2025 -0700"
      },
      "message": "Revert \"[libc++][hardening] Introduce assertion semantics\" (#148822)\n\nReverts llvm/llvm-project#148268\n\nIt looks like this was based on #148266, which I reverted in #148787.\n\nGitOrigin-RevId: 339a1f2e8f5c8f6a55e3f801e55c659bd526956c\n"
    },
    {
      "commit": "fcc092302e188d24c1001fca7aafbe704cf999c3",
      "tree": "fb9d3c5fef99b1e3f0192746ce2cefaa25d204a7",
      "parents": [
        "cfe1dae700e1881e354650a404d0dc525b08496e"
      ],
      "author": {
        "name": "Konstantin Varlamov",
        "email": "varconsteq@gmail.com",
        "time": "Tue Jul 15 02:14:30 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jul 15 02:15:44 2025 -0700"
      },
      "message": "[libc++][hardening] Introduce assertion semantics (#148268)\n\nAssertion semantics closely mimic C++26 Contracts evaluation semantics.\nThis brings our implementation closer in line with C++26 Library\nHardening (one particular benefit is that using the `observe` semantic\nmakes adopting hardening easier for projects).\n\nGitOrigin-RevId: 7345508c6febc57eaac985ef2fb14beabdc4d461\n"
    },
    {
      "commit": "cfe1dae700e1881e354650a404d0dc525b08496e",
      "tree": "2078c04be763191d8d90291ad4e64f9a877ceada",
      "parents": [
        "8d3a1576756b5c0c9cd717e89216b8b2c1d2c0cf"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Wed Jul 09 00:48:50 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jul 09 00:50:47 2025 -0700"
      },
      "message": "[libcxxabi][libunwind] Support for using LLVM libc (#134893)\n\nThis generalizes the support added in #99287 renaming the option to\nRUNTIMES_USE_LIBC and integrating the module into libc++abi and\nlibunwind as well.\n\nGitOrigin-RevId: 9d3b60dea7ad81f6cb0d9f2e51bb6c80c03fa2d4\n"
    },
    {
      "commit": "8d3a1576756b5c0c9cd717e89216b8b2c1d2c0cf",
      "tree": "c495c4c4a8fc12c4c5eb3e204b53b1353d4289ce",
      "parents": [
        "ff5af4f7c59b3e74c4722011223125144fbcf313"
      ],
      "author": {
        "name": "Raul Tambre",
        "email": "raul@tambre.ee",
        "time": "Thu Jul 03 12:07:25 2025 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jul 03 02:09:05 2025 -0700"
      },
      "message": "[libcxxabi][cmake] Account for LIBCXXABI_TARGET_SUBDIR in test config (#138527)\n\nThis makes the logic and code structure match that of libc++, which handles this case (i.e. the target subdirectory being changed).\nThe `%{target}` substitution from libc++ is removed as libc++abi\u0027s config seems to be the only place it\u0027s used.\n\nGitOrigin-RevId: 431507db52c8836f326f40f6ef6328bbf3c7bbd4\n"
    },
    {
      "commit": "ff5af4f7c59b3e74c4722011223125144fbcf313",
      "tree": "ce2b2b4cbdbca97187d6bcfdc02f6b059db97783",
      "parents": [
        "a479518a13bd3f86dd37cce0fc7b9c58dd0ebcf4"
      ],
      "author": {
        "name": "Larry Meadows",
        "email": "lmeadows@amd.com",
        "time": "Wed Jun 25 12:06:11 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 25 12:10:31 2025 -0700"
      },
      "message": "[libc++abi] Fix C++ demangling for _BitInt type (#143466)\n\nThe front-end expects _BitInt to be available for substitution; ensure DB\u003cn\u003e is\nadded to Subs in ItaniumDemangle.h. Also add a test case to libc++abi and\nsync the files to llvm/include/llvm.\n\nGitOrigin-RevId: 20f56d140909a01c74e9981835373eaab6021af9\n"
    },
    {
      "commit": "a479518a13bd3f86dd37cce0fc7b9c58dd0ebcf4",
      "tree": "acb4553d4d09838c6ad2e6231a299d9f47db4bdd",
      "parents": [
        "653c910ea54e9667b4dd68a0a83a071dae179e27"
      ],
      "author": {
        "name": "tynasello-google",
        "email": "tynasello@google.com",
        "time": "Thu Jun 12 08:39:28 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 12 08:40:45 2025 -0700"
      },
      "message": "[libc++] Expand Android libc++ test config files (#142846)\n\nParameterize (and rename) existing libc++/libc++abi test configuration\nfiles for the Android NDK to work for both the NDK and platform.\n\nAndroid LLVM downstream seeks to test libc++ for both the NDK and\nplatform build (currently only testing the NDK), which will use almost\nidentical test configuration files. The only difference is the name of\nthe libc++ shared object used. Because of this we parameterize the\ncurrent test files (for both libc++ and libc++abi) with the existing\nLIBCXX_SHARED_OUTPUT_NAME cmake variable, and rename the file\naccordingly.\n\nGitOrigin-RevId: 13fe07d670e8a115929c9e595c4490ef5c75f583\n"
    },
    {
      "commit": "653c910ea54e9667b4dd68a0a83a071dae179e27",
      "tree": "53f4533816cad9829ea8af4dc17615333f8abc9f",
      "parents": [
        "d3958b13c64431747fdcc6d7e2c530e5ab5c7b43"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Wed Jun 11 20:19:26 2025 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 11 11:20:45 2025 -0700"
      },
      "message": "[libc++] Upgrade to GCC 15 (#138293)\n\nGitOrigin-RevId: 42c82fcc29c1c8e19b2265495a5d8f59fb5ea764\n"
    },
    {
      "commit": "d3958b13c64431747fdcc6d7e2c530e5ab5c7b43",
      "tree": "8a1e51e9fa86c5a5dc20865b8a1678ea46db57d5",
      "parents": [
        "5e561013c4bd09737af873b8fa08d3242c80d8f3"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Sat May 31 21:18:54 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 31 13:20:48 2025 -0700"
      },
      "message": "[libcxxabi][test] Check that all copied files are synced between llvm and libcxxabi (#142262)\n\nThis patch expands the list of files we check to all the ones that are\ncopied via `cp-to-llvm.sh`.\n\nGitOrigin-RevId: 061ef3c6e22722c31986182e14a5b9c0a117c661\n"
    },
    {
      "commit": "5e561013c4bd09737af873b8fa08d3242c80d8f3",
      "tree": "3e63d34b962254826e5da9ab1712912aad192adb",
      "parents": [
        "e0fd8e75bd8afa9af23cb4f802ffa8f6133eb6c2"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Fri May 30 19:56:50 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 30 11:59:03 2025 -0700"
      },
      "message": "[ItaniumDemangle][test] Factor demangler test-cases into file and sync into LLVM (#137947)\n\nThis patch turns the `libcxxabi/test/test_demangle.pass.cpp` into gtest\nunit-tests in `llvm/unittests/Demangle`. The main motivation for this is\nhttps://github.com/llvm/llvm-project/pull/137793, where we want to\nre-use the test-cases from the ItaniumDemangler to test our OutputBuffer\nimplementation.\n\n`libcxxabi/test/test_demangle.pass.cpp` now only tests the\n`__cxa_demangle` API surface, not the underlying ItaniumDemangle\nimplementation.\n\nGitOrigin-RevId: f7e172da4caeab9d92f6e97501b1a2c561e616c1\n"
    },
    {
      "commit": "e0fd8e75bd8afa9af23cb4f802ffa8f6133eb6c2",
      "tree": "f15902187e66b04720e4f1fbc9156439f84705ee",
      "parents": [
        "51051df787ff6f13a8ed137f5971f5f5978cbf7a"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "aidengrossman@google.com",
        "time": "Tue May 27 23:40:26 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 27 16:46:18 2025 -0700"
      },
      "message": "[libcxxabi] Add test to assert that ItaniumDemangle.h is the same (#140323)\n\nItaniumDemangle.h exists in both llvm/ and libcxxabi/. These files are\nsupposed to be copies of each other (minus the top two lines). This\npatch adds a test to assert that this is the case to enable tooling to\nautomatically detect this as an issue, like in #139825. This makes it\neasier for contributors unfamiliar with the duplication to make\nchanges/get appropriate reviews.\n\nIdeally we would share the file and copy it from one place to the other\nbut the ideal way to do this (based on previous discussion with libc++\nmaintainers) would be a new runtime library that clearly outlines\nrequirements, so that is left for later with the test being used as a\nstopgap. This is a relatively common approach for structures shared\nbetween compiler-rt and LLVM.\n\nThis patch does make the test reference the LLVM source directory, but\nthat should be fine given building libcxxabi is only supported through\nthe runtimes build in the monorepo meaning it should always be\navailable.\n\nGitOrigin-RevId: c1970c76adf70ca8ade7ac5d3bb57872e2daf1fd\n"
    },
    {
      "commit": "51051df787ff6f13a8ed137f5971f5f5978cbf7a",
      "tree": "317324736f507d45d44e6231605021fda9ebbc2e",
      "parents": [
        "dc9ad08521ccb08406e7fb62371cd18f13f8e8f1"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "aidengrossman@google.com",
        "time": "Fri May 16 09:26:09 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 16 09:28:34 2025 -0700"
      },
      "message": "[libcxxabi] Update ItaniumDemangle.h from LLVM (#140273)\n\n76ba29bfd8e8aaf5b0267598d18434a0d13945a2 landed changes in\nItaniumDemangle.h on the LLVM side that were not propagated over to the\nlibcxxabi side. This patch fixes that.\n\nGitOrigin-RevId: 23a674d2ecc428a96d28c9772cc5178eaf763863\n"
    },
    {
      "commit": "dc9ad08521ccb08406e7fb62371cd18f13f8e8f1",
      "tree": "bfe7b17bb0693efc10198f4fd3369a26de1c1703",
      "parents": [
        "a78b2d722d0cdd4e3ab81c95b484ec68cb32f311"
      ],
      "author": {
        "name": "Raul Tambre",
        "email": "raul@tambre.ee",
        "time": "Mon May 12 22:59:39 2025 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 12 13:02:39 2025 -0700"
      },
      "message": "[cmake] Normalize TARGET_SUBDIR paths (#138524)\n\nSome code paths normalize \"..\" and thus don\u0027t create the directory. But some execute in a\nshell thus requiring the directory to exist to be able to take the parent directory.\n\nThis patch normalizes all the `TARGET_SUBDIR` variables to avoid this issue.\n\nGitOrigin-RevId: fc3b67aee852d99bbb5d2f4670695d8246375dac\n"
    },
    {
      "commit": "a78b2d722d0cdd4e3ab81c95b484ec68cb32f311",
      "tree": "d12f9590cd7dfbdd0a747abe5be85af45ad84696",
      "parents": [
        "703b83e62ea34a2f916a9c371f905095b329ae27"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Mon May 12 20:56:07 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 12 12:57:55 2025 -0700"
      },
      "message": "[ItaniumDemangle] Add Named flag to \"pm\" operator (#136862)\n\nCompilers can generate mangled names such as `_ZN1CpmEi` which we\ncurrently fail to demangle. The OperatorInfo table only marked the `pt`\noperator as being \"named\", which prevented the others from demangling\nproperly. Removing this logic for the other kinds of member operators\nisn\u0027t causing any tests to fail.\n\nGitOrigin-RevId: 028f70d2524be56bb5d191ec3d7022b40bc4859b\n"
    },
    {
      "commit": "703b83e62ea34a2f916a9c371f905095b329ae27",
      "tree": "a06f5a1b6d9ed0dfcce9aad6ca3ef4043ce0119a",
      "parents": [
        "79b31581ac770fd4b746bccf00e00b68e72b9dc8"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Fri May 09 11:25:14 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 09 11:26:58 2025 -0700"
      },
      "message": "[libcxx][NFC] Use macros for functions that support overriding detection (#133876)\n\nWe plan to replace the existing mechanism for overriding detection with\none that doesn\u0027t require the use of a special section as an alternative\nto llvm/llvm-project#120805 which had other downsides.\n\nThis change is a pure refactoring that lays the foundation for a\nsubsequent change that will introduce the new detection mechanism.\n\nGitOrigin-RevId: 25a03c1c7cec62ad7b6ed7a176df4e91ba968332\n"
    },
    {
      "commit": "79b31581ac770fd4b746bccf00e00b68e72b9dc8",
      "tree": "916e39547491f2c36075e114e2c85e83afc6986e",
      "parents": [
        "e49bfbb764747fe112d17a0f7d3e0cf580409dea"
      ],
      "author": {
        "name": "Dmitry Vasilyev",
        "email": "dvassiliev@accesssoftek.com",
        "time": "Tue May 06 13:16:51 2025 +0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 06 02:18:00 2025 -0700"
      },
      "message": "[ItaniumDemangle] Fix libcxxabi OutputBuffer::prepend for empty inputs (#138656)\n\nSee #138564 for details.\n\nGitOrigin-RevId: 0dce0ea31cc9fd1d3d082b233b16f9ed123a6ed4\n"
    },
    {
      "commit": "e49bfbb764747fe112d17a0f7d3e0cf580409dea",
      "tree": "efff0cc4b5e7c12e6b440e95620bf6fb8bb556fe",
      "parents": [
        "4a66c31710a53f2922f17fe4631e92df36b41a85"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Fri Apr 25 22:04:31 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 25 14:16:03 2025 -0700"
      },
      "message": "[ItaniumDemangle][NFC] Add getter to ObjCProtoName::getProtocol\n\nAnd remove now redunant friend declaration.\n\nFor some reason this was failing to build on one of the MSVC bots after\nhttps://github.com/llvm/llvm-project/pull/131836:\n```\nFAILED: tools/lldb/source/Plugins/ExpressionParser/Clang/CMakeFiles/lldbPluginExpressionParserClang.dir/ClangExpressionParser.cpp.obj\n\nccache C:\\PROGRA~1\\MICROS~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1441~1.341\\bin\\Hostx64\\x64\\cl.exe  /nologo /TP -DCLANG_BUILD_STATIC -DGTEST_HAS_RTTI\u003d0 -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_GLIBCXX_ASSERTIONS -D_HAS_EXCEPTIONS\u003d0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\build\\tools\\lldb\\source\\Plugins\\ExpressionParser\\Clang -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\lldb\\source\\Plugins\\ExpressionParser\\Clang -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\lldb\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\build\\tools\\lldb\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\build\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\llvm\\include -IC:\\Python312\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\llvm\\..\\clang\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\build\\tools\\lldb\\..\\clang\\include -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\lldb\\source -IC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\build\\tools\\lldb\\source -D__OPTIMIZE__ /Zc:inline /Zc:preprocessor /Zc:__cplusplus /Oi /bigobj /permissive- /W4 -wd4141 -wd4146 -wd4244 -wd4267 -wd4291 -wd4351 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -wd4577 -wd4091 -wd4592 -wd4319 -wd4709 -wd5105 -wd4324 -wd4251 -wd4275 -w14062 -we4238 /Gw /O2 /Ob2  -MD   -wd4018 -wd4068 -wd4150 -wd4201 -wd4251 -wd4521 -wd4530 -wd4589  /EHs-c- /GR- -UNDEBUG -std:c++17 /showIncludes /Fotools\\lldb\\source\\Plugins\\ExpressionParser\\Clang\\CMakeFiles\\lldbPluginExpressionParserClang.dir\\ClangExpressionParser.cpp.obj /Fdtools\\lldb\\source\\Plugins\\ExpressionParser\\Clang\\CMakeFiles\\lldbPluginExpressionParserClang.dir\\lldbPluginExpressionParserClang.pdb /FS -c C:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\lldb\\source\\Plugins\\ExpressionParser\\Clang\\ClangExpressionParser.cpp\n\nC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\llvm\\include\\llvm/Demangle/ItaniumDemangle.h(667): error C2248: \u0027llvm::itanium_demangle::ObjCProtoName::Protocol\u0027: cannot access private member declared in class \u0027llvm::itanium_demangle::ObjCProtoName\u0027\n\nC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\llvm\\include\\llvm/Demangle/ItaniumDemangle.h(615): note: see declaration of \u0027llvm::itanium_demangle::ObjCProtoName::Protocol\u0027\n\nC:\\buildbot\\as-builder-10\\lldb-x-aarch64\\llvm-project\\llvm\\include\\llvm/Demangle/ItaniumDemangle.h(613): note: see declaration of \u0027llvm::itanium_demangle::ObjCProtoName\u0027\n```\n\nIt\u0027s not quite clear to me why this wasn\u0027t compiling but either way this\nis cleaner.\n\nGitOrigin-RevId: bd96fa778809d70e688d27cae2f7667b2aed69c0\n"
    },
    {
      "commit": "4a66c31710a53f2922f17fe4631e92df36b41a85",
      "tree": "c21a971690da9469d72699410d7bb77f2f6918bb",
      "parents": [
        "3fff56aea012cf06c33b84946f1e86e5c7b2e938"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Wed Apr 23 15:40:04 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 23 07:45:50 2025 -0700"
      },
      "message": "[ItaniumDemangle][test] Add test-cases for ref-qualified member pointer parameters\n\nI noticed that there are test-cases that are commented out. But the\nmanglings for them seem to be impossible to generate from valid C++. I\nadded two test-cases generated from following C++ program:\n```\nstruct X {\n    int func() const \u0026\u0026 { return 5; }\n    const int \u0026\u0026func2() { return 5; }\n    const int \u0026\u0026func3(const int \u0026x) volatile { return 5; }\n};\n\nvoid f(int (X::*)() const \u0026\u0026, int const \u0026\u0026 (X::*)(),\n       int const \u0026\u0026 (X::*)(const int \u0026) volatile) {}\n\nint main() {\n    f(\u0026X::func, \u0026X::func2, \u0026X::func3);\n    return 0;\n}\n```\n\nGitOrigin-RevId: 46f18b7c6febe75b2cc0095f2227d935c14f70f2\n"
    },
    {
      "commit": "3fff56aea012cf06c33b84946f1e86e5c7b2e938",
      "tree": "860cdcca4fafa4c334435d4e1447f7d40dd5d9ae",
      "parents": [
        "443bb4cb976c6db58943beb337fc8a7a3c5e5747"
      ],
      "author": {
        "name": "Michael Buch",
        "email": "michaelbuch12@gmail.com",
        "time": "Thu Apr 17 21:53:32 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 17 13:55:23 2025 -0700"
      },
      "message": "[ItaniumDemangle] Add customizable printLeft/printRight APIs to OutputBuffer (#133249)\n\nThis patch includes the necessary changes for the LLDB feature proposed\nin\nhttps://discourse.llvm.org/t/rfc-lldb-highlighting-function-names-in-lldb-backtraces/85309.\nThe TL;DR is that we want to track where certain parts of a demangled\nname begin/end so we can highlight them in backtraces.\n\nWe introduce a new `printLeft`/`printRight` API on `OutputBuffer` that a\nclient (in our case LLDB) can implement to track state while printing\nthe demangle tree. This requires redirecting all calls to to\n`printLeft`/`printRight` to the `OutputBuffer`. One quirk with the new\nAPI is that `Utility.h` would now depend on `ItaniumDemangle.h` and\nvice-versa. To keep these files header-only I made the definitions\n`inline` and implement the new APIs in `ItaniumDemangle.h` (so the\ndefinition of `Node` is available to them).\n\nAlso introduces `notifyInsertion`/`notifyDeletion` APIs that a client can override to respond to cases where the `OutputBuffer` changes arbitrary parts of the name.\n\nGitOrigin-RevId: 889dad7f40932ea68c9e287e62441507f4f0f261\n"
    },
    {
      "commit": "443bb4cb976c6db58943beb337fc8a7a3c5e5747",
      "tree": "d915c2a39f1957d050a6fb9f1ca5906d5a553bba",
      "parents": [
        "f2ccc42bf103caaf18c76f666268182c83398179"
      ],
      "author": {
        "name": "Akira Hatanaka",
        "email": "ahatanak@gmail.com",
        "time": "Tue Apr 15 12:54:25 2025 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 15 12:55:33 2025 -0700"
      },
      "message": "[PAC] Add support for __ptrauth type qualifier (#100830)\n\nThe qualifier allows programmer to directly control how pointers are\nsigned when they are stored in a particular variable.\n\nThe qualifier takes three arguments: the signing key, a flag specifying\nwhether address discrimination should be used, and a non-negative\ninteger that is used for additional discrimination.\n\n```\ntypedef void (*my_callback)(const void*);\nmy_callback __ptrauth(ptrauth_key_process_dependent_code, 1, 0xe27a) callback;\n```\n\nCo-Authored-By: John McCall rjmccall@apple.com\nGitOrigin-RevId: a3283a92aea147e89d9d404fa7c8500223c7c22a\n"
    },
    {
      "commit": "f2ccc42bf103caaf18c76f666268182c83398179",
      "tree": "f70c72a0b07ae470fbad0b3a518f9043bf80c42d",
      "parents": [
        "024fc8257dc3bb82043cf0bcfb6058f12883d856"
      ],
      "author": {
        "name": "Mark de Wever",
        "email": "koraq@xs4all.nl",
        "time": "Fri Apr 11 18:41:50 2025 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 11 11:04:55 2025 -0700"
      },
      "message": "[libc++] Another Apple CI quick-fix.\n\nLike #135202 this fixes another issue after the XCode update.\n\nGitOrigin-RevId: e15025dd50ce2f3db6c8f3f414f95a7b58ef8501\n"
    },
    {
      "commit": "024fc8257dc3bb82043cf0bcfb6058f12883d856",
      "tree": "174a3ff544d3d2bd153be04aecf188b51fe482aa",
      "parents": [
        "7a62fc5673c15846c447b40bb14e29faa769d773"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Apr 11 12:24:13 2025 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 11 02:25:58 2025 -0700"
      },
      "message": "[libcxxabi] Fix the long double demangling for PowerPC (#135332)\n\nPowerPC uses a slightly different type of floats for their 128 bit long\ndoubles, as \"double-double\", with __LDBL_MANT_DIG__ \u003d\u003d 106 rather than\n__LDBL_MANT_DIG__ \u003d\u003d 113 for IEEE 128 bit floats.\n\nThis fixes compiling libcxxabi for PowerPC after\n3b70715c13876c51542ebfe2e3f4ee908f6785cb.\n\nGitOrigin-RevId: 8be4bd85708cddc8d84d03cf77ba4b02d0b6d44c\n"
    },
    {
      "commit": "7a62fc5673c15846c447b40bb14e29faa769d773",
      "tree": "175d7980040aad5bec631c334c136317549b76c8",
      "parents": [
        "9e239f58ef6cbdf52d52930ca5d57a3ecdd05aa3"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Apr 11 08:54:11 2025 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 10 22:55:42 2025 -0700"
      },
      "message": "[libcxxabi] Use __LDBL_MANT_DIG__ for configuring demangling of long doubles (#134976)\n\nThis avoids needing to hardcode the mapping between architectures and\ntheir sizes of long doubles.\n\nThis fixes a case in test_demangle.pass.cpp, that previously failed like\nthis (XFAILed):\n\n    .---command stdout------------\n    | Testing 29859 symbols.\n| _ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c should be invalid\nbut is not\n| Got: 0, void test0::h\u003cfloat\u003e(char (\u0026) [(unsigned int)(sizeof (float) +\n0x0.07ff98f7ep-1022L)])\n    `-----------------------------\n    .---command stderr------------\n| Assertion failed: !passed \u0026\u0026 \"demangle did not fail\", file\nlibcxxabi/test/test_demangle.pass.cpp, line 30338\n    `-----------------------------\n\nThis testcase is defined within\n\n// Is long double fp80? (Only x87 extended double has 64-bit mantissa)\n    #define LDBL_FP80 (__LDBL_MANT_DIG__ \u003d\u003d 64)\n    ...\n    #if !LDBL_FP80\n    ...\n    #endif\n\nThe case failed on x86 architectures with an unusual size for long\ndoubles, as the test expected the demangler to not be able to demangle\nan 80 bit long double (based on the `__LDBL_MANT_DIG__ \u003d\u003d 64` condition\nin the test). However as the libcxxabi implementation was hardcoded to\ndemangle 80 bit long doubles on x86_64 regardless of the actual size,\nthis test failed (by unexpectedly being able to demangle it).\n\nBy configuring libcxxabi\u0027s demangling of long doubles to match what the\ncompiler specifies, we no longer hit the expected failures in the\ntest_demangle.pass.cpp test on Android on x86.\n\nThis makes libcxxabi require a GCC-compatible compiler that defines\nnonstandard defines like `__LDBL_MANT_DIG__`, but I presume that\u0027s\nalready essentially required anyway.\n\nGitOrigin-RevId: 3b70715c13876c51542ebfe2e3f4ee908f6785cb\n"
    },
    {
      "commit": "9e239f58ef6cbdf52d52930ca5d57a3ecdd05aa3",
      "tree": "a7c28c83298d937f13c526335b1e8139e40f74be",
      "parents": [
        "a4dda1589d37a7e4b4f7a81ebad01b1083f2e726"
      ],
      "author": {
        "name": "A. Jiang",
        "email": "de34@live.cn",
        "time": "Wed Apr 09 07:40:01 2025 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 08 16:46:18 2025 -0700"
      },
      "message": "[libc++] P3247R2: Deprecate `is_trivial(_v)` (#130573)\n\nRequirements on character-like types are updated unconditionally,\nbecause `basic_string` does requires the default-constructibility. It\nmight be possible to make `basic_string_view` support classes with\nnon-public trivial default constructor, but this doesn\u0027t seem sensible.\n\nlibcxxabi\u0027s `ItaniumDemangle.h` is also updated to avoid deprecated\nfeatures.\n\nGitOrigin-RevId: ab95005a05232030a16c2da7a8de867c2ded5f88\n"
    },
    {
      "commit": "a4dda1589d37a7e4b4f7a81ebad01b1083f2e726",
      "tree": "80d288bbcee8ed8849891f9ee08b7dcadf228dab",
      "parents": [
        "47bbbc31fa63cfb33eb4b7ca4b09f8ae3de8cea4"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Wed Feb 12 22:18:02 2025 +0900"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Feb 12 05:19:53 2025 -0800"
      },
      "message": "[libc++abi] Add a missing include for abort() (#126865)\n\nThis is to fix a build error when we use Clang modules in Chromium.\n\nGitOrigin-RevId: 75dd4119b2798a53241089f77922a2e13ead6b94\n"
    },
    {
      "commit": "47bbbc31fa63cfb33eb4b7ca4b09f8ae3de8cea4",
      "tree": "cf1ea946ed540066ee8d56724355ed08c82a81c7",
      "parents": [
        "96c0a4cd313991f8e3f42b7dd72f42ceee2c8c60"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Tue Jan 28 16:44:57 2025 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 28 13:51:38 2025 -0800"
      },
      "message": "[libc++abi] Make once_flag constinit in cxa_exception_storage (#124627)\n\nThis makes it clearer that initialization of this global variable is\ntaking place at compile-time, reducing the likelihood of static\ninitialization order fiasco.\n\nGitOrigin-RevId: a06c89387621b0a040e6203e7f1a2d8243f5be33\n"
    },
    {
      "commit": "96c0a4cd313991f8e3f42b7dd72f42ceee2c8c60",
      "tree": "87d31ed0cb70d191ed0f44850b772712323ca650",
      "parents": [
        "159ae3d2066ee4f1dce0007e125dae6d1c2095b4"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Mon Jan 27 22:26:15 2025 -0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jan 27 22:30:31 2025 -0800"
      },
      "message": "Revert \"[libcxx] Use alias for detecting overriden function\" (#124431)\n\nReverts llvm/llvm-project#120805\n\nThis change while desirable has two issues we discovered:\n\n- It is incompatible with `-funique-internal-linkage-names`, see\nhttps://github.com/llvm/llvm-project/pull/120805#discussion_r1913709817\n- It is incompatible with `-fvisibility-global-new-delete\u003dforce-hidden`,\nsee\nhttps://github.com/llvm/llvm-project/issues/123224#issuecomment-2607963878\n\nWe were hoping to address both of these issues with\nhttps://github.com/llvm/llvm-project/pull/122983, but that change has\nother issues we haven\u0027t yet managed to resolve. For now, we have decided\nto revert the change to avoid shipping a broken feature in LLVM 20, and\nwe plan to follow up with a new approach post branch.\n\nGitOrigin-RevId: 4167ea2cb082a2acb00b8b1dc09aa780dc0e3110\n"
    },
    {
      "commit": "159ae3d2066ee4f1dce0007e125dae6d1c2095b4",
      "tree": "cb8a20fd08ea728f9fb854b099abae557ed90ccf",
      "parents": [
        "338aa8a5c7e9672e0e561883e4b5c08c4cb6ecf8"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Thu Jan 23 04:26:02 2025 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jan 23 01:29:29 2025 -0800"
      },
      "message": "[libc++abi] Remove support for Android 4 and older (#124054)\n\nGitOrigin-RevId: 9fd92634749c75b39be829c22240567ccda3ffce\n"
    },
    {
      "commit": "338aa8a5c7e9672e0e561883e4b5c08c4cb6ecf8",
      "tree": "ae5ad0d6677cb9ed678513a80529bac39db2ec39",
      "parents": [
        "17e7da0e6786d378102f188f956a40c4309b4bfd"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Jan 14 22:21:03 2025 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 14 13:25:28 2025 -0800"
      },
      "message": "[libc++] Simplify when the sized global deallocations overloads are available (#114667)\n\nThere doesn\u0027t seem to be much benefit in always providing declarations\nfor the sized deallocations from C++14 onwards if the user explicitly\npassed `-fno-sized-deallocation` to disable them. This patch simplifies\nthe declarations to be available exactly when the compiler expects sized\ndeallocation functions to be available.\n\nGitOrigin-RevId: ef804d8f9b4ef4ff39e873d5910e94887519bdb6\n"
    },
    {
      "commit": "17e7da0e6786d378102f188f956a40c4309b4bfd",
      "tree": "7d4351d66b1513a71a1748e29b10eda46d1015de",
      "parents": [
        "308fed6091a5d2b30d45b29f11f2e4cbb787b60e"
      ],
      "author": {
        "name": "Kirill Stoimenov",
        "email": "kstoimenov@google.com",
        "time": "Tue Jan 14 18:23:07 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 14 10:30:31 2025 -0800"
      },
      "message": "Revert \"[libc++] Stop copying headers to the build directory (#115380)\"\n\nThis reverts commit 428c8767ae997b0f726c0b40160ea8172551babf.\n\nBreaks sanitizer build: https://lab.llvm.org/buildbot/#/builders/51/builds/9056\n\nGitOrigin-RevId: 576b53801fc3d721602ae0d8377af9950f356000\n"
    },
    {
      "commit": "308fed6091a5d2b30d45b29f11f2e4cbb787b60e",
      "tree": "13b042ccdd461fdabd0667241ae7c5a51eb02055",
      "parents": [
        "1870b1afad0eedce644bdc1a0e7e4657a79ca5dc"
      ],
      "author": {
        "name": "Alexander Richardson",
        "email": "alexrichardson@google.com",
        "time": "Tue Jan 14 05:40:04 2025 -0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 14 05:45:04 2025 -0800"
      },
      "message": "[libc++] Stop copying headers to the build directory (#115380)\n\nThis was needed before https://github.com/llvm/llvm-project/pull/115077\nsince the compiler-rt test build made assumptions about the build\nlayout of libc++ and libc++abi, but now they link against a local\ninstallation of these libraries so we no longer need this workaround.\n\nGitOrigin-RevId: 428c8767ae997b0f726c0b40160ea8172551babf\n"
    },
    {
      "commit": "1870b1afad0eedce644bdc1a0e7e4657a79ca5dc",
      "tree": "7d4351d66b1513a71a1748e29b10eda46d1015de",
      "parents": [
        "93837410b85a977012e3d2abc52005bb381415cd"
      ],
      "author": {
        "name": "Fraser Cormack",
        "email": "fraser@codeplay.com",
        "time": "Mon Jan 13 21:15:40 2025 +0000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jan 13 13:18:37 2025 -0800"
      },
      "message": "[libc++abi][ItaniumDemangle] Demangle DF16b as std::bfloat16_t (#120109)\n\nThis mangling is official in the Itanium C++ ABI specification and is\nalready supported by clang.\n\nGitOrigin-RevId: a100fd8cbd3dad3846a6212d97279ca23db85c75\n"
    },
    {
      "commit": "93837410b85a977012e3d2abc52005bb381415cd",
      "tree": "804f344c8a516cd0686b45ddd0e7dce4e5948ee7",
      "parents": [
        "450b4581a440fe0d2dd2fee3ea5c8e30aaaf2f41"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Tue Jan 07 13:45:48 2025 -0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jan 07 13:50:51 2025 -0800"
      },
      "message": "[libcxx] Use alias for detecting overriden function (#120805)\n\nThis mechanism is preferable in environments like embedded since it\ndoesn\u0027t require special handling of the custom section.\n\nThis is a reland of https://github.com/llvm/llvm-project/pull/114961\nwhich addresses the issue reported by downstream users. Specifically,\nthe two differences from the previous version are:\n\n* The internal `symbol##_impl__` symbol in the Mach-O implementation is\n  annotated with `__attribute__((used))` to prevent LTO from deleting it\n  which we\u0027ve seen in the previous version.\n* `__is_function_overridden` is marked as `inline` so these symbols are\n  placed in a COMDAT (or fully inlined) to avoid duplicate symbol errors\n  which we\u0027ve seen in the previous version.\n\nGitOrigin-RevId: 841895543edcf98bd16027c6b85fe7c6419a4566\n"
    },
    {
      "commit": "450b4581a440fe0d2dd2fee3ea5c8e30aaaf2f41",
      "tree": "520163b8991ae3b241f47d3fa0bb1ab0567cd4b9",
      "parents": [
        "42c05091e67ed6f3b18dc970cf61d6af5ea09e4a"
      ],
      "author": {
        "name": "Nico Weber",
        "email": "thakis@chromium.org",
        "time": "Thu Dec 19 15:52:19 2024 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Dec 19 12:55:32 2024 -0800"
      },
      "message": "Revert \"[libcxx] Use alias for detecting overriden function (#114961)\"\n\nThis reverts commit 62bd10f7d18ca6f544286767cae2c9026d493888.\nBreaks building with -flto\u003dthin, see\nhttps://github.com/llvm/llvm-project/pull/114961#issuecomment-2555754056\n\nGitOrigin-RevId: 8dfae0c462e9558df77c83c97d89b4b83ed1baff\n"
    },
    {
      "commit": "42c05091e67ed6f3b18dc970cf61d6af5ea09e4a",
      "tree": "804f344c8a516cd0686b45ddd0e7dce4e5948ee7",
      "parents": [
        "eaa495d74e9b9020b1611387adad6da86d0ccf31"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Tue Dec 17 08:16:26 2024 -0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Dec 17 08:20:59 2024 -0800"
      },
      "message": "[libcxx] Use alias for detecting overriden function (#114961)\n\nThis mechanism is preferable in environments like embedded since it\ndoesn\u0027t require special handling of the custom section.\n\nGitOrigin-RevId: 62bd10f7d18ca6f544286767cae2c9026d493888\n"
    },
    {
      "commit": "eaa495d74e9b9020b1611387adad6da86d0ccf31",
      "tree": "520163b8991ae3b241f47d3fa0bb1ab0567cd4b9",
      "parents": [
        "3ce48956dee9d2209aa9504b8ea20b06dfc4732b"
      ],
      "author": {
        "name": "Nikolas Klauser",
        "email": "nikolasklauser@berlin.de",
        "time": "Tue Dec 17 11:29:16 2024 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Dec 17 02:30:57 2024 -0800"
      },
      "message": "[libc++] Granularize \u003cnew\u003e includes (#119964)\n\nGitOrigin-RevId: 59890c13343af9e308281b3c76bac425087f4f8a\n"
    },
    {
      "commit": "3ce48956dee9d2209aa9504b8ea20b06dfc4732b",
      "tree": "692b6935c46bef5cbfa1f0f046647e12d5409f6e",
      "parents": [
        "d9cafa9ecfe5e174a003e05faa4fef512b5e7c63"
      ],
      "author": {
        "name": "Hubert Tong",
        "email": "hubert.reinterpretcast@gmail.com",
        "time": "Sat Dec 14 19:37:15 2024 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Dec 14 17:20:59 2024 -0800"
      },
      "message": "NFC: clang-format test_demangle.pass.cpp but keep test \"lines\"\n\nAdd clang-format on/off around test \"lines\"\n\nRun clang-format without breaking string literals:\nclang-format --style\u003d\u0027{BasedOnStyle: llvm, BreakStringLiterals: false}\u0027\n-i test_demangle.pass.cpp\n\nAdd clang-format on/off on fp_literal_cases\n\nFixups: Split UNSUPPORTED to next line; xfail_cases trailing comma\n\nReplace physical tab\n\nGitOrigin-RevId: d33bf2e9df578ff7e44fd22504d6ad5a122b7ee6\n"
    },
    {
      "commit": "d9cafa9ecfe5e174a003e05faa4fef512b5e7c63",
      "tree": "5939ddcae3dce5f628feb24f1c939a702078e5fe",
      "parents": [
        "7c9a7aa397e299cfc30a345b5985623c60ffcf39"
      ],
      "author": {
        "name": "Louis Dionne",
        "email": "ldionne.2@gmail.com",
        "time": "Fri Dec 13 14:17:56 2024 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Dec 13 11:21:05 2024 -0800"
      },
      "message": "[libc++] Granularize the \u003cnew\u003e header (#119270)\n\nThis disentangles the code which previously had a mix of many #ifdefs, a\nnon-versioned namespace and a versioned namespace. It also makes it\nclearer which parts of \u003cnew\u003e are implemented on Windows by including \u003cnew.h\u003e.\n\nGitOrigin-RevId: 9474e09459189fbed30f329a669f9c14979c5367\n"
    }
  ],
  "next": "7c9a7aa397e299cfc30a345b5985623c60ffcf39"
}
