This is an archive of the discontinued LLVM Phabricator instance.

[lld-macho][nfc] Remove `MachO::` prefix where possible
ClosedPublic

Authored by int3 on Mar 7 2021, 11:37 AM.

Details

Summary

Previously, SyntheticSections.cpp did not have a top-level `using namespace
llvm::MachO` because it caused a naming conflict: llvm::MachO::Symbol would
collide with lld::macho::Symbol.

MachO::Symbol represents the symbols defined in InterfaceFiles (TBDs). By
moving the inclusion of InterfaceFile.h into our .cpp files, we can avoid this
name collision in other files where we are only dealing with LLD's own symbols.

Along the way, I removed all unnecessary "MachO::" prefixes in our code.

Cons of this approach: If TextAPI/MachO/Symbol.h gets included via some other
header file in the future, we could run into this collision again.

Alternative 1: Have either TextAPI/MachO or BinaryFormat/MachO.h use a different
namespace. Most of the benefit of using namespace llvm::MachO comes from being
able to use things in BinaryFormat/MachO.h conveniently; if TextAPI was under a
different (and fully-qualified) namespace like llvm::tapi that would solve our
problems. Cons: lots of files across llvm-project will need to be updated, and
folks who own the TextAPI code need to agree to the name change.

Alternative 2: Rename our Symbol to something like LldSymbol. I think this is
ugly.

Personally I think alternative #1 is ideal, but I'm not sure the effort to do it is
worthwhile, this diff's halfway solution seems good enough to me. Thoughts?

Diff Detail

Event Timeline

int3 created this revision.Mar 7 2021, 11:37 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 7 2021, 11:37 AM
int3 requested review of this revision.Mar 7 2021, 11:37 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 7 2021, 11:37 AM
int3 edited the summary of this revision. (Show Details)Mar 7 2021, 11:38 AM
int3 edited the summary of this revision. (Show Details)
oontvoo added a subscriber: oontvoo.Mar 8 2021, 9:32 AM

+1 for the removal of MachO:: prefix where possible.

W.R.T Symbol conflict, IMO, that's what namespaces are for. /shrug. (Agreed that it's probably not worth renaming the tapi Symbol, given the current tooling in llvm- that is to say, there's none :\ )

lld/MachO/InputFiles.cpp
115

lint suggestion: const auto * hdr ?

int3 marked an inline comment as done.Mar 8 2021, 11:45 AM
int3 added inline comments.
lld/MachO/InputFiles.cpp
115

I think this lint rule needs to be smarter here, repeating const on the same line is silly. But updated to squelch the lint noise.

int3 updated this revision to Diff 329087.Mar 8 2021, 11:45 AM
int3 marked an inline comment as done.

const

oontvoo accepted this revision as: oontvoo.Mar 9 2021, 9:24 AM

not sure if you were waiting for someone else to chime in, but this LGTM

This revision is now accepted and ready to land.Mar 9 2021, 9:24 AM
MaskRay accepted this revision.Mar 9 2021, 5:53 PM
This revision was automatically updated to reflect the committed changes.