[PATCH] D82481: [XCOFF][AIX] Give symbol an internal name when desired symbol name contains invalid character(s)
Jason Liu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 26 12:36:02 PDT 2020
jasonliu marked an inline comment as done.
jasonliu added inline comments.
================
Comment at: llvm/lib/MC/MCContext.cpp:313
+ SmallString<128> InvalidName(OriginalName);
+ // Replace the invalid character with '_'.
+ for (size_t I = 0; I < InvalidName.size(); ++I) {
----------------
jasonliu wrote:
> hubert.reinterpretcast wrote:
> > Although this encoding generates runs of underscores, it does make it less intrusive in terms of being able to use `c++filt` on the result. Note that collisions increase with non-Latin scripts (which could be reduced if we append the hex values of all the underscores, including the original ones, to the end of the string).
> > ```
> > namespace ImplVerTags {
> >
> > typedef struct
> > 一世
> > {} A;
> > typedef struct
> > 二世
> > {} B;
> >
> > }
> >
> > template <typename> void *implStaticDataUnsafe = nullptr;
> >
> > template void *implStaticDataUnsafe<ImplVerTags::A>;
> > template void *implStaticDataUnsafe<ImplVerTags::B>;
> > ```
> Just want to make sure I understand your suggestion:
> so if I have a "f`!o" as symbol name, I would get back `_Renamed..6021f__o back`?
> Do we want to consider just adding those hex values up? Like getting back `_Renamed..81f__o` for that?
If we choose to get the results like `_Renamed..6021f__o`, in what way I could trigger a collision? Do we need to have a collision handling mechanism then?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82481/new/
https://reviews.llvm.org/D82481
More information about the llvm-commits
mailing list