From a0f64dd0ee63d2ef69b73f2a00ae028f2a452659 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Wed, 18 Oct 2023 13:15:10 -0700 Subject: [PATCH] Use LLVM definitions for Swift section names (NFC) --- include/swift/ABI/ObjectFile.h | 4 ++- include/swift/Basic/Dwarf.h | 33 ------------------- lib/ASTSectionImporter/ASTSectionImporter.cpp | 1 - lib/Driver/DarwinToolChains.cpp | 1 - lib/Driver/ToolChains.cpp | 1 - lib/Driver/UnixToolChains.cpp | 1 - lib/Driver/WindowsToolChains.cpp | 1 - lib/FrontendTool/FrontendTool.cpp | 5 --- lib/IRGen/IRGen.cpp | 24 +++++++++----- lib/IRGen/IRGenDebugInfo.cpp | 1 - lib/IRGen/IRGenModule.cpp | 1 - lib/Serialization/Serialization.cpp | 1 - .../lldb-moduleimport-test.cpp | 22 ++++++++----- 13 files changed, 31 insertions(+), 65 deletions(-) delete mode 100644 include/swift/Basic/Dwarf.h diff --git a/include/swift/ABI/ObjectFile.h b/include/swift/ABI/ObjectFile.h index 719d021e1fabd..c275413bf9224 100644 --- a/include/swift/ABI/ObjectFile.h +++ b/include/swift/ABI/ObjectFile.h @@ -9,10 +9,12 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Optional.h" namespace swift { -/// Represents the nine reflection sections used by Swift +/// Represents the nine reflection sections used by Swift + the Swift AST +/// section used by the debugger. enum ReflectionSectionKind : uint8_t { #define HANDLE_SWIFT_SECTION(KIND, MACHO, ELF, COFF) KIND, #include "llvm/BinaryFormat/Swift.def" diff --git a/include/swift/Basic/Dwarf.h b/include/swift/Basic/Dwarf.h deleted file mode 100644 index 2c6f12dbc7789..0000000000000 --- a/include/swift/Basic/Dwarf.h +++ /dev/null @@ -1,33 +0,0 @@ -//===--- Dwarf.h - DWARF constants ------------------------------*- C++ -*-===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors -// Licensed under Apache License v2.0 with Runtime Library Exception -// -// See https://swift.org/LICENSE.txt for license information -// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors -// -//===----------------------------------------------------------------------===// -// -// This file defines several temporary Swift-specific DWARF constants. -// -//===----------------------------------------------------------------------===// - -#ifndef SWIFT_BASIC_DWARF_H -#define SWIFT_BASIC_DWARF_H - -#include "llvm/BinaryFormat/Dwarf.h" - -namespace swift { - /// The DWARF version emitted by the Swift compiler. - const unsigned DWARFVersion = 4; - - static const char MachOASTSegmentName[] = "__DWARF"; - static const char MachOASTSectionName[] = "__swift_ast"; - static const char ELFASTSectionName[] = ".swift_ast"; - static const char COFFASTSectionName[] = "swiftast"; - static const char WasmASTSectionName[] = ".swift_ast"; -} // end namespace swift - -#endif // SWIFT_BASIC_DWARF_H diff --git a/lib/ASTSectionImporter/ASTSectionImporter.cpp b/lib/ASTSectionImporter/ASTSectionImporter.cpp index e40831410c194..8365dcc47c0d5 100644 --- a/lib/ASTSectionImporter/ASTSectionImporter.cpp +++ b/lib/ASTSectionImporter/ASTSectionImporter.cpp @@ -18,7 +18,6 @@ #include "swift/ASTSectionImporter/ASTSectionImporter.h" #include "../Serialization/ModuleFormat.h" #include "swift/AST/ASTContext.h" -#include "swift/Basic/Dwarf.h" #include "swift/Serialization/SerializedModuleLoader.h" #include "swift/Serialization/Validation.h" #include "llvm/Support/Debug.h" diff --git a/lib/Driver/DarwinToolChains.cpp b/lib/Driver/DarwinToolChains.cpp index 9dc66f83a6ead..a54a9cd4157fd 100644 --- a/lib/Driver/DarwinToolChains.cpp +++ b/lib/Driver/DarwinToolChains.cpp @@ -14,7 +14,6 @@ #include "swift/AST/DiagnosticsDriver.h" #include "swift/AST/PlatformKind.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/LLVM.h" #include "swift/Basic/Platform.h" #include "swift/Basic/Range.h" diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 718b14354be14..b413917371a81 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -13,7 +13,6 @@ #include "ToolChains.h" #include "swift/AST/DiagnosticsDriver.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/LLVM.h" #include "swift/Basic/Platform.h" #include "swift/Basic/Range.h" diff --git a/lib/Driver/UnixToolChains.cpp b/lib/Driver/UnixToolChains.cpp index 61498c144a28b..a146f08b10893 100644 --- a/lib/Driver/UnixToolChains.cpp +++ b/lib/Driver/UnixToolChains.cpp @@ -12,7 +12,6 @@ #include "ToolChains.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/LLVM.h" #include "swift/Basic/Platform.h" #include "swift/Basic/Range.h" diff --git a/lib/Driver/WindowsToolChains.cpp b/lib/Driver/WindowsToolChains.cpp index 481daa7ba3640..d18408d660718 100644 --- a/lib/Driver/WindowsToolChains.cpp +++ b/lib/Driver/WindowsToolChains.cpp @@ -12,7 +12,6 @@ #include "ToolChains.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/LLVM.h" #include "swift/Basic/Platform.h" #include "swift/Basic/Range.h" diff --git a/lib/FrontendTool/FrontendTool.cpp b/lib/FrontendTool/FrontendTool.cpp index 573b2573d677e..c1185a0022679 100644 --- a/lib/FrontendTool/FrontendTool.cpp +++ b/lib/FrontendTool/FrontendTool.cpp @@ -36,7 +36,6 @@ #include "swift/AST/TBDGenRequests.h" #include "swift/AST/TypeRefinementContext.h" #include "swift/Basic/Defer.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/Edit.h" #include "swift/Basic/FileSystem.h" #include "swift/Basic/LLVMInitialize.h" @@ -2240,10 +2239,6 @@ int swift::performFrontend(ArrayRef Args, trace.emplace(*buffer); }); - // Setting DWARF Version depend on platform - IRGenOptions &IRGenOpts = Invocation.getIRGenOptions(); - IRGenOpts.DWARFVersion = swift::DWARFVersion; - // The compiler invocation is now fully configured; notify our observer. if (observer) { observer->parsedArgs(Invocation); diff --git a/lib/IRGen/IRGen.cpp b/lib/IRGen/IRGen.cpp index a96c40a6fd13a..b92f496928fa8 100644 --- a/lib/IRGen/IRGen.cpp +++ b/lib/IRGen/IRGen.cpp @@ -17,6 +17,7 @@ #include "../Serialization/ModuleFormat.h" #include "IRGenModule.h" #include "swift/ABI/MetadataValues.h" +#include "swift/ABI/ObjectFile.h" #include "swift/AST/DiagnosticsIRGen.h" #include "swift/AST/IRGenOptions.h" #include "swift/AST/IRGenRequests.h" @@ -26,7 +27,6 @@ #include "swift/AST/SILOptimizerRequests.h" #include "swift/AST/TBDGenRequests.h" #include "swift/Basic/Defer.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/MD5Stream.h" #include "swift/Basic/Platform.h" #include "swift/Basic/Statistic.h" @@ -1616,6 +1616,7 @@ void swift::createSwiftModuleObjectFile(SILModule &SILMod, StringRef Buffer, auto *ASTSym = new llvm::GlobalVariable(M, Ty, /*constant*/ true, llvm::GlobalVariable::InternalLinkage, Data, "__Swift_AST"); + std::string Section; switch (IGM.TargetInfo.OutputObjectFormat) { case llvm::Triple::DXContainer: @@ -1624,19 +1625,24 @@ void swift::createSwiftModuleObjectFile(SILModule &SILMod, StringRef Buffer, case llvm::Triple::UnknownObjectFormat: llvm_unreachable("unknown object format"); case llvm::Triple::XCOFF: - case llvm::Triple::COFF: - Section = COFFASTSectionName; + case llvm::Triple::COFF: { + SwiftObjectFileFormatCOFF COFF; + Section = COFF.getSectionName(ReflectionSectionKind::swiftast); break; + } case llvm::Triple::ELF: - Section = ELFASTSectionName; - break; - case llvm::Triple::MachO: - Section = std::string(MachOASTSegmentName) + "," + MachOASTSectionName; + case llvm::Triple::Wasm: { + SwiftObjectFileFormatELF ELF; + Section = ELF.getSectionName(ReflectionSectionKind::swiftast); break; - case llvm::Triple::Wasm: - Section = WasmASTSectionName; + } + case llvm::Triple::MachO: { + SwiftObjectFileFormatMachO MachO; + Section = std::string(*MachO.getSegmentName()) + "," + + MachO.getSectionName(ReflectionSectionKind::swiftast).str(); break; } + } ASTSym->setSection(Section); ASTSym->setAlignment(llvm::MaybeAlign(serialization::SWIFTMODULE_ALIGNMENT)); ::performLLVM(Opts, Ctx.Diags, nullptr, nullptr, IGM.getModule(), diff --git a/lib/IRGen/IRGenDebugInfo.cpp b/lib/IRGen/IRGenDebugInfo.cpp index 23946944901d8..1cc891a198590 100644 --- a/lib/IRGen/IRGenDebugInfo.cpp +++ b/lib/IRGen/IRGenDebugInfo.cpp @@ -29,7 +29,6 @@ #include "swift/AST/Pattern.h" #include "swift/AST/TypeDifferenceVisitor.h" #include "swift/Basic/Compiler.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/SourceManager.h" #include "swift/Basic/Version.h" #include "swift/ClangImporter/ClangImporter.h" diff --git a/lib/IRGen/IRGenModule.cpp b/lib/IRGen/IRGenModule.cpp index 20a46d74e96f7..ac654277f7e1d 100644 --- a/lib/IRGen/IRGenModule.cpp +++ b/lib/IRGen/IRGenModule.cpp @@ -21,7 +21,6 @@ #include "swift/AST/GenericSignature.h" #include "swift/AST/IRGenOptions.h" #include "swift/AST/IRGenRequests.h" -#include "swift/Basic/Dwarf.h" #include "swift/Demangling/ManglingMacros.h" #include "swift/ClangImporter/ClangImporter.h" #include "swift/IRGen/IRGenPublic.h" diff --git a/lib/Serialization/Serialization.cpp b/lib/Serialization/Serialization.cpp index 664bb00f5dd2d..fa1bcc18e3725 100644 --- a/lib/Serialization/Serialization.cpp +++ b/lib/Serialization/Serialization.cpp @@ -40,7 +40,6 @@ #include "swift/AST/TypeCheckRequests.h" #include "swift/AST/TypeVisitor.h" #include "swift/Basic/Defer.h" -#include "swift/Basic/Dwarf.h" #include "swift/Basic/FileSystem.h" #include "swift/Basic/PathRemapper.h" #include "swift/Basic/STLExtras.h" diff --git a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp index 15c2b0e131de2..d0612021eff0a 100644 --- a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp +++ b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp @@ -16,27 +16,27 @@ // //===----------------------------------------------------------------------===// +#include "swift/ABI/ObjectFile.h" #include "swift/AST/ASTDemangler.h" #include "swift/AST/PrintOptions.h" #include "swift/ASTSectionImporter/ASTSectionImporter.h" +#include "swift/Basic/LLVMInitialize.h" #include "swift/Frontend/Frontend.h" #include "swift/Serialization/SerializedModuleLoader.h" #include "swift/Serialization/Validation.h" -#include "swift/Basic/Dwarf.h" -#include "llvm/Object/ELFObjectFile.h" -#include "swift/Basic/LLVMInitialize.h" #include "llvm/Object/COFF.h" +#include "llvm/Object/ELFObjectFile.h" #include "llvm/Object/MachO.h" #include "llvm/Object/ObjectFile.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/Signals.h" #include "llvm/Support/TargetSelect.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Support/ManagedStatic.h" #include #include @@ -209,15 +209,19 @@ collectASTModules(llvm::cl::list &InputNames, continue; } llvm::StringRef Name = *NameOrErr; - if ((MachO && Name == swift::MachOASTSectionName) || - (ELF && Name == swift::ELFASTSectionName) || - (COFF && Name == swift::COFFASTSectionName)) { + if ((MachO && Name == swift::SwiftObjectFileFormatMachO().getSectionName( + swift::ReflectionSectionKind::swiftast)) || + (ELF && Name == swift::SwiftObjectFileFormatELF().getSectionName( + swift::ReflectionSectionKind::swiftast)) || + (COFF && Name == swift::SwiftObjectFileFormatCOFF().getSectionName( + swift::ReflectionSectionKind::swiftast))) { uint64_t Size = Section.getSize(); - llvm::Expected ContentsReference = Section.getContents(); + llvm::Expected ContentsReference = + Section.getContents(); if (!ContentsReference) { llvm::errs() << "error: " << name << " " - << errorToErrorCode(OF.takeError()).message() << "\n"; + << errorToErrorCode(OF.takeError()).message() << "\n"; return false; } char *Module = Alloc.Allocate(Size);