[DebugInfo] Error if unsupported address size detected in line table
authorJames Henderson <james.henderson@sony.com>
Mon, 3 Feb 2020 16:43:03 +0000 (16:43 +0000)
committerJames Henderson <james.henderson@sony.com>
Fri, 14 Feb 2020 11:08:12 +0000 (11:08 +0000)
commitfe6983a75ae08dc63e2068f521670562ad77c599
treeae4bf878e41791776233a0d4094a9fae617db51c
parent9dc84e9b02d1e402503906099d42fbae4da7d8d9
[DebugInfo] Error if unsupported address size detected in line table

Prior to this patch, if a DW_LNE_set_address opcode was parsed with an
address size (i.e. with a length after the opcode) of anything other 1,
2, 4, or 8, an llvm_unreachable would be hit, as the data extractor does
not support other values. This patch introduces a new error check that
verifies the address size is one of the supported sizes, in common with
other places within the DWARF parsing.

This patch also fixes calculation of a generated line table's size in
unit tests. One of the tests in this patch highlighted a bug introduced
in 1271cde4745, when non-byte operands were used as arguments for
extended or standard opcodes.

Reviewed by: dblaikie

Differential Revision: https://reviews.llvm.org/D73962
llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
llvm/unittests/DebugInfo/DWARF/DWARFDebugLineTest.cpp
llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h