From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id C09BF3858C52; Thu, 21 Sep 2023 05:01:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C09BF3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-99c136ee106so57363866b.1; Wed, 20 Sep 2023 22:01:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695272471; x=1695877271; darn=gcc.gnu.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=0zZEya5XNeP7VvFILdqkHYwgxRibL0LnVj/T9S4LX+A=; b=HLIDTamzHSDUGxbym1p/Zu0BjnjjEL+euYJbw3jefeSpijn56LOcJ5gmJf70tmvxTC w5KVsw1+wBixYXW6XpwEOnc3JFsFwHSw54jEv9kS9b53t+o8a9aNu6dHBYIx7MrLNDJe Qeq9EI7rE1z48rjM1/Yo2Fh9gdugpJaRHPhMst6KWIEgLmFAdEnxidubirSOBacjfdwl wFtwCXn2Id0Fp6qgN4zXrEQumy+Uwbc278imy0tnMFtu4RNoEKpMFCNDvhfV26dPZ/5H +dViw6yOoRY5aEMp5D27MTiQVCgkjX0IAbsDaNUnvoXBPEX5Ju7npTbYZpxrtUIG7UKb 06aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695272471; x=1695877271; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0zZEya5XNeP7VvFILdqkHYwgxRibL0LnVj/T9S4LX+A=; b=YosPNbNHj5JaBLup1ilfw9N1NrVB5QwiPtgwMELjHnNIyoaxNopL01BTe8aUT78h6g qfIPXZEJaRYcsT+Trr6PD6lN+iPtzSrFencdxz9zUvGSWpJP/TmIy4w+mBrZk3QwCbgQ iHCtnGhdQwS3QJ7WKoxziOFtZRbd+WeLmsUOClnSg6LcuFeAv5v42WdaIzA4VmH+GEwd dcx1uqyS8bNa937vd6pY0tfnYciYm8U6ExeFRgLHHTVVCfvrqjG2Wrj6SVDeENhHHlp7 ia3qvhW7EABYwzTUWIXi5cIENNB2f+/b44s5QpjlPvnEVaH0Kppc/IgbCtnsESU8CglL QZyg== X-Gm-Message-State: AOJu0YwCWj+v0vbIxnFL5xvgljPebU0P30CZBG0ciniilKh/vFFQcooj xP8XAg14bLJu36Ao+Zoa1Uc9jiQ0ZkH9Ug== X-Google-Smtp-Source: AGHT+IHLNSJLCuBzYKySc7LI3eEs9k9Jw2ClKszvLYtc552QyhWRaytmr4ZuwZyCmguKhvtIZfi4mw== X-Received: by 2002:a17:906:3291:b0:9ad:99a8:7c53 with SMTP id 17-20020a170906329100b009ad99a87c53mr3704396ejw.60.1695272471343; Wed, 20 Sep 2023 22:01:11 -0700 (PDT) Received: from [10.31.0.70] ([89.207.171.102]) by smtp.gmail.com with ESMTPSA id l5-20020a170906a40500b009ae4ead6c01sm462481ejz.163.2023.09.20.22.01.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 20 Sep 2023 22:01:10 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------i3eqMp6j023DFpj0I0L28EOJ" Message-ID: <2cc3345e-9d82-53db-8a9a-29a25c99b9b8@gmail.com> Date: Thu, 21 Sep 2023 07:01:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: Attempt to fix g++.dg tests failures in gnu-versioned-namespace mode To: Thomas Schwinge Cc: gcc@gcc.gnu.org, libstdc++@gcc.gnu.org, Jonathan Wakely References: <602a9594-eb22-117a-0372-9cdbaa0d2672@gmail.com> <87v8c55mxo.fsf@euler.schwinge.homeip.net> Content-Language: en-US From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= In-Reply-To: <87v8c55mxo.fsf@euler.schwinge.homeip.net> X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------i3eqMp6j023DFpj0I0L28EOJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Thanks for the feedback, seems a little bit too complicated for what I'm trying to achieve. I'm eventually testing this patch which is also how libstdc++ is managing this small problem. I'll submit a proper patch once confirmed that tests are fixed. François On 20/09/2023 09:22, Thomas Schwinge wrote: > Hi! > > On 2023-09-20T07:08:25+0200, François Dumont via Gcc wrote: >> I've configured libstdc++ with --enable-symvers=gnu-versioned-namespace > I can't comment on that option... > >> and run make check-c++. >> >> A number of failures are like this one: >> >> /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: >> In function 'coro1 f()': >> /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C:9:1: >> error: 'operator new' is provided by >> 'std::__8::__n4861::__coroutine_traits_impl::promise_type' >> {aka 'co >> ro1::promise_type'} but is not usable with the function signature 'coro1 >> f()' >> compiler exited with status 1 >> FAIL: g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C (test for >> errors, line 9) >> FAIL: g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C (test for excess >> errors) >> Excess errors: >> /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C:9:1: >> error: 'operator new' is provided by >> 'std::__n4861::__coroutine_traits_impl::promise_type' {aka >> 'coro1::promise_type'} but is not usable with the function signature >> 'coro1 f()' >> >> The '__8' is messing with expected output. >> >> So I've added: >> >> # Ignore optional version namespace from libstdc++. >> regsub -all "std::__8::" $text "std::" text > ..., and whether that's conceptually the correct solution... > >> in testsuite/lib/prune.exp prune_gcc_output. >> >> But it had no impact, same failures. >> >> What am I missing ? > ..., but I can answer that one: pruning happens after scanning for > 'dg-error' etc. (..., which are captured in 'dg-messages'). See DejaGnu > 'dg.exp:dg-test': > > [...] > set results [${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}"] > > set comp_output [lindex $results 0] > set output_file [lindex $results 1] > > foreach i ${dg-messages} { > verbose "Scanning for message: $i" 4 > > # Remove all error messages for the line [lindex $i 0] > # in the source file. If we find any, success! > [...] > } > > # Remove messages from the tool that we can ignore. > set comp_output [prune_warnings $comp_output] > [...] > if {$comp_output ne ""} { > fail "$name (test for excess errors)" > send_log "Excess errors:\n$comp_output\n" > } else { > pass "$name (test for excess errors)" > } > [...] > > So you'll have to have your 's%std::__8::%std::' work on 'dg-messages', I > suppose? > > > Grüße > Thomas > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 --------------i3eqMp6j023DFpj0I0L28EOJ Content-Type: text/x-patch; charset=UTF-8; name="gcc_testsuite.patch" Content-Disposition: attachment; filename="gcc_testsuite.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvY29yby1iYWQt YWxsb2MtMDAtYmFkLW9wLW5ldy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5l cy9jb3JvLWJhZC1hbGxvYy0wMC1iYWQtb3AtbmV3LkMKaW5kZXggNDcwNmRlZWJmNGUuLjky OGUwYzk3NGUxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jb3JvdXRpbmVz L2Nvcm8tYmFkLWFsbG9jLTAwLWJhZC1vcC1uZXcuQworKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jb3JvdXRpbmVzL2Nvcm8tYmFkLWFsbG9jLTAwLWJhZC1vcC1uZXcuQwpAQCAtNiw3 ICs2LDcgQEAKICNpbmNsdWRlICJjb3JvMS1hbGxvY2F0b3JzLmgiCiAKIHN0cnVjdCBjb3Jv MQotZiAoKSAgLyogeyBkZy1lcnJvciB7J29wZXJhdG9yIG5ldycgaXMgcHJvdmlkZWQgYnkg J3N0ZDo6X19uNDg2MTo6X19jb3JvdXRpbmVfdHJhaXRzX2ltcGw8Y29ybzEsIHZvaWQ+Ojpw cm9taXNlX3R5cGUnIFx7YWthICdjb3JvMTo6cHJvbWlzZV90eXBlJ1x9IGJ1dCBpcyBub3Qg dXNhYmxlIHdpdGggdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSAnY29ybzEgZlwoXCknfSB9ICov CitmICgpICAvKiB7IGRnLWVycm9yIHsnb3BlcmF0b3IgbmV3JyBpcyBwcm92aWRlZCBieSAn c3RkOjooX184OjopP19fbjQ4NjE6Ol9fY29yb3V0aW5lX3RyYWl0c19pbXBsPGNvcm8xLCB2 b2lkPjo6cHJvbWlzZV90eXBlJyBce2FrYSAnY29ybzE6OnByb21pc2VfdHlwZSdcfSBidXQg aXMgbm90IHVzYWJsZSB3aXRoIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgJ2Nvcm8xIGZcKFwp J30gfSAqLwogewogICBjb19yZXR1cm47CiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9jb3JvdXRpbmVzL2Nvcm8tYmFkLWFsbG9jLTAxLWJhZC1vcC1kZWwuQyBiL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvY29yby1iYWQtYWxsb2MtMDEtYmFkLW9w LWRlbC5DCmluZGV4IDI1MmNiNWU0NDJjLi5mYzJhZmNmNWUwZSAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9jb3JvLWJhZC1hbGxvYy0wMS1iYWQtb3At ZGVsLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9jb3JvLWJhZC1h bGxvYy0wMS1iYWQtb3AtZGVsLkMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSAiY29ybzEt YWxsb2NhdG9ycy5oIgogCiBzdHJ1Y3QgY29ybzEKLWYgKCkgIC8qIHsgZGctZXJyb3Igeydv cGVyYXRvciBkZWxldGUnIGlzIHByb3ZpZGVkIGJ5ICdzdGQ6Ol9fbjQ4NjE6Ol9fY29yb3V0 aW5lX3RyYWl0c19pbXBsPGNvcm8xLCB2b2lkPjo6cHJvbWlzZV90eXBlJyBce2FrYSAnY29y bzE6OnByb21pc2VfdHlwZSdcfSBidXQgaXMgbm90IHVzYWJsZSB3aXRoIHRoZSBmdW5jdGlv biBzaWduYXR1cmUgJ2Nvcm8xIGZcKFwpJ30gfSAqLworZiAoKSAgLyogeyBkZy1lcnJvciB7 J29wZXJhdG9yIGRlbGV0ZScgaXMgcHJvdmlkZWQgYnkgJ3N0ZDo6KF9fOCk/X19uNDg2MTo6 X19jb3JvdXRpbmVfdHJhaXRzX2ltcGw8Y29ybzEsIHZvaWQ+Ojpwcm9taXNlX3R5cGUnIFx7 YWthICdjb3JvMTo6cHJvbWlzZV90eXBlJ1x9IGJ1dCBpcyBub3QgdXNhYmxlIHdpdGggdGhl IGZ1bmN0aW9uIHNpZ25hdHVyZSAnY29ybzEgZlwoXCknfSB9ICovCiB7CiAgIGNvX3JldHVy bjsKIH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvY29y by1iYWQtYWxsb2MtMDItbm8tb3AtbmV3LW50LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j b3JvdXRpbmVzL2Nvcm8tYmFkLWFsbG9jLTAyLW5vLW9wLW5ldy1udC5DCmluZGV4IDg5OTcy YjYwOTQ1Li4wYTU0NWZlZDBlMyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y29yb3V0aW5lcy9jb3JvLWJhZC1hbGxvYy0wMi1uby1vcC1uZXctbnQuQworKysgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jb3JvdXRpbmVzL2Nvcm8tYmFkLWFsbG9jLTAyLW5vLW9wLW5l dy1udC5DCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgImNvcm8xLWFsbG9jYXRvcnMuaCIK IAogc3RydWN0IGNvcm8xCi1mICgpIC8qIHsgZGctZXJyb3Igeydjb3JvMTo6cHJvbWlzZV90 eXBlOjpnZXRfcmV0dXJuX29iamVjdF9vbl9hbGxvY2F0aW9uX2ZhaWx1cmVcKFwpXChcKScg aXMgcHJvdmlkZWQgYnkgJ3N0ZDo6X19uNDg2MTo6X19jb3JvdXRpbmVfdHJhaXRzX2ltcGw8 Y29ybzEsIHZvaWQ+Ojpwcm9taXNlX3R5cGUnIFx7YWthICdjb3JvMTo6cHJvbWlzZV90eXBl J1x9IGJ1dCAnb3BlcmF0b3IgbmV3JyBpcyBub3QgbWFya2VkICd0aHJvd1woXCknIG9yICdu b2V4Y2VwdCd9IH0gKi8KK2YgKCkgLyogeyBkZy1lcnJvciB7J2Nvcm8xOjpwcm9taXNlX3R5 cGU6OmdldF9yZXR1cm5fb2JqZWN0X29uX2FsbG9jYXRpb25fZmFpbHVyZVwoXClcKFwpJyBp cyBwcm92aWRlZCBieSAnc3RkOjooX184OjopP19fbjQ4NjE6Ol9fY29yb3V0aW5lX3RyYWl0 c19pbXBsPGNvcm8xLCB2b2lkPjo6cHJvbWlzZV90eXBlJyBce2FrYSAnY29ybzE6OnByb21p c2VfdHlwZSdcfSBidXQgJ29wZXJhdG9yIG5ldycgaXMgbm90IG1hcmtlZCAndGhyb3dcKFwp JyBvciAnbm9leGNlcHQnfSB9ICovCiB7CiAgIGNvX3JldHVybjsKIH0KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvY29yby1iYWQtZ3Jvb2FmLTAxLWdy b29hZi1leHBlY3RlZC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9jb3Jv LWJhZC1ncm9vYWYtMDEtZ3Jvb2FmLWV4cGVjdGVkLkMKaW5kZXggOWZhM2Q2NGE5ZjIuLmIz NmU4OGY4NzFhIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jb3JvdXRpbmVz L2Nvcm8tYmFkLWdyb29hZi0wMS1ncm9vYWYtZXhwZWN0ZWQuQworKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jb3JvdXRpbmVzL2Nvcm8tYmFkLWdyb29hZi0wMS1ncm9vYWYtZXhwZWN0 ZWQuQwpAQCAtNiw3ICs2LDcgQEAKIGludCB1c2VkX2dyb29hZiA9IDA7CiAKIHN0cnVjdCBj b3JvMQotZiAoKSBub2V4Y2VwdCAvLyB7IGRnLXdhcm5pbmcgeydvcGVyYXRvciBuZXcnIGlz IG1hcmtlZCAndGhyb3dcKFwpJyBvciAnbm9leGNlcHQnIGJ1dCBubyB1c2FibGUgJ2dldF9y ZXR1cm5fb2JqZWN0X29uX2FsbG9jYXRpb25fZmFpbHVyZScgaXMgcHJvdmlkZWQgYnkgJ3N0 ZDo6X19uNDg2MTo6X19jb3JvdXRpbmVfdHJhaXRzX2ltcGw8Y29ybzEsIHZvaWQ+Ojpwcm9t aXNlX3R5cGUnIFx7YWthICdjb3JvMTo6cHJvbWlzZV90eXBlJ1x9fSB9CitmICgpIG5vZXhj ZXB0IC8vIHsgZGctd2FybmluZyB7J29wZXJhdG9yIG5ldycgaXMgbWFya2VkICd0aHJvd1wo XCknIG9yICdub2V4Y2VwdCcgYnV0IG5vIHVzYWJsZSAnZ2V0X3JldHVybl9vYmplY3Rfb25f YWxsb2NhdGlvbl9mYWlsdXJlJyBpcyBwcm92aWRlZCBieSAnc3RkOjooX184OjopP19fbjQ4 NjE6Ol9fY29yb3V0aW5lX3RyYWl0c19pbXBsPGNvcm8xLCB2b2lkPjo6cHJvbWlzZV90eXBl JyBce2FrYSAnY29ybzE6OnByb21pc2VfdHlwZSdcfX0gfQogewogICBQUklOVCAoImNvcm8x OiBhYm91dCB0byByZXR1cm4iKTsKICAgY29fcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9wcjk3NDM4LkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jb3JvdXRpbmVzL3ByOTc0MzguQwppbmRleCA5NTM3NjY0OGVkNy4uYWMzNzExOGVh ZTcgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvcHI5NzQz OC5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nvcm91dGluZXMvcHI5NzQzOC5DCkBA IC0yNSw2ICsyNSw2IEBAIHB1YmxpYzoKIH0KIAogZHVtbXlfY29yb3V0aW5lCi1mb28oKSB7 IC8vIHsgZGctZXJyb3Ige3RoZSBjb3JvdXRpbmUgcHJvbWlzZSB0eXBlICdzdGQ6Ol9fbjQ4 NjE6OmNvcm91dGluZV90cmFpdHM8ZHVtbXlfY29yb3V0aW5lPjo6cHJvbWlzZV90eXBlJyBk ZWNsYXJlcyBib3RoICdyZXR1cm5fdmFsdWUnIGFuZCAncmV0dXJuX3ZvaWQnfSB9Citmb28o KSB7IC8vIHsgZGctZXJyb3Ige3RoZSBjb3JvdXRpbmUgcHJvbWlzZSB0eXBlICdzdGQ6Oihf Xzg6Oik/X19uNDg2MTo6Y29yb3V0aW5lX3RyYWl0czxkdW1teV9jb3JvdXRpbmU+Ojpwcm9t aXNlX3R5cGUnIGRlY2xhcmVzIGJvdGggJ3JldHVybl92YWx1ZScgYW5kICdyZXR1cm5fdm9p ZCd9IH0KICAgICBjb19yZXR1cm4gMTc7CiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9jb3JvdXRpbmVzL3JhbXAtcmV0dXJuLWIuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2Nvcm91dGluZXMvcmFtcC1yZXR1cm4tYi5DCmluZGV4IGQwZTVkMWYzYzdmLi5mY2Nh MWQ3M2EwMiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9y YW1wLXJldHVybi1iLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29yb3V0aW5lcy9y YW1wLXJldHVybi1iLkMKQEAgLTE5LDQgKzE5LDQgQEAgdGFzazxzdGQ6OnZlY3RvcjxpbnQ+ PgogYmF6ICgpCiB7CiAgIGNvX3JldHVybiBzdGQ6OnZlY3RvcjxpbnQ+KCk7Ci19IC8vIHsg ZGctZXJyb3Ige3VzZSBvZiBkZWxldGVkIGZ1bmN0aW9uICd0YXNrPFQ+Ojp0YXNrXChjb25z dCB0YXNrPFQ+JlwpIFxbd2l0aCBUID0gc3RkOjp2ZWN0b3I8aW50PlxdJ30gfQorfSAvLyB7 IGRnLWVycm9yIHt1c2Ugb2YgZGVsZXRlZCBmdW5jdGlvbiAndGFzazxUPjo6dGFza1woY29u c3QgdGFzazxUPiZcKSBcW3dpdGggVCA9IHN0ZDo6KF9fODo6KT92ZWN0b3I8aW50PlxdJ30g fQo= --------------i3eqMp6j023DFpj0I0L28EOJ--