Skip to content

Commit c4672a1

Browse files
committed
[clang][Driver] Basic -gdwarf-6 support
1 parent d519d88 commit c4672a1

File tree

4 files changed

+9
-4
lines changed

4 files changed

+9
-4
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4715,6 +4715,10 @@ def gdwarf_4 : Flag<["-"], "gdwarf-4">, Group<g_Group>,
47154715
HelpText<"Generate source-level debug information with dwarf version 4">;
47164716
def gdwarf_5 : Flag<["-"], "gdwarf-5">, Group<g_Group>,
47174717
HelpText<"Generate source-level debug information with dwarf version 5">;
4718+
def gdwarf_6
4719+
: Flag<["-"], "gdwarf-6">,
4720+
Group<g_Group>,
4721+
HelpText<"Generate source-level debug information with dwarf version 6">;
47184722
}
47194723
def gdwarf64 : Flag<["-"], "gdwarf64">, Group<g_Group>,
47204724
Visibility<[ClangOption, CC1Option, CC1AsOption]>,

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2231,7 +2231,7 @@ static unsigned ParseDebugDefaultVersion(const ToolChain &TC,
22312231
return 0;
22322232

22332233
unsigned Value = 0;
2234-
if (StringRef(A->getValue()).getAsInteger(10, Value) || Value > 5 ||
2234+
if (StringRef(A->getValue()).getAsInteger(10, Value) || Value > 6 ||
22352235
Value < 2)
22362236
TC.getDriver().Diag(diag::err_drv_invalid_int_value)
22372237
<< A->getAsString(Args) << A->getValue();
@@ -2244,13 +2244,14 @@ unsigned tools::DwarfVersionNum(StringRef ArgValue) {
22442244
.Case("-gdwarf-3", 3)
22452245
.Case("-gdwarf-4", 4)
22462246
.Case("-gdwarf-5", 5)
2247+
.Case("-gdwarf-6", 6)
22472248
.Default(0);
22482249
}
22492250

22502251
const Arg *tools::getDwarfNArg(const ArgList &Args) {
22512252
return Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3,
22522253
options::OPT_gdwarf_4, options::OPT_gdwarf_5,
2253-
options::OPT_gdwarf);
2254+
options::OPT_gdwarf_6, options::OPT_gdwarf);
22542255
}
22552256

22562257
unsigned tools::getDwarfVersion(const ToolChain &TC,

llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ class LLVM_ABI DWARFContext : public DIContext {
402402
getLocalsForAddress(object::SectionedAddress Address) override;
403403

404404
bool isLittleEndian() const { return DObj->isLittleEndian(); }
405-
static unsigned getMaxSupportedVersion() { return 5; }
405+
static unsigned getMaxSupportedVersion() { return 6; }
406406
static bool isSupportedVersion(unsigned version) {
407407
return version >= 2 && version <= getMaxSupportedVersion();
408408
}

llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Error DWARFDebugAddrTable::extractV5(const DWARFDataExtractor &Data,
8080
SegSize = Data.getU8(OffsetPtr);
8181

8282
// Perform a basic validation of the header fields.
83-
if (Version != 5)
83+
if (Version < 5)
8484
return createStringError(errc::not_supported,
8585
"address table at offset 0x%" PRIx64
8686
" has unsupported version %" PRIu16,

0 commit comments

Comments
 (0)