[Lldb-commits] [PATCH] D147833: [lldb] Change return type of EventData::GetFlavor
Alex Langford via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Sat Apr 8 14:02:16 PDT 2023
bulbazord added a comment.
In D147833#4253416 <https://reviews.llvm.org/D147833#4253416>, @jasonmolenda wrote:
> idk maybe I'm over-thinking it, but this does make me a little uncomfortable. We have at least one instance where someone did `platform_sp->GetPluginName() == "ios-simulator"` in ClangExpressionSourceCode.cpp (probably to avoid a dependency on an an apple platform plugin in generic code; the code should undoubtedly be done differently) and the mach-o linker on darwin today will unique identical c-strings from separate compilation units, but I doubt that's a guarantee on Darwin or on other platforms. Platform::GetPluginName is returning a StringRef here, and we naturally see code like this and assume the c-string will be converted to a StringRef or ConstString implicitly for the comparison operator. But if GetPluginName started returning a pointer to const c-string and the strings aren't uniqued, the comparison fails in a tricky to see way.
In D147833#4253422 <https://reviews.llvm.org/D147833#4253422>, @jasonmolenda wrote:
> In D147833#4253416 <https://reviews.llvm.org/D147833#4253416>, @jasonmolenda wrote:
>
>> idk maybe I'm over-thinking it, but this does make me a little uncomfortable. We have at least one instance where someone did `platform_sp->GetPluginName() == "ios-simulator"` in ClangExpressionSourceCode.cpp
>
> I only looked around for the first instance of this code pattern, there may be another place where we compare identification strings from objects. And I don't feel confident that I can anticipate what will be added to lldb in the future.
Yes, we definitely do that in many places. I see your point though, comparing const c-string pointers can get pretty tricky if somebody refactors this in the future. In that case, instead of `GetFlavor` returning a `const char *` or a `ConstString`, it could return a `StringRef` and this should be handled, no? Just like `GetPluginName()` in your example.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147833/new/
https://reviews.llvm.org/D147833
More information about the lldb-commits
mailing list