From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0/4yBJ3wJ2r0qD0AWB0awg (envelope-from ) for ; Tue, 09 Jun 2026 06:53:17 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=NBTQiW8B; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id F3D861E070; Tue, 09 Jun 2026 06:53:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 261741E070 for ; Tue, 09 Jun 2026 06:53:15 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6E7A64C31851 for ; Tue, 9 Jun 2026 10:53:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6E7A64C31851 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=NBTQiW8B Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 908274BA23FD for ; Tue, 9 Jun 2026 10:52:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 908274BA23FD Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 908274BA23FD Authentication-Results: sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781002345; cv=none; b=F6EJUSlh0UTtljG0u63kggBFn4Vhx1Ga//eriPWJAH4ZTyvIWtNrWGuEYZyakLNlx+QBY+jgaTW5vAsDIcRI1uijvN2PJaqxfhEwQY6gbc5de7IoxvsS/WddmIC2pxejzJC1hYTAMpqEzRwGvs8xQGk0Z21fg/JlSLHmfSyqf/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781002345; c=relaxed/simple; bh=kAavCxc58+4Nb3xqY80XSC/qk3dD7XJzQRCJbCPBqVw=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=xinMJuZQIUN4Ln6bFTeFA2nj1sJJeN4SNIKcqTdyxC1MjCywQHqGPSI9iWdVoEhc0YiJKFe2L61jHpiBmt9PzjRQ22P5Vj6HrL6pnbv0czXv3HbGWgkUNHyjN3uQ7c8FE/ZYkGYLV6j3Vm7JCcxrySYa8U47QFrMrQzRuyFUX0o= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=NBTQiW8B DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 908274BA23FD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781002344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zlPC1vGDi90XRpgcw3EbNEMIogPZIRE1DkbFg597/L0=; b=NBTQiW8BErAdQSc5h5t3yG/IiZy7yYKt1hiReZ3cF/j227KvNIIkRUNjoJxRPlrVC/XhkB O2Lb7u6pIlINUtrUaecLMV/l8S71RwBk40Dw00Cpciu3iAz2gEQt7u8d6Q0nlCxW1qY9Jx uVxmREd9sYu9RqquVtGa54dMgR3vTA0= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-630-YYD0VaE1MxqVQlAfTXrlRw-1; Tue, 09 Jun 2026 06:52:23 -0400 X-MC-Unique: YYD0VaE1MxqVQlAfTXrlRw-1 X-Mimecast-MFC-AGG-ID: YYD0VaE1MxqVQlAfTXrlRw_1781002342 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4600cf05f07so2946553f8f.2 for ; Tue, 09 Jun 2026 03:52:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781002342; x=1781607142; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QtQiVkaujR92kdFXt85y94EzS2615f+3eH6ASoQhD5o=; b=BmQqIWDcxlSWbxZYQ4hoOos0MlkxQc1DbRvflGb0XPf+Fb8lzua0SO9Ba9/0kQj/8Q 2Z4kX+u6nuU3LEdk0LCcxrG5OTMesnENmqZcSAHFW1JHTwzlIXizZNZ17QCXI4DIRVxb 8k0+dTLtVsC3HEG809CgRjQspSnzTKzsje6GeQqPLQYmTsir6QtC2JS17dYeCX5Y3ZR/ ldvAs5hWv+OBHVsoL2BbzJJBi8NXH8JVcLd0ZZsv9dR3hr2XOwp0v6J026XB56WW0cA4 Ol4mx5RGfuG24xY7bq8Qzbd3feeGrCPgw4brkbF7sQ1/f0pF5rRCDjxB0V80GM8AYGHG 9nhA== X-Gm-Message-State: AOJu0YzUaWZ2o8WuKtD0Vf/asPCp+LTbEwcMXp2EdvqRQ5pi9kuJ6KHI ghQ5DMM7wMwc5Nl9xZy6yRd0AMhp5SVGUo1D6NdnEYwTtVCl59ZYE7mR722qsIf3kAAx8GiONDB LtJjOsZs+SaGgo0pxwQujf6Xh4bTJYzRIISdj9yDWEULTxvrVjE3Mxs2GzYrFOTyiFkgpf0X+Yu 2vgx9JvStjB5AIhAXhP/Pz3I+OIApSoIDE4csfupPd+O+UOcU= X-Gm-Gg: Acq92OHCP9VkfOo/og26aV1YQRsnTJM6t413BKXqxDP5b0yLky2E2/CeD7CVu5MyFre w8KH19S7putcJ/JPA4o9XBs9nfeQyaUJl/N9Q7lASQRg0SN0ia5iT6bTZRsT0DLm+ORBwVDwNZF bzf19GhtvaI6EyD2gAlfcYdHkQL1OQSF0HxWgslhgnqJyFW5gi6TtdP4W+uF1fqTsNW0ywQCUJJ RQXI1xrTV8t82vFAKmqeG5OOgIHFn642wMymPZA8mGHZOecQRVTGX3j1QEYXvOHStH7MRt06PGP 3mN6WszhqaamunHZeHub0HqE6NxXh+gW61sktEItfwBPPP/ob6QoFiVGKx4szgr/92T7e+OZnUI IUcXhf4ylYNfywQhBc8qr7u/95NReV/PJQHV0AASzLQvcZaplSm4= X-Received: by 2002:a5d:5d03:0:b0:460:3233:66fe with SMTP id ffacd0b85a97d-460323367d3mr30765040f8f.41.1781002341571; Tue, 09 Jun 2026 03:52:21 -0700 (PDT) X-Received: by 2002:a5d:5d03:0:b0:460:3233:66fe with SMTP id ffacd0b85a97d-460323367d3mr30764926f8f.41.1781002340549; Tue, 09 Jun 2026 03:52:20 -0700 (PDT) Received: from localhost (19.81.93.209.dyn.plus.net. [209.93.81.19]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm57033277f8f.8.2026.06.09.03.52.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 03:52:20 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org, binutils@sourceware.org Cc: Dhruv Chawla Subject: [PATCH] libiberty: sync with gcc commit df3510f80e7c02d9 Date: Tue, 9 Jun 2026 11:52:17 +0100 Message-Id: X-Mailer: git-send-email 2.25.4 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Eu7bc-zF5_fnJn4Cbg_lg9t3qgiBcgq0pwWCeitE02c_1781002342 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable content-type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org From: Dhruv Chawla Sync the libiberty/ directory with gcc commit df3510f80e7c02d9c19d7cb33759cd925880f53a. This pulls in the following gcc commits and the associated updates to 'libiberty/ChangeLog': * 06fb00cb66d libiberty: Fix typos in various files * fbf903e5b9f Re-flow lines made longer than 80 characters by typo fixes * cfb945957ee Regenerate some autoconf configure scripts after recent spe= lling fixes. * bc4d9b6aeb3 libiberty: avoid exponential back reference issue in D dema= ngler I have retained the changes that are in the following binutils-gdb commit, which are not in gcc: commit 219822fd5db6305592b45677a3b38c02b523360e Date: Tue Apr 9 06:39:21 2024 -0700 mmap: Avoid the sanitizer configure check failure --- libiberty/ChangeLog | 59 +++++++++++++++++++++++++ libiberty/bcopy.c | 2 +- libiberty/bsearch.c | 2 +- libiberty/bsearch_r.c | 2 +- libiberty/configure | 2 +- libiberty/configure.ac | 2 +- libiberty/cp-demangle.c | 6 +-- libiberty/d-demangle.c | 55 +++++++++++++++++++++-- libiberty/dyn-string.c | 4 +- libiberty/ldirname.c | 2 +- libiberty/make-relative-prefix.c | 2 +- libiberty/obstacks.texi | 2 +- libiberty/pex-win32.c | 6 +-- libiberty/random.c | 4 +- libiberty/regex.c | 20 ++++----- libiberty/sigsetmask.c | 2 +- libiberty/simple-object-elf.c | 6 +-- libiberty/simple-object-mach-o.c | 10 ++--- libiberty/strsignal.c | 4 +- libiberty/testsuite/d-demangle-expected | 12 +++++ 20 files changed, 161 insertions(+), 43 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 7de0bb4d254..e60b5951ea4 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,62 @@ +2026-06-07 Andrew Burgess + +=09* d-demangle.c (struct dlang_info::options): New field, +=09carries options passed to the demangler. +=09(struct dlang_info::num_backrefs): Count total number of back +=09referenced types that have been processed. +=09(struct dlang_info::backref_depth): Count the depth of +=09recursive back references. +=09(dlang_type_backref): Track recursive back reference depth, +=09and the total number of back references encountered. Bail out +=09early if the total number gets too high. +=09(dlang_demangle_init_info): Initialise new 'struct dlang_info' +=09fields. +=09(dlang_demangle): Pass demangler options to +=09dlang_demangle_init_info. +=09* testsuite/d-demangle-expected: Add new test. + +2026-06-01 Jakub Jelinek + +=09* configure: Regenerate. + +2026-05-30 Dhruv Chawla + +=09* simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow +=09long line. + +2026-05-30 Dhruv Chawla + +=09* bcopy.c: Fix typos. +=09* bsearch.c: Likewise. +=09* bsearch_r.c: Likewise. +=09* configure.ac: Likewise. +=09* cp-demangle.c (d_print_comp_inner): Likewise. +=09(d_print_comp): Likewise. +=09* d-demangle.c (dlang_identifier): Likewise. +=09* dyn-string.c: Likewise. +=09* ldirname.c: Likewise. +=09* make-relative-prefix.c (make_relative_prefix_1): Likewise. +=09* obstacks.texi: Likewise. +=09* pex-win32.c (argv_to_cmdline): Likewise. +=09(spawn_script): Likewise. +=09* random.c (random): Likewise. +=09(setstate): Likewise. +=09* regex.c (WIDE_CHAR_SUPPORT): Likewise. +=09(convert_mbs_to_wcs): Likewise. +=09(PREFIX): Likewise. +=09(wcs_compile_range): Likewise. +=09(count_mbs_length): Likewise. +=09(wcs_re_match_2_internal): Likewise. +=09(byte_re_match_2_internal): Likewise. +=09* sigsetmask.c: Likewise. +=09* simple-object-elf.c (SHT_SYMTAB_SHNDX): Likewise. +=09(STV_HIDDEN): Likewise. +=09(simple_object_elf_copy_lto_debug_sections): Likewise. +=09* simple-object-mach-o.c (struct mach_o_header_32): Likewise. +=09(struct mach_o_header_64): Likewise. +=09(simple_object_mach_o_write_segment): Likewise. +=09* strsignal.c (defined): Likewise. + 2026-03-05 Jakub Jelinek =20 =09PR target/124365 diff --git a/libiberty/bcopy.c b/libiberty/bcopy.c index f9b7a8acd5c..914b698d225 100644 --- a/libiberty/bcopy.c +++ b/libiberty/bcopy.c @@ -1,4 +1,4 @@ -/* bcopy -- copy memory regions of arbitary length +/* bcopy -- copy memory regions of arbitrary length =20 @deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @= var{length}) =20 diff --git a/libiberty/bsearch.c b/libiberty/bsearch.c index 18158b9591b..eb7e1778b4b 100644 --- a/libiberty/bsearch.c +++ b/libiberty/bsearch.c @@ -60,7 +60,7 @@ is respectively less than, matching, or greater than the = array member. * is odd, moving left simply involves halving lim: e.g., when lim * is 5 we look at item 2, so we change lim to 2 so that we will * look at items 0 & 1. If lim is even, the same applies. If lim - * is odd, moving right again involes halving lim, this time moving + * is odd, moving right again involves halving lim, this time moving * the base up one item past p: e.g., when lim is 5 we change base * to item 3 and make lim 2 so that we will look at items 3 and 4. * If lim is even, however, we have to shrink it by one before diff --git a/libiberty/bsearch_r.c b/libiberty/bsearch_r.c index 2a2ca6f5e23..42c9e45c1aa 100644 --- a/libiberty/bsearch_r.c +++ b/libiberty/bsearch_r.c @@ -61,7 +61,7 @@ is respectively less than, matching, or greater than the = array member. * is odd, moving left simply involves halving lim: e.g., when lim * is 5 we look at item 2, so we change lim to 2 so that we will * look at items 0 & 1. If lim is even, the same applies. If lim - * is odd, moving right again involes halving lim, this time moving + * is odd, moving right again involves halving lim, this time moving * the base up one item past p: e.g., when lim is 5 we change base * to item 3 and make lim 2 so that we will look at items 3 and 4. * If lim is even, however, we have to shrink it by one before diff --git a/libiberty/configure b/libiberty/configure index 4c72b5a9283..379a3cfa9c3 100755 --- a/libiberty/configure +++ b/libiberty/configure @@ -6234,7 +6234,7 @@ _ACEOF =20 =20 =20 -# Check for presense of long long +# Check for presence of long long ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_inclu= des_default" if test "x$ac_cv_type_long_long" =3D xyes; then : =20 diff --git a/libiberty/configure.ac b/libiberty/configure.ac index 199fa192fe4..03b835ce828 100644 --- a/libiberty/configure.ac +++ b/libiberty/configure.ac @@ -321,7 +321,7 @@ AC_CHECK_SIZEOF([int]) AC_CHECK_SIZEOF([long]) AC_CHECK_SIZEOF([size_t]) =20 -# Check for presense of long long +# Check for presence of long long AC_CHECK_TYPE([long long], [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]= ) AC_CHECK_SIZEOF([long long])], []) diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 5e6571d419b..5f08ef8946a 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -82,7 +82,7 @@ =20 IN_GLIBCPP_V3 If defined, this file defines only __cxa_demangle() and - __gcclibcxx_demangle_callback(), and no other publically visible + __gcclibcxx_demangle_callback(), and no other publicly visible functions or variables. =20 STANDALONE_DEMANGLER @@ -5590,7 +5590,7 @@ d_print_comp_inner (struct d_print_info *dpi, int opt= ions, =09=09const struct d_component_stack *dcse; =09=09int found_self_or_parent =3D 0; =20 -=09=09/* This traversal is reentering SUB as a substition. +=09=09/* This traversal is reentering SUB as a substitution. =09=09 If we are not beneath SUB or DC in the tree then we =09=09 need to restore SUB's template stack temporarily. */ =09=09for (dcse =3D dpi->component_stack; dcse !=3D NULL; @@ -6390,7 +6390,7 @@ d_print_comp (struct d_print_info *dpi, int options, dpi->recursion--; } =20 -/* Print a Java dentifier. For Java we try to handle encoded extended +/* Print a Java identifier. For Java we try to handle encoded extended Unicode characters. The C++ ABI doesn't mention Unicode encoding, so we don't it for C++. Characters are encoded as __U+_. */ diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c index f059f5690bb..9d55a1f2ccc 100644 --- a/libiberty/d-demangle.c +++ b/libiberty/d-demangle.c @@ -175,8 +175,33 @@ struct dlang_info { /* The string we are demangling. */ const char *s; + + /* The options passed to the demangler. */ + int options; + /* The index of the last back reference. */ int last_backref; + + /* The total number of back referenced types, including nested back + referenced types. This is reset to zero each time a back + reference is processed at the "top level" (i.e. not a nested back + reference). + + Cases have been encountered where a back reference type includes + references to other back reference types, which include further + back references. This was observed to a depth of 57. If each + layer only references the layer before twice then the innermost + string will be duplicated 2^57 times! + + We count the number of nested back references and compare this to + the recursion limit, even though this isn't strictly recursion. */ + int num_backrefs; + + /* Track the depth of back references. Depth 0 is considered the + top level. When we encounter a back reference at this depth the + NUM_BACKREFS field is reset to 0. At greater depths, + NUM_BACKREFS will be incremented. */ + int backref_depth; }; =20 /* Pass as the LEN to dlang_parse_template if symbol length is not known. = */ @@ -411,6 +436,24 @@ dlang_type_backref (string *decl, const char *mangled,= struct dlang_info *info, if (mangled - info->s >=3D info->last_backref) return NULL; =20 + /* A back reference might point to a type that itself contains back + references, which might themselves contain back references. + There might not be recursion going on, but we can run into + problems of exponential growth caused by the inner type appearing + to be referenced 10s of millions of times. */ + if (info->backref_depth > 0) + { + if ((info->options & DMGL_NO_RECURSE_LIMIT) =3D=3D 0 +=09 && info->num_backrefs > DEMANGLE_RECURSION_LIMIT) +=09return NULL; + + info->num_backrefs++; + } + else + info->num_backrefs =3D 0; + + info->backref_depth++; + int save_refpos =3D info->last_backref; info->last_backref =3D mangled - info->s; =20 @@ -424,6 +467,7 @@ dlang_type_backref (string *decl, const char *mangled, = struct dlang_info *info, backref =3D dlang_type (decl, backref, info); =20 info->last_backref =3D save_refpos; + info->backref_depth--; =20 if (backref =3D=3D NULL) return NULL; @@ -1067,7 +1111,7 @@ dlang_identifier (string *decl, const char *mangled, = struct dlang_info *info) } =20 /* Extract the plain identifier from MANGLED and prepend/append it to DECL - with special treatment for some magic compiler generted symbols. + with special treatment for some magic compiler generated symbols. Return the remaining string on success or NULL on failure. */ static const char * dlang_lname (string *decl, const char *mangled, unsigned long len) @@ -1931,17 +1975,20 @@ dlang_parse_template (string *decl, const char *man= gled, /* Initialize the information structure we use to pass around information.= */ static void dlang_demangle_init_info (const char *mangled, int last_backref, -=09=09=09 struct dlang_info *info) +=09=09=09 int options, struct dlang_info *info) { info->s =3D mangled; + info->options =3D options; info->last_backref =3D last_backref; + info->num_backrefs =3D 0; + info->backref_depth =3D 0; } =20 /* Extract and demangle the symbol in MANGLED. Returns the demangled signature on success or NULL on failure. */ =20 char * -dlang_demangle (const char *mangled, int option ATTRIBUTE_UNUSED) +dlang_demangle (const char *mangled, int options) { string decl; char *demangled =3D NULL; @@ -1962,7 +2009,7 @@ dlang_demangle (const char *mangled, int option ATTRI= BUTE_UNUSED) { struct dlang_info info; =20 - dlang_demangle_init_info (mangled, strlen (mangled), &info); + dlang_demangle_init_info (mangled, strlen (mangled), options, &info)= ; mangled =3D dlang_parse_mangle (&decl, mangled, &info); =20 /* Check that the entire symbol was successfully demangled. */ diff --git a/libiberty/dyn-string.c b/libiberty/dyn-string.c index 8f0a566ed23..6dfb3646847 100644 --- a/libiberty/dyn-string.c +++ b/libiberty/dyn-string.c @@ -49,8 +49,8 @@ Boston, MA 02110-1301, USA. */ function can be used with a dyn_string struct on the stack or embedded in another object. The contents of the string itself are still dynamically allocated. The string initially is capable - of holding at least SPACE characeters, including the terminating - NUL. If SPACE is 0, it will silently be increated to 1. =20 + of holding at least SPACE characters, including the terminating + NUL. If SPACE is 0, it will silently be increased to 1. =20 =20 If RETURN_ON_ALLOCATION_FAILURE is defined and memory allocation fails, returns 0. Otherwise returns 1. */ diff --git a/libiberty/ldirname.c b/libiberty/ldirname.c index c5e17a80ca4..2b9985c16cd 100644 --- a/libiberty/ldirname.c +++ b/libiberty/ldirname.c @@ -26,7 +26,7 @@ Given a pointer to a string containing a typical pathname (@samp{/usr/src/cmd/ls/ls.c} for example), returns a string containing the passed string up to, but not including, the final directory separator. =20 -If the given pathname doesn't contain a directory separator then this funt= ion +If the given pathname doesn't contain a directory separator then this func= tion returns the empty string; this includes an empty given pathname. @code{NU= LL} is returned on memory allocation error. =20 diff --git a/libiberty/make-relative-prefix.c b/libiberty/make-relative-pre= fix.c index 58cab574151..05b52c2f2a1 100644 --- a/libiberty/make-relative-prefix.c +++ b/libiberty/make-relative-prefix.c @@ -410,7 +410,7 @@ make_relative_prefix_1 (const char *progname, const cha= r *bin_prefix, /* Do the full job, including symlink resolution. This path will find files installed in the same place as the program even when a soft link has been made to the program - from somwhere else. */ + from somewhere else. */ =20 char * make_relative_prefix (const char *progname, const char *bin_prefix, diff --git a/libiberty/obstacks.texi b/libiberty/obstacks.texi index 37d26c90f1b..9bea973bee2 100644 --- a/libiberty/obstacks.texi +++ b/libiberty/obstacks.texi @@ -695,7 +695,7 @@ Summary of Obstacks @var{chunk_size} bytes. =20 @item int obstack_specify_allocation (struct obstack *@var{obstack-ptr}, s= ize_t chunk_size, size_t alignment, void *(*chunkfun) (size_t), void (*free= fun) (void *)) -Initialize use of an obstack, specifying intial chunk size, chunk +Initialize use of an obstack, specifying initial chunk size, chunk alignment, and memory allocation functions. =20 @item int obstack_specify_allocation_with_arg (struct obstack *@var{obstac= k-ptr}, size_t chunk_size, size_t alignment, void *(*chunkfun) (void *, siz= e_t), void (*freefun) (void *, void *), void *arg) diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index 2ba9b69b830..8ea4e7f822a 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -350,7 +350,7 @@ argv_to_cmdline (char *const *argv) /* We only quote arguments that contain spaces, \t or " characters t= o =09 prevent wasting 2 chars per argument of the CreateProcess 32k char =09 limit. We need only escape embedded double-quotes and immediately -=09 preceeding backslash characters. A sequence of backslach characters +=09 preceding backslash characters. A sequence of backslach characters =09 that is not followed by a double quote character will not be =09 escaped. */ needs_quotes =3D 0; @@ -363,7 +363,7 @@ argv_to_cmdline (char *const *argv) =20 =09 if (argv[i][j] =3D=3D '"') =09 { -=09 /* Escape preceeding backslashes. */ +=09 /* Escape preceding backslashes. */ =09 for (k =3D j - 1; k >=3D 0 && argv[i][k] =3D=3D '\\'; k--) =09=09cmdline_len++; =09 /* Escape the quote character. */ @@ -695,7 +695,7 @@ spawn_script (struct pex_obj *obj, int fd =3D _open (executable, _O_RDONLY); =20 /* Try to open script, check header format, extract interpreter path, - and spawn script using that interpretter. */ + and spawn script using that interpreter. */ if (fd >=3D 0) { char buf[MAX_PATH + 5]; diff --git a/libiberty/random.c b/libiberty/random.c index cd0b7399e73..38c4317c5d1 100644 --- a/libiberty/random.c +++ b/libiberty/random.c @@ -88,7 +88,7 @@ long int random (void); then initialized to contain information for random number generation wi= th that much state information. Good sizes for the amount of state information are 32, 64, 128, and 256 bytes. The state can be switched = by - calling the setstate() function with the same array as was initiallized + calling the setstate() function with the same array as was initialized with initstate(). By default, the package runs with 128 bytes of state information and generates far better random numbers than a linear congruential generator. If the amount of state information is less tha= n @@ -362,7 +362,7 @@ setstate (void *arg_state) =0C /* If we are using the trivial TYPE_0 R.N.G., just do the old linear congruential bit. Otherwise, we do our fancy trinomial stuff, which is= the - same in all ther other cases due to all the global variables that have = been + same in all the other cases due to all the global variables that have b= een set up. The basic operation is to add the number at the rear pointer i= nto the one at the front pointer. Then both pointers are advanced to the n= ext location cyclically in the table. The value returned is the sum genera= ted, diff --git a/libiberty/regex.c b/libiberty/regex.c index 459911eaa14..2379fe9eda7 100644 --- a/libiberty/regex.c +++ b/libiberty/regex.c @@ -58,7 +58,7 @@ =20 # define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) =20 -/* For platform which support the ISO C amendement 1 functionality we +/* For platform which support the ISO C amendment 1 functionality we support user defined character classes. */ # if defined _LIBC || WIDE_CHAR_SUPPORT /* Solaris 2.5 has a bug: must be included before . *= / @@ -1235,7 +1235,7 @@ printchar (int c) =20 # ifdef WCHAR /* This convert a multibyte string to a wide character string. - And write their correspondances to offset_buffer(see below) + And write their correspondences to offset_buffer(see below) and write whether each wchar_t is binary data to is_binary. This assume invalid multibyte sequences as binary data. We assume offset_buffer and is_binary is already allocated @@ -1247,7 +1247,7 @@ static size_t convert_mbs_to_wcs (CHAR_T *dest, const= unsigned char* src, static size_t convert_mbs_to_wcs (CHAR_T *dest, const unsigned char*src, size_t len, int *offset_buffer, char *is_binary) - /* It hold correspondances between src(char string) and + /* It hold correspondences between src(char string) and =09dest(wchar_t string) for optimization. =09e.g. src =3D "xxxyzz" dest =3D {'X', 'Y', 'Z'} @@ -1281,7 +1281,7 @@ convert_mbs_to_wcs (CHAR_T *dest, const unsigned char= *src, size_t len, =20 if (consumed <=3D 0) =09/* failed to convert. maybe src contains binary data. -=09 So we consume 1 byte manualy. */ +=09 So we consume 1 byte manually. */ =09{ =09 *pdest =3D *psrc; =09 consumed =3D 1; @@ -2174,7 +2174,7 @@ typedef struct # ifndef DEFINED_ONCE # if defined _LIBC || WIDE_CHAR_SUPPORT /* The GNU C library provides support for user-defined character classes - and the functions from ISO C amendement 1. */ + and the functions from ISO C amendment 1. */ # ifdef CHARCLASS_NAME_MAX # define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX # else @@ -3416,7 +3416,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern= ), =09=09=09=09 int32_t idx2 =3D table[ch]; =09=09=09=09 size_t len =3D weights[idx2]; =20 -=09=09=09=09 /* Test whether the lenghts match. */ +=09=09=09=09 /* Test whether the lengths match. */ =09=09=09=09 if (weights[idx] =3D=3D len) =09=09=09=09 { =09=09=09=09 /* They do. New compare the bytes of @@ -4389,7 +4389,7 @@ wcs_compile_range (CHAR_T range_start_char, const CHA= R_T **p_ptr, =09{ =09 /* range_start is a collating symbol. */ =09 int32_t *wextra; -=09 /* Retreive the index and get collation sequence value. */ +=09 /* Retrieve the index and get collation sequence value. */ =09 wextra =3D (int32_t*)(extra + char_set[-range_start_char]); =09 start_val =3D wextra[1 + *wextra]; =09} @@ -5502,7 +5502,7 @@ count_mbs_length(int *offset_buffer, int length) return 0; =20 /* If there are no multibyte character, offset_buffer[i] =3D=3D i. - Optmize for this case. */ + Optimize for this case. */ if (offset_buffer[length] =3D=3D length) return length; =20 @@ -5538,7 +5538,7 @@ wcs_re_match_2_internal (struct re_pattern_buffer *bu= fp, =09=09=09 struct re_registers *regs, int stop, /* string1 =3D=3D string2 =3D=3D NULL means string1/2, size1/2 and -=09mbs_offset1/2 need seting up in this function. */ +=09mbs_offset1/2 need setting up in this function. */ /* We need wchar_t* buffers correspond to cstring1, cstring2. */ wchar_t *string1, int size1, wchar_t *string2, int size2, @@ -5739,7 +5739,7 @@ byte_re_match_2_internal (struct re_pattern_buffer *b= ufp, fill them with converted string. */ if (string1 =3D=3D NULL && string2 =3D=3D NULL) { - /* We need seting up buffers here. */ + /* We need setting up buffers here. */ =20 /* We must free wcs buffers in this function. */ cant_free_wcs_buf =3D 0; diff --git a/libiberty/sigsetmask.c b/libiberty/sigsetmask.c index f7a24246d1f..d4f27cf6c42 100644 --- a/libiberty/sigsetmask.c +++ b/libiberty/sigsetmask.c @@ -1,7 +1,7 @@ /* Version of sigsetmask.c Written by Steve Chamberlain (sac@cygnus.com). Contributed by Cygnus Support. - This file is in the public doamin. */ + This file is in the public domain. */ =20 /* =20 diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c index ef6ec8619c1..bde62304954 100644 --- a/libiberty/simple-object-elf.c +++ b/libiberty/simple-object-elf.c @@ -198,7 +198,7 @@ typedef struct { #define SHT_RELA=094=09=09/* Relocation entries with addends */ #define SHT_REL=09=099=09=09/* Relocation entries, no addends */ #define SHT_GROUP=0917=09=09/* Section contains a section group */ -#define SHT_SYMTAB_SHNDX 18=09=09/* Extended section indeces */ +#define SHT_SYMTAB_SHNDX 18=09=09/* Extended section indices */ =20 /* Values for sh_flags field. */ =20 @@ -246,7 +246,7 @@ typedef struct #define STB_WEAK=092=09/* Weak global */ =20 #define STV_DEFAULT=090=09/* Visibility is specified by binding type */ -#define STV_HIDDEN=092=09/* Can only be seen inside currect component */ +#define STV_HIDDEN=092=09/* Can only be seen inside current component */ =20 /* Functions to fetch and store different ELF types, depending on the endianness and size. */ @@ -1512,7 +1512,7 @@ simple_object_elf_copy_lto_debug_sections (simple_obj= ect_read *sobj, =09=09 of __gnu_lto_slim symbol. */ =09 if (st_shndx =3D=3D SHN_COMMON) =09=09discard =3D 1; -=09 /* We also need to remove symbols refering to sections +=09 /* We also need to remove symbols referring to sections =09=09 we'll eventually remove as with fat LTO objects =09=09 we otherwise get duplicate symbols at final link =09=09 (with GNU ld, gold is fine and ignores symbols in diff --git a/libiberty/simple-object-mach-o.c b/libiberty/simple-object-mac= h-o.c index 0897a3edf7d..c6dfe697497 100644 --- a/libiberty/simple-object-mach-o.c +++ b/libiberty/simple-object-mach-o.c @@ -53,7 +53,7 @@ struct mach_o_header_32 unsigned char filetype[4];=09/* Type of file. */ unsigned char ncmds[4];=09/* Number of load commands. */ unsigned char sizeofcmds[4];=09/* Total size of load commands. */ - unsigned char flags[4];=09/* Flags for special featues. */ + unsigned char flags[4];=09/* Flags for special features. */ }; =20 /* Mach-O header (64-bit version). */ @@ -66,7 +66,7 @@ struct mach_o_header_64 unsigned char filetype[4];=09/* Type of file. */ unsigned char ncmds[4];=09/* Number of load commands. */ unsigned char sizeofcmds[4];=09/* Total size of load commands. */ - unsigned char flags[4];=09/* Flags for special featues. */ + unsigned char flags[4];=09/* Flags for special features. */ unsigned char reserved[4];=09/* Reserved. Duh. */ }; =20 @@ -1194,8 +1194,8 @@ simple_object_mach_o_write_segment (simple_object_wri= te *sobj, int descriptor, unsigned int i; =20 /* Write the section header for the wrapper. */ - /* Account for any initial aligment - which becomes the alignment fo= r this -=09 created section. */ + /* Account for any initial alignment - which becomes the alignment f= or +=09 this created section. */ =20 secsize =3D (offset - index[0]); if (!simple_object_mach_o_write_section_header (sobj, descriptor, @@ -1208,7 +1208,7 @@ simple_object_mach_o_write_segment (simple_object_wri= te *sobj, int descriptor, =09=09=09=09=09=09 errmsg, err)) =09return 0; =20 - /* Subtract the wrapper section start from the begining of each sub + /* Subtract the wrapper section start from the beginning of each sub =09 section. */ =20 for (i =3D 1; i < nsects_in; ++i) diff --git a/libiberty/strsignal.c b/libiberty/strsignal.c index 36b41f17e12..33254ca8a23 100644 --- a/libiberty/strsignal.c +++ b/libiberty/strsignal.c @@ -152,7 +152,7 @@ static const struct signal_info signal_table[] =3D #endif #if defined (SIGIO) /* "I/O pending" has also been suggested, but is misleading since the - signal only happens when the process has asked for it, not everytime + signal only happens when the process has asked for it, not every time I/O is pending. */ ENTRY(SIGIO, "SIGIO", "I/O possible"), #endif @@ -208,7 +208,7 @@ static const struct signal_info signal_table[] =3D ENTRY(SIGGRANT, "SIGGRANT", "Monitor mode granted"), #endif #if defined (SIGRETRACT) - ENTRY(SIGRETRACT, "SIGRETRACT", "Need to relinguish monitor mode"), + ENTRY(SIGRETRACT, "SIGRETRACT", "Need to relinquish monitor mode"), #endif #if defined (SIGMSG) ENTRY(SIGMSG, "SIGMSG", "Monitor mode data available"), diff --git a/libiberty/testsuite/d-demangle-expected b/libiberty/testsuite/= d-demangle-expected index cfbdf2a52cb..8c671b62316 100644 --- a/libiberty/testsuite/d-demangle-expected +++ b/libiberty/testsuite/d-demangle-expected @@ -1475,3 +1475,15 @@ demangle.anonymous.foo --format=3Dauto _D8demangle9anonymous03fooZ demangle.anonymous.foo +# +# This symbol was seen in the wild. It has a pattern of back +# references that result in exponential growth, with the innermost +# type being referenced 10s of millions of times. We use the +# demangler's recursion limit to place a hard cap on back reference +# usage, which causes the demangler to safely bail out before +# consuming an excessive amount of memory. Trying to demangle this +# without the recursion limit in place will eventually cause the OOM +# killer to kick in. +--format=3Ddlang +_D3std6format5write__T14formattedWriteTDFAxaZvTaTS2ae5utils4text7functor__= T13stringifiableTSQBqQBqQBi10primitives__TQCaSQCsQCsQCk11composition__T3seq= TSQDxQDxQDpQCh__TQDySQEqQEqQEnQEl__T17formattingFunctorVAyaa2_2573Vii250TQr= Z15__lambda_L40_C3TQBmZ7FunctorTSQHzQHzQHrQGj__TQIaSQIsQIsQIpQIn__TQEcVQDma= 2_2573Vii250TSQKdQKdQKaQJy__TQJtTSQKxQKxQKpQJh__TQKyS4btdu2ui6curses6Curses= 4Wand__T8withAttrTSQNfQNfQNcQNa__TQMvTSQNzQNzQNrQMj__TQOaSQOsQOsQOkQMa__T6s= electTSQPqQPqQPiQOa__TQPrSQQjQQjQQbQOt__T12valueFunctorTbZQrFbZ17__lambda_L= 143_C57TbZQLbTSQSvQSvQSnQRf__TQSwSQToQToQTlQTj__T5fmtIfVQOlnTbTPFNaNbNiNfZQ= PdTSQVhQVhQUzQTr__TQViSQKkQKi7browser7Browser6updateMFZ__T17__lambda_L1185_= C4TQSeTSQYiQYiQYfQYd__TQXyTSQZcQZcQYuQXm__TQZdSQZvQZvQZnQXd__TQLdTQKzTSQBAt= QBAuQBAnQZg__TQBAxSQBBqQBBrQBBpQBBo__TQIgVQWonTbTSQBCvQBCwQBCpQBBi__TQBDaSQ= BDtQBDuQBDnQBCg__TQNoTSQBErQBEsQBEqQBEp__TQBElTSQBFqQBFrQBFkQBEd__TQBFvSQBG= oQBGpQBGiQBDz__TQBDqTSQBHnQBHoQBHhQBGa__TQBHsSQBIlQBImQBIkQBIj__TQBDzVQBDka= 2_2573Vii250TSQBKcQBKdQBKbQBKa__TQBJwTSQBLbQBLcQBKvQBJo__TQBLgSQBAjQBAiQBAj= QBAgQBAd__TQBAcTQBHcTSQBNhQBNiQBNgQBNf__TQBNbTSQBOgQBOhQBOaQBMt__TQBOlSQBDo= QBDnQBDoQBDlQBDi__TQBDhTQBKhZQBDrMFEQBFcQBFbQBFcQBEzQBEw9AttributebKQBLzZ19= __lambda_L503_C20_1TPSQBHlQBHkQBHlQBHiQBHfTQDfTbTSQBUdQBUeQBUcQBUb__TQBTxTS= QBVcQBVdQBUwQBTp__TQBVhSQBWaQBWbQBVuQBTl__TQBTcTQBTcZ3funTQBTmZQBPyZQBWtFQC= wZ13StringifiableZQBRcZQBXxFQKwZQBeTQBTkZQBMuMFQJdbQBTzQMwQBUgZ17__lambda_L= 503_C20TQIfTQKrTbTSQCBpQCBqQCBoQCBn__TQCBjTSQCCoQCCpQCCiQCBb__TQCCtSQCDmQCD= nQCDgQCAx__TQCAoTQCAoTSQCEqQCErQCEkQCDd__TQCEvSQCFoQCFpQCFnQCFm__TQCBcVQCAn= a2_2573Vii250TQTyZ17__lambda_L40_C3_1TQUwZQCArTQCEpZQLnTQCEyTQEkTQCFhZQCBtZ= QCIoFQHfZQLvZQCClZQCJgFQZkZQMnZ17__lambda_L40_C3_3TQBBlZQCEcTQCIaTQBEpZQPdT= QBEyTQCItTQBFiZQCFkZQCMfFQBHuZQPnZQBWuFQBJhZ19__lambda_L143_C57_1TQBKiZQCHo= TSQCPjQCPkQCPdQCNw__TQCPoSQCQhQCQiQCQbQCOu__TQCAcTQBHeZQCAmFQBHoZ19__lambda= _L143_C57_2TQBIpZQCLgZQBYxFNibQBQoQEeZQWnTQBRaZQCMkTSQCUfQCUgQCTzQCSs__TQCU= kSQCVdQCVeQCVcQCVb__TQCBtVQCQcnTbTQBTpTQHgZQCCpFNibQBUgQHwZQBAfTQIfZQCQcZQB= AtTQCImTQBXoTQEhZQCRaZQCXvFQBZyZQBBdZQCCaMFQCTqQCBmbSQCOjQCOiQCEbQCDx13Scro= llContextPSQCPq5paths11BrowserPathZ20__lambda_L1195_C76_1TQBxZQCVqZQCJhFNib= QCJbQCIqZQBGyTQCJpZQCWwTSQDErQDEsQDElQDDe__TQDEwSQDFpQDFqQDFoQDFn__TQCMfVQD= AonTbTQCMeTQCLuZQCNcFNibQCMwQCMlZQBKtTQCMvZQDArZQBLiTQCTbTQCQbTQEkZQDBpZQDI= kFQCVqZQBLsZQCXeMFQBTnbQCXfZ19__lambda_L503_C20_2TQBSlTQBUyTbTSQDLxQDLyQDLw= QDLv__TQDLrTSQDMwQDMxQDMqQDLj__TQDNbSQDNuQDNvQDNoQDLf__TQDKwTSQDOtQDOuQDOnQ= DNg__TQDOySQDPrQDPsQDPqQDPp__TQDLfVQDKqa2_2573Vii250TQDEdZ17__lambda_L40_C3= _7TQDFcZQDKwZQBVnTQEdZQDLkZQDSfFQGoZQBVmZQDMdZQDSyFQDJgZQBWgZ17__lambda_L40= _C3_8TQDLeZQDNwZQBYnTQDRzTQDOcZQDOqZQDVlFQDVaZQBYtZQDYbFKQDXqMxAaQDXoZk +_D3std6format5write__T14formattedWriteTDFAxaZvTaTS2ae5utils4text7functor__= T13stringifiableTSQBqQBqQBi10primitives__TQCaSQCsQCsQCk11composition__T3seq= TSQDxQDxQDpQCh__TQDySQEqQEqQEnQEl__T17formattingFunctorVAyaa2_2573Vii250TQr= Z15__lambda_L40_C3TQBmZ7FunctorTSQHzQHzQHrQGj__TQIaSQIsQIsQIpQIn__TQEcVQDma= 2_2573Vii250TSQKdQKdQKaQJy__TQJtTSQKxQKxQKpQJh__TQKyS4btdu2ui6curses6Curses= 4Wand__T8withAttrTSQNfQNfQNcQNa__TQMvTSQNzQNzQNrQMj__TQOaSQOsQOsQOkQMa__T6s= electTSQPqQPqQPiQOa__TQPrSQQjQQjQQbQOt__T12valueFunctorTbZQrFbZ17__lambda_L= 143_C57TbZQLbTSQSvQSvQSnQRf__TQSwSQToQToQTlQTj__T5fmtIfVQOlnTbTPFNaNbNiNfZQ= PdTSQVhQVhQUzQTr__TQViSQKkQKi7browser7Browser6updateMFZ__T17__lambda_L1185_= C4TQSeTSQYiQYiQYfQYd__TQXyTSQZcQZcQYuQXm__TQZdSQZvQZvQZnQXd__TQLdTQKzTSQBAt= QBAuQBAnQZg__TQBAxSQBBqQBBrQBBpQBBo__TQIgVQWonTbTSQBCvQBCwQBCpQBBi__TQBDaSQ= BDtQBDuQBDnQBCg__TQNoTSQBErQBEsQBEqQBEp__TQBElTSQBFqQBFrQBFkQBEd__TQBFvSQBG= oQBGpQBGiQBDz__TQBDqTSQBHnQBHoQBHhQBGa__TQBHsSQBIlQBImQBIkQBIj__TQBDzVQBDka= 2_2573Vii250TSQBKcQBKdQBKbQBKa__TQBJwTSQBLbQBLcQBKvQBJo__TQBLgSQBAjQBAiQBAj= QBAgQBAd__TQBAcTQBHcTSQBNhQBNiQBNgQBNf__TQBNbTSQBOgQBOhQBOaQBMt__TQBOlSQBDo= QBDnQBDoQBDlQBDi__TQBDhTQBKhZQBDrMFEQBFcQBFbQBFcQBEzQBEw9AttributebKQBLzZ19= __lambda_L503_C20_1TPSQBHlQBHkQBHlQBHiQBHfTQDfTbTSQBUdQBUeQBUcQBUb__TQBTxTS= QBVcQBVdQBUwQBTp__TQBVhSQBWaQBWbQBVuQBTl__TQBTcTQBTcZ3funTQBTmZQBPyZQBWtFQC= wZ13StringifiableZQBRcZQBXxFQKwZQBeTQBTkZQBMuMFQJdbQBTzQMwQBUgZ17__lambda_L= 503_C20TQIfTQKrTbTSQCBpQCBqQCBoQCBn__TQCBjTSQCCoQCCpQCCiQCBb__TQCCtSQCDmQCD= nQCDgQCAx__TQCAoTQCAoTSQCEqQCErQCEkQCDd__TQCEvSQCFoQCFpQCFnQCFm__TQCBcVQCAn= a2_2573Vii250TQTyZ17__lambda_L40_C3_1TQUwZQCArTQCEpZQLnTQCEyTQEkTQCFhZQCBtZ= QCIoFQHfZQLvZQCClZQCJgFQZkZQMnZ17__lambda_L40_C3_3TQBBlZQCEcTQCIaTQBEpZQPdT= QBEyTQCItTQBFiZQCFkZQCMfFQBHuZQPnZQBWuFQBJhZ19__lambda_L143_C57_1TQBKiZQCHo= TSQCPjQCPkQCPdQCNw__TQCPoSQCQhQCQiQCQbQCOu__TQCAcTQBHeZQCAmFQBHoZ19__lambda= _L143_C57_2TQBIpZQCLgZQBYxFNibQBQoQEeZQWnTQBRaZQCMkTSQCUfQCUgQCTzQCSs__TQCU= kSQCVdQCVeQCVcQCVb__TQCBtVQCQcnTbTQBTpTQHgZQCCpFNibQBUgQHwZQBAfTQIfZQCQcZQB= AtTQCImTQBXoTQEhZQCRaZQCXvFQBZyZQBBdZQCCaMFQCTqQCBmbSQCOjQCOiQCEbQCDx13Scro= llContextPSQCPq5paths11BrowserPathZ20__lambda_L1195_C76_1TQBxZQCVqZQCJhFNib= QCJbQCIqZQBGyTQCJpZQCWwTSQDErQDEsQDElQDDe__TQDEwSQDFpQDFqQDFoQDFn__TQCMfVQD= AonTbTQCMeTQCLuZQCNcFNibQCMwQCMlZQBKtTQCMvZQDArZQBLiTQCTbTQCQbTQEkZQDBpZQDI= kFQCVqZQBLsZQCXeMFQBTnbQCXfZ19__lambda_L503_C20_2TQBSlTQBUyTbTSQDLxQDLyQDLw= QDLv__TQDLrTSQDMwQDMxQDMqQDLj__TQDNbSQDNuQDNvQDNoQDLf__TQDKwTSQDOtQDOuQDOnQ= DNg__TQDOySQDPrQDPsQDPqQDPp__TQDLfVQDKqa2_2573Vii250TQDEdZ17__lambda_L40_C3= _7TQDFcZQDKwZQBVnTQEdZQDLkZQDSfFQGoZQBVmZQDMdZQDSyFQDJgZQBWgZ17__lambda_L40= _C3_8TQDLeZQDNwZQBYnTQDRzTQDOcZQDOqZQDVlFQDVaZQBYtZQDYbFKQDXqMxAaQDXoZk base-commit: 4562eab73d375e57f3c5a67f62d2678d7730d7ab --=20 2.25.4