From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by sourceware.org (Postfix) with ESMTPS id 9E2083851C2B for ; Thu, 8 Oct 2020 21:39:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9E2083851C2B Received: by mail-oi1-x22b.google.com with SMTP id m7so8011785oie.0 for ; Thu, 08 Oct 2020 14:39:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=aR/cgSWLykZedSQzf0ZsKLTi5BMrqShd6cb//1vsjAk=; b=W75AWqR2euazIMJJj8Z9S3+zzKsHWZ2sg493HIuXamOjClXAuG8vll3nRpfhjEAvQ6 +jFdO0xh3x2X4Z9xn616rTf7FG8px7DuaaDNQDP3khGlTb/nonswX/Wgo2ANnjp/C1Bh hHURwzoBSm0I9wo+xe9phVu0RuBCgDmTdKiaVpDkC6Qez+QC6ih1f7EzxN9IQJqWisy7 j9PyPK0WAqVvMSoQCaDPNjUUOJFfnacLJPr85IOpMZ1xKVKNjtqcNz9UYtvtwClMpO/L 3HgHfJaXwuTPWdj0eJXfRhovSF/14qoPOP2Ejd7H3jp05cKhcSZnw/aBZMUMNRG/svN1 RlPw== X-Gm-Message-State: AOAM533JRTljGsQIom1n2TrsPX6JL5sxADC4BbM938Kr+ckwbCypuEgM UOWBNvLnWdK5bNJQ/qlkj+sVd+tsAW7dRDdmnic= X-Google-Smtp-Source: ABdhPJwvsCa7wXkyvaF7693owvmDI5ZjBejja1zzrLMXHKPoYvsvJiu+sZ8l/rE/c1SBNqwGq8tcNyWLf60ehmYqI6M= X-Received: by 2002:aca:8d2:: with SMTP id 201mr491048oii.111.1602193167970; Thu, 08 Oct 2020 14:39:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: JeanHeyd Meneide Date: Thu, 8 Oct 2020 17:39:15 -0400 Message-ID: Subject: Re: [ Preprocessor ] [ Common ] Feature: Macros for identifying the wide and narrow execution string literal encoding To: Joseph Myers Cc: gcc-patches Content-Type: multipart/mixed; boundary="000000000000a39cbe05b12faa8f" X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Oct 2020 21:39:30 -0000 --000000000000a39cbe05b12faa8f Content-Type: text/plain; charset="UTF-8" Dear Joseph, On Thu, Oct 8, 2020 at 1:36 PM Joseph Myers wrote: > > This documentation doesn't seem sufficient to use the macros. Do they > expand to (narrow) string literals? To an unquoted sequence of > characters? I think from the implementation that the answer is strings > (so, in particular, not usable for testing anything in #if conditionals), > but the documentation ought to say so. The test ought to verify the form > of the expansion as well (even if it can't do anything useful at execution > time, because if you make the macros reflect the command-line options they > are character set names that are meaningful on the host, and any > conversion functionality on the target may not use the same names as the > host). You're right; sorry about that, I should have been more thorough! I thought about adding a test to check the name itself (e.g, for "UTF-8"), but that might make tests fail on platforms where the default SOURCE_CHARSET from the dev files is not, in fact, UTF-8. I could also try to pass some options but then I'd have to guarantee that the encoding was available on all testable platforms, too...! In the end, for the tests, I just initialize two "const char[]" directly from the macro expansions to make sure we are getting strings. It seeeeeems to work okay. Attached is the revised patch with better docs and test! Sincerely, JeanHeyd 2020-10-08 JeanHeyd "ThePhD" Meneide * gcc/c-family/c-cppbuiltin.c: Add predefined macro definitions for charsets * gcc/doc/cpp.texi: Document new predefined macro. * gcc/testsuite/c-c++-common/cpp/wide-narrow-predef-macros.c (new): New test for macro definitions to always exist. * libcpp/include/cpplib.h: Add functions declarations for retrieving charset names * libcpp/directives.c: Add function definitions to retrieve charset names. * libcpp/internal.h: Add to/from name preservations --000000000000a39cbe05b12faa8f Content-Type: text/plain; charset="US-ASCII"; name="encoding_names.patch.txt" Content-Disposition: attachment; filename="encoding_names.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kg1ce4ao0 ZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWNwcGJ1aWx0aW4uYyBiL2djYy9jLWZhbWlseS9j LWNwcGJ1aWx0aW4uYwppbmRleCA3NGVjY2E4ZGU4ZS4uOGRlMjU3ODY1OTIgMTAwNjQ0Ci0tLSBh L2djYy9jLWZhbWlseS9jLWNwcGJ1aWx0aW4uYworKysgYi9nY2MvYy1mYW1pbHkvYy1jcHBidWls dGluLmMKQEAgLTg2Niw2ICs4NjYsMTMgQEAgY19jcHBfYnVpbHRpbnMgKGNwcF9yZWFkZXIgKnBm aWxlKQogCiAgIGRlZmluZV9sYW5ndWFnZV9pbmRlcGVuZGVudF9idWlsdGluX21hY3JvcyAocGZp bGUpOwogCisgIC8qIGVuY29kaW5nIGRlZmluaXRpb25zIHVzZWQgYnkgdXNlcnMgYW5kIGxpYnJh cmllcyAgKi8KKyAgYnVpbHRpbl9kZWZpbmVfd2l0aF92YWx1ZSAoIl9fR05VQ19FWEVDVVRJT05f Q0hBUlNFVF9OQU1FIiwKKyAgICBjcHBfZ2V0X25hcnJvd19jaGFyc2V0X25hbWUgKHBmaWxlKSwg MSk7CisgIGJ1aWx0aW5fZGVmaW5lX3dpdGhfdmFsdWUgKCJfX0dOVUNfV0lERV9FWEVDVVRJT05f Q0hBUlNFVF9OQU1FIiwKKyAgICBjcHBfZ2V0X3dpZGVfY2hhcnNldF9uYW1lIChwZmlsZSksIDEp OworCisKICAgaWYgKGNfZGlhbGVjdF9jeHggKCkpCiAgIHsKICAgICBpbnQgbWFqb3I7CmRpZmYg LS1naXQgYS9nY2MvZG9jL2NwcC50ZXhpIGIvZ2NjL2RvYy9jcHAudGV4aQppbmRleCAzM2Y4NzZh YjcwNi4uOTBmMTE2MmFkZDEgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvY3BwLnRleGkKKysrIGIvZ2Nj L2RvYy9jcHAudGV4aQpAQCAtMjQ1MSw2ICsyNDUxLDE1IEBAIGZlYXR1cmVzIGFyZSBzdXBwb3J0 ZWQgYnkgR0NDLgogQGl0ZW0gX19OT19NQVRIX0VSUk5PX18KIFRoaXMgbWFjcm8gaXMgZGVmaW5l ZCBpZiBAb3B0aW9uey1mbm8tbWF0aC1lcnJub30gaXMgdXNlZCwgb3IgZW5hYmxlZAogYnkgYW5v dGhlciBvcHRpb24gc3VjaCBhcyBAb3B0aW9uey1mZmFzdC1tYXRofSBvciBieSBkZWZhdWx0Lgor CitAaXRlbSBfX0dOVUNfRVhFQ1VUSU9OX0NIQVJTRVRfTkFNRQorQGl0ZW14IF9fR05VQ19XSURF X0VYRUNVVElPTl9DSEFSU0VUX05BTUUKK1RoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCB0byBleHBh bmQgdG8gYSBuYXJyb3cgc3RyaW5nIGxpdGVyYWwgb2YKK3RoZSBuYW1lIG9mIHRoZSBuYXJyb3cg YW5kIHdpZGUgY29tcGlsZS10aW1lIGV4ZWN1dGlvbiBjaGFyYWN0ZXIKK3NldCB1c2VkLiAgSXQg ZGlyZWN0bHkgcmVmbGVjdHMgdGhlIG5hbWUgcGFzc2VkIHRvIHRoZSBvcHRpb25zCitAb3B0aW9u ey1mZXhlYy1jaGFyc2V0fSBhbmQgQG9wdGlvbnstZndpZGUtZXhlYy1jaGFyc2V0fSwgb3IgdGhl IGRlZmF1bHRzCitkb2N1bWVudGVkIGZvciB0aG9zZSBvcHRpb25zICh0aGF0IGlzLCBpdCBjYW4g ZXhwYW5kIHRvIHNvbWV0aGluZyBsaWtlIAorQGNvZGV7IlVURi04In0pLiAgQHhyZWZ7SW52b2Nh dGlvbn0uCiBAZW5kIHRhYmxlCiAKIEBub2RlIFN5c3RlbS1zcGVjaWZpYyBQcmVkZWZpbmVkIE1h Y3JvcwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vY3BwL3dpZGUtbmFy cm93LXByZWRlZi1tYWNyb3MuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2NwcC93aWRl LW5hcnJvdy1wcmVkZWYtbWFjcm9zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmQ1NDQwZjhhNjFlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vY3BwL3dpZGUtbmFycm93LXByZWRlZi1tYWNyb3MuYwpAQCAtMCwwICsxLDEzIEBA CisvKgorICAgeyBkZy1kbyBjb21waWxlIH0KKyAqLworCisjaWYgIWRlZmluZWQoX19HTlVDX0VY RUNVVElPTl9DSEFSU0VUX05BTUUpCisjZXJyb3IgIlJlcXVpcmVkIGltcGxlbWVudGF0aW9uIG1h Y3JvIGZvciBjb21wbGUtdGltZSBjaGFyc2V0IG5hbWUgaXMgbm90IHByZXNlbnQiCisjZW5kaWYK KyNpZiAhZGVmaW5lZChfX0dOVUNfV0lERV9FWEVDVVRJT05fQ0hBUlNFVF9OQU1FKQorI2Vycm9y ICJSZXF1aXJlZCBpbXBsZW1lbnRhdGlvbiBtYWNybyBmb3Igd2lkZSBjb21wbGUtdGltZSBjaGFy c2V0IG5hbWUgaXMgbm90IHByZXNlbnQiCisjZW5kaWYKKworY29uc3QgY2hhciBuYXJyb3dfbmFt ZVtdID0gX19HTlVDX0VYRUNVVElPTl9DSEFSU0VUX05BTUU7Citjb25zdCBjaGFyIHdpZGVfbmFt ZVtdID0gX19HTlVDX1dJREVfRVhFQ1VUSU9OX0NIQVJTRVRfTkFNRTsKZGlmZiAtLWdpdCBhL2xp YmNwcC9jaGFyc2V0LmMgYi9saWJjcHAvY2hhcnNldC5jCmluZGV4IDI4YjgxYzljODY0Li4zZTU1 NzhiMTM5MCAxMDA2NDQKLS0tIGEvbGliY3BwL2NoYXJzZXQuYworKysgYi9saWJjcHAvY2hhcnNl dC5jCkBAIC02MzgsNiArNjM4LDkgQEAgaW5pdF9pY29udl9kZXNjIChjcHBfcmVhZGVyICpwZmls ZSwgY29uc3QgY2hhciAqdG8sIGNvbnN0IGNoYXIgKmZyb20pCiAgIGNoYXIgKnBhaXI7CiAgIHNp emVfdCBpOwogCisgIHJldC50byA9IHRvOworICByZXQuZnJvbSA9IGZyb207CisKICAgaWYgKCFz dHJjYXNlY21wICh0bywgZnJvbSkpCiAgICAgewogICAgICAgcmV0LmZ1bmMgPSBjb252ZXJ0X25v X2NvbnZlcnNpb247CmRpZmYgLS1naXQgYS9saWJjcHAvZGlyZWN0aXZlcy5jIGIvbGliY3BwL2Rp cmVjdGl2ZXMuYwppbmRleCBmNTk3MTg3MDhlNC4uYWQ1NDA4NzI1ODEgMTAwNjQ0Ci0tLSBhL2xp YmNwcC9kaXJlY3RpdmVzLmMKKysrIGIvbGliY3BwL2RpcmVjdGl2ZXMuYwpAQCAtMjU3MSw2ICsy NTcxLDIwIEBAIGNwcF9zZXRfY2FsbGJhY2tzIChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2NhbGxi YWNrcyAqY2IpCiAgIHBmaWxlLT5jYiA9ICpjYjsKIH0KIAorLyogVGhlIG5hcnJvdyBjaGFyYWN0 ZXIgc2V0IGlkZW50aWZpZXIuICAqLworY29uc3QgY2hhciAqCitjcHBfZ2V0X25hcnJvd19jaGFy c2V0X25hbWUgKGNwcF9yZWFkZXIgKnBmaWxlKQoreworICByZXR1cm4gcGZpbGUtPm5hcnJvd19j c2V0X2Rlc2MudG87Cit9CisKKy8qIFRoZSB3aWRlIGNoYXJhY3RlciBzZXQgaWRlbnRpZmllci4g ICovCitjb25zdCBjaGFyICoKK2NwcF9nZXRfd2lkZV9jaGFyc2V0X25hbWUgKGNwcF9yZWFkZXIg KnBmaWxlKQoreworICByZXR1cm4gcGZpbGUtPndpZGVfY3NldF9kZXNjLnRvOworfQorCiAvKiBU aGUgZGVwZW5kZW5jaWVzIHN0cnVjdHVyZS4gIChDcmVhdGVzIG9uZSBpZiBpdCBoYXNuJ3QgYWxy ZWFkeSBiZWVuLikgICovCiBjbGFzcyBta2RlcHMgKgogY3BwX2dldF9kZXBzIChjcHBfcmVhZGVy ICpwZmlsZSkKZGlmZiAtLWdpdCBhL2xpYmNwcC9pbmNsdWRlL2NwcGxpYi5oIGIvbGliY3BwL2lu Y2x1ZGUvY3BwbGliLmgKaW5kZXggOGUzOTg4NjNjZjYuLjY5YTUwNDJkMGJmIDEwMDY0NAotLS0g YS9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaAorKysgYi9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaApA QCAtOTcxLDYgKzk3MSwxMSBAQCBleHRlcm4gY3BwX2NhbGxiYWNrcyAqY3BwX2dldF9jYWxsYmFj a3MgKGNwcF9yZWFkZXIgKikgQVRUUklCVVRFX1BVUkU7CiBleHRlcm4gdm9pZCBjcHBfc2V0X2Nh bGxiYWNrcyAoY3BwX3JlYWRlciAqLCBjcHBfY2FsbGJhY2tzICopOwogZXh0ZXJuIGNsYXNzIG1r ZGVwcyAqY3BwX2dldF9kZXBzIChjcHBfcmVhZGVyICopIEFUVFJJQlVURV9QVVJFOwogCisvKiBD YWxsIHRoZXNlIHRvIGdldCBuYW1lIGRhdGEgYWJvdXQgdGhlIHZhcmlvdXMgY29tcGlsZS10aW1l CisgICBjaGFyc2V0cy4gICovCitleHRlcm4gY29uc3QgY2hhciAqY3BwX2dldF9uYXJyb3dfY2hh cnNldF9uYW1lIChjcHBfcmVhZGVyICopIEFUVFJJQlVURV9QVVJFOworZXh0ZXJuIGNvbnN0IGNo YXIgKmNwcF9nZXRfd2lkZV9jaGFyc2V0X25hbWUgKGNwcF9yZWFkZXIgKikgQVRUUklCVVRFX1BV UkU7CisKIC8qIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIGZpbGUsIGJ1dCBkb2VzIG5vdCBzdGFy dCBwcmVwcm9jZXNzaW5nLiAgSXQKICAgIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFs IGZpbGU7IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlCiAgICBpbnB1dCBmaWxlLCBleGNlcHQgZm9y IHByZXByb2Nlc3NlZCBpbnB1dC4gIFRoaXMgd2lsbCBnZW5lcmF0ZSBhdApkaWZmIC0tZ2l0IGEv bGliY3BwL2ludGVybmFsLmggYi9saWJjcHAvaW50ZXJuYWwuaAppbmRleCBiNzI4ZGY3NDU2Mi4u YTY0MDJkNzdjZWQgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9pbnRlcm5hbC5oCisrKyBiL2xpYmNwcC9p bnRlcm5hbC5oCkBAIC00OCw2ICs0OCw4IEBAIHN0cnVjdCBjc2V0X2NvbnZlcnRlcgogICBjb252 ZXJ0X2YgZnVuYzsKICAgaWNvbnZfdCBjZDsKICAgaW50IHdpZHRoOworICBjb25zdCBjaGFyKiBm cm9tOworICBjb25zdCBjaGFyKiB0bzsKIH07CiAKICNkZWZpbmUgQklUU19QRVJfQ1BQQ0hBUl9U IChDSEFSX0JJVCAqIHNpemVvZiAoY3BwY2hhcl90KSkK --000000000000a39cbe05b12faa8f--