diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi index 7bd064b57815acc238eb2933861b1de9e57d4b91..15f9fa07405bb66d54a61ec768b733642df23604 100644 --- a/gcc/doc/gty.texi +++ b/gcc/doc/gty.texi @@ -217,6 +217,17 @@ struct GTY(()) non_terminated_string @{ @}; @end smallexample +Similarly, this is useful for (regular NUL-terminated) strings with +NUL characters embedded (that the default @code{strlen} use would run +afoul of): + +@smallexample +struct GTY(()) multi_string @{ + const char * GTY((string_length ("%h.len + 1"))) str; + size_t len; +@}; +@end smallexample + The @code{string_length} option currently is not supported for (fields in) global variables. @c <https://inbox.sourceware.org/87bkgqvlst.fsf@euler.schwinge.homeip.net> diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h index c7ccc6db9f05ad78b54d20704d3452e2399512fd..0c713f2ad30d13d19f5233b9fc660c342ef44962 100644 --- a/libcpp/include/symtab.h +++ b/libcpp/include/symtab.h @@ -29,9 +29,7 @@ along with this program; see the file COPYING3. If not see typedef struct ht_identifier ht_identifier; typedef struct ht_identifier *ht_identifier_ptr; struct GTY(()) ht_identifier { - /* This GTY markup arranges that the null-terminated identifier would still - stream to PCH correctly, if a null byte were to make its way into an - identifier somehow. */ + /* We know the 'len'gth of the 'str'ing; use it in the GTY markup. */ const unsigned char * GTY((string_length ("1 + %h.len"))) str; unsigned int len; unsigned int hash_value;