[PATCH] D124221: Reimplement `__builtin_dump_struct` in Sema.

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 5 06:29:13 PDT 2022


erichkeane accepted this revision.
erichkeane added a comment.

FWIW, I'm in favor of the patch as it sits.

As a followup: So I was thinking about the "%s" specifier for string types.  Assuming char-ptr types are all strings is a LITTLE dangerous, but more so the way we're doing it.  Its a shame we don't have some way of setting a 'max' limit to the number of characters we have for 2 reasons:

1- For safety: If the char-ptr points to non-null-terminated memory, it'll stop us from just arbitrarily printing into space by limiting at least the NUMBER of characters we print into nonsense.
2- For readability: printing a 'long' string likely makes this output look like nonsense and breaks everything up.  Limiting us to only a few characters is likely a good idea.
3- <Bonus #3 from @aaron.ballman >: It might discourage SOME level of attempts at using this for reflection, or at least make it a little harder.

What I would love would be for something like a 10 char max:

  struct S {
     char *C;
   };
   S s { "The Rest of this string is cut off"};
   print as:
   struct U20A a = {
     .c = 0x1234 "The Rest o"
   };

Sadly, I don't see something like that in printf specifiers?  Unless someone smarter than me can come up with some trickery.  PERHAPS have the max-limit compile-time configurable, but I don't feel strongly.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124221/new/

https://reviews.llvm.org/D124221



More information about the cfe-commits mailing list