|  | //=== DWARFLinkerBase.cpp -------------------------------------------------===// | 
|  | // | 
|  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
|  | // See https://llvm.org/LICENSE.txt for license information. | 
|  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #include "llvm/DWARFLinker/DWARFLinkerBase.h" | 
|  | #include "llvm/ADT/StringSwitch.h" | 
|  |  | 
|  | using namespace llvm; | 
|  | using namespace llvm::dwarf_linker; | 
|  |  | 
|  | std::optional<DebugSectionKind> | 
|  | llvm::dwarf_linker::parseDebugTableName(llvm::StringRef SecName) { | 
|  | return llvm::StringSwitch<std::optional<DebugSectionKind>>( | 
|  | SecName.substr(SecName.find_first_not_of("._"))) | 
|  | .Case(getSectionName(DebugSectionKind::DebugInfo), | 
|  | DebugSectionKind::DebugInfo) | 
|  | .Case(getSectionName(DebugSectionKind::DebugLine), | 
|  | DebugSectionKind::DebugLine) | 
|  | .Case(getSectionName(DebugSectionKind::DebugFrame), | 
|  | DebugSectionKind::DebugFrame) | 
|  | .Case(getSectionName(DebugSectionKind::DebugRange), | 
|  | DebugSectionKind::DebugRange) | 
|  | .Case(getSectionName(DebugSectionKind::DebugRngLists), | 
|  | DebugSectionKind::DebugRngLists) | 
|  | .Case(getSectionName(DebugSectionKind::DebugLoc), | 
|  | DebugSectionKind::DebugLoc) | 
|  | .Case(getSectionName(DebugSectionKind::DebugLocLists), | 
|  | DebugSectionKind::DebugLocLists) | 
|  | .Case(getSectionName(DebugSectionKind::DebugARanges), | 
|  | DebugSectionKind::DebugARanges) | 
|  | .Case(getSectionName(DebugSectionKind::DebugAbbrev), | 
|  | DebugSectionKind::DebugAbbrev) | 
|  | .Case(getSectionName(DebugSectionKind::DebugMacinfo), | 
|  | DebugSectionKind::DebugMacinfo) | 
|  | .Case(getSectionName(DebugSectionKind::DebugMacro), | 
|  | DebugSectionKind::DebugMacro) | 
|  | .Case(getSectionName(DebugSectionKind::DebugAddr), | 
|  | DebugSectionKind::DebugAddr) | 
|  | .Case(getSectionName(DebugSectionKind::DebugStr), | 
|  | DebugSectionKind::DebugStr) | 
|  | .Case(getSectionName(DebugSectionKind::DebugLineStr), | 
|  | DebugSectionKind::DebugLineStr) | 
|  | .Case(getSectionName(DebugSectionKind::DebugStrOffsets), | 
|  | DebugSectionKind::DebugStrOffsets) | 
|  | .Case(getSectionName(DebugSectionKind::DebugPubNames), | 
|  | DebugSectionKind::DebugPubNames) | 
|  | .Case(getSectionName(DebugSectionKind::DebugPubTypes), | 
|  | DebugSectionKind::DebugPubTypes) | 
|  | .Case(getSectionName(DebugSectionKind::DebugNames), | 
|  | DebugSectionKind::DebugNames) | 
|  | .Case(getSectionName(DebugSectionKind::AppleNames), | 
|  | DebugSectionKind::AppleNames) | 
|  | .Case(getSectionName(DebugSectionKind::AppleNamespaces), | 
|  | DebugSectionKind::AppleNamespaces) | 
|  | .Case(getSectionName(DebugSectionKind::AppleObjC), | 
|  | DebugSectionKind::AppleObjC) | 
|  | .Case(getSectionName(DebugSectionKind::AppleTypes), | 
|  | DebugSectionKind::AppleTypes) | 
|  | .Default(std::nullopt); | 
|  | } |