diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp index 018ceec97f204..9edb6b9c60a1f 100644 --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -340,7 +340,7 @@ static InputFile *addFile(StringRef path, LoadType loadType, } } else if (isCommandLineLoad && config->forceLoadObjC) { for (const object::Archive::Symbol &sym : file->getArchive().symbols()) - if (sym.getName().starts_with(objc::klass)) + if (sym.getName().starts_with(objc::symbol_names::klass)) file->fetch(sym); // TODO: no need to look for ObjC sections for a given archive member if @@ -395,7 +395,7 @@ static InputFile *addFile(StringRef path, LoadType loadType, if ((isa(newFile) || isa(newFile)) && newFile->lazy && config->forceLoadObjC) { for (Symbol *sym : newFile->symbols) - if (sym && sym->getName().starts_with(objc::klass)) { + if (sym && sym->getName().starts_with(objc::symbol_names::klass)) { extract(*newFile, "-ObjC"); break; } diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp index 158c3fbf7b0fc..b36d390cc16ad 100644 --- a/lld/MachO/InputFiles.cpp +++ b/lld/MachO/InputFiles.cpp @@ -1921,14 +1921,14 @@ DylibFile::DylibFile(const InterfaceFile &interface, DylibFile *umbrella, case EncodeKind::ObjectiveCClass: // XXX ld64 only creates these symbols when -ObjC is passed in. We may // want to emulate that. - addSymbol(*symbol, objc::klass + symbol->getName()); - addSymbol(*symbol, objc::metaclass + symbol->getName()); + addSymbol(*symbol, objc::symbol_names::klass + symbol->getName()); + addSymbol(*symbol, objc::symbol_names::metaclass + symbol->getName()); break; case EncodeKind::ObjectiveCClassEHType: - addSymbol(*symbol, objc::ehtype + symbol->getName()); + addSymbol(*symbol, objc::symbol_names::ehtype + symbol->getName()); break; case EncodeKind::ObjectiveCInstanceVariable: - addSymbol(*symbol, objc::ivar + symbol->getName()); + addSymbol(*symbol, objc::symbol_names::ivar + symbol->getName()); break; } } diff --git a/lld/MachO/ObjC.h b/lld/MachO/ObjC.h index 560c5cc0bc509..4c65f9a1f7881 100644 --- a/lld/MachO/ObjC.h +++ b/lld/MachO/ObjC.h @@ -15,10 +15,12 @@ namespace lld::macho { namespace objc { +namespace symbol_names { constexpr const char klass[] = "_OBJC_CLASS_$_"; constexpr const char metaclass[] = "_OBJC_METACLASS_$_"; constexpr const char ehtype[] = "_OBJC_EHTYPE_$_"; constexpr const char ivar[] = "_OBJC_IVAR_$_"; +} // namespace symbol_names // Check for duplicate method names within related categories / classes. void checkCategories();