[Lldb-commits] [lldb] [lldb] Fix `ObjectFileMachO` object format when missing version load commands (PR #144177)
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Mon Jun 16 10:41:01 PDT 2025
jasonmolenda wrote:
I don't want to go with this approach, I don't want to see `-macho` in a triple that we're creating for any of these modules; this is going to break things down the line with firmware environments, I'm sure of it. It's also ugly.
This is an undesired behavior from llvm's Triple, because we create a Triple in ArchSpec::SetArchitecture with only a cpu specified, and llvm's Triple `getDefaultFormat()` is called when constructing the Triple, and assumes that an OS is defined. If no OS is specified, it sets the object file format to Triple::ELF by default. This is clearly wrong, it should be UnknownObjectFormat. If we later call Triple::setObjectFormat to specify the correct object file format, Triple adds "-macho" to the triple unconditionally.
My guess is that other parts of llvm depend on the object file format being set to Triple::ELF when there is an unspecified OS. I wouldn't be surprised to see regressions if `getDefaultFormat()` changed to return UnknownObjectFormat when no OS is specified, as it really should be. And then if they got "-elf" added to triple strings when they called Triple::setObjectFormat they would also not want that behavior.
I don't think any of these approaches to fixing this in ObjectFileMachO / ArchSpec are the right approach. llvm's Triple needs to have a way to set the object file format *without* changing the triple string, it needs to not set the object file format when no OS is specified, or we need to live with a Triple having an incorrect ObjectFormat in lldb.
https://github.com/llvm/llvm-project/pull/144177
More information about the lldb-commits
mailing list