1*9ff4be64SAlexey Lapshin //=== DWARFLinkerBase.cpp -------------------------------------------------===//
2*9ff4be64SAlexey Lapshin //
3*9ff4be64SAlexey Lapshin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*9ff4be64SAlexey Lapshin // See https://llvm.org/LICENSE.txt for license information.
5*9ff4be64SAlexey Lapshin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*9ff4be64SAlexey Lapshin //
7*9ff4be64SAlexey Lapshin //===----------------------------------------------------------------------===//
8*9ff4be64SAlexey Lapshin
9*9ff4be64SAlexey Lapshin #include "llvm/DWARFLinker/DWARFLinkerBase.h"
10*9ff4be64SAlexey Lapshin #include "llvm/ADT/StringSwitch.h"
11*9ff4be64SAlexey Lapshin
12*9ff4be64SAlexey Lapshin using namespace llvm;
13*9ff4be64SAlexey Lapshin using namespace llvm::dwarf_linker;
14*9ff4be64SAlexey Lapshin
15*9ff4be64SAlexey Lapshin std::optional<DebugSectionKind>
parseDebugTableName(llvm::StringRef SecName)16*9ff4be64SAlexey Lapshin llvm::dwarf_linker::parseDebugTableName(llvm::StringRef SecName) {
17*9ff4be64SAlexey Lapshin return llvm::StringSwitch<std::optional<DebugSectionKind>>(
18*9ff4be64SAlexey Lapshin SecName.substr(SecName.find_first_not_of("._")))
19*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugInfo),
20*9ff4be64SAlexey Lapshin DebugSectionKind::DebugInfo)
21*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugLine),
22*9ff4be64SAlexey Lapshin DebugSectionKind::DebugLine)
23*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugFrame),
24*9ff4be64SAlexey Lapshin DebugSectionKind::DebugFrame)
25*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugRange),
26*9ff4be64SAlexey Lapshin DebugSectionKind::DebugRange)
27*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugRngLists),
28*9ff4be64SAlexey Lapshin DebugSectionKind::DebugRngLists)
29*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugLoc),
30*9ff4be64SAlexey Lapshin DebugSectionKind::DebugLoc)
31*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugLocLists),
32*9ff4be64SAlexey Lapshin DebugSectionKind::DebugLocLists)
33*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugARanges),
34*9ff4be64SAlexey Lapshin DebugSectionKind::DebugARanges)
35*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugAbbrev),
36*9ff4be64SAlexey Lapshin DebugSectionKind::DebugAbbrev)
37*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugMacinfo),
38*9ff4be64SAlexey Lapshin DebugSectionKind::DebugMacinfo)
39*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugMacro),
40*9ff4be64SAlexey Lapshin DebugSectionKind::DebugMacro)
41*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugAddr),
42*9ff4be64SAlexey Lapshin DebugSectionKind::DebugAddr)
43*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugStr),
44*9ff4be64SAlexey Lapshin DebugSectionKind::DebugStr)
45*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugLineStr),
46*9ff4be64SAlexey Lapshin DebugSectionKind::DebugLineStr)
47*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugStrOffsets),
48*9ff4be64SAlexey Lapshin DebugSectionKind::DebugStrOffsets)
49*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugPubNames),
50*9ff4be64SAlexey Lapshin DebugSectionKind::DebugPubNames)
51*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugPubTypes),
52*9ff4be64SAlexey Lapshin DebugSectionKind::DebugPubTypes)
53*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::DebugNames),
54*9ff4be64SAlexey Lapshin DebugSectionKind::DebugNames)
55*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::AppleNames),
56*9ff4be64SAlexey Lapshin DebugSectionKind::AppleNames)
57*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::AppleNamespaces),
58*9ff4be64SAlexey Lapshin DebugSectionKind::AppleNamespaces)
59*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::AppleObjC),
60*9ff4be64SAlexey Lapshin DebugSectionKind::AppleObjC)
61*9ff4be64SAlexey Lapshin .Case(getSectionName(DebugSectionKind::AppleTypes),
62*9ff4be64SAlexey Lapshin DebugSectionKind::AppleTypes)
63*9ff4be64SAlexey Lapshin .Default(std::nullopt);
64*9ff4be64SAlexey Lapshin }
65