From 408b5e660300f96d9a231ba0e18e75d8e69d17bb Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Fri, 5 Feb 2016 01:55:49 +0000 Subject: [MC] Add support for encoding CodeView variable definition ranges CodeView, like most other debug formats, represents the live range of a variable so that debuggers might print them out. They use a variety of records to represent how a particular variable might be available (in a register, in a frame pointer, etc.) along with a set of ranges where this debug information is relevant. However, the format only allows us to use ranges which are limited to a maximum of 0xF000 in size. This means that we need to split our debug information into chunks of 0xF000. Because the layout of code is not known until *very* late, we must use a new fragment to record the information we need until we can know *exactly* what the range is. llvm-svn: 259868 --- llvm/lib/MC/MCObjectStreamer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'llvm/lib/MC/MCObjectStreamer.cpp') diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index 40c2e8dab9f..b90f0a80cfe 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -396,6 +396,13 @@ void MCObjectStreamer::EmitCVInlineLinetableDirective( SecondaryFunctionIds); } +void MCObjectStreamer::EmitCVDefRangeDirective( + ArrayRef> Ranges, + StringRef FixedSizePortion) { + getContext().getCVContext().emitDefRange(*this, Ranges, FixedSizePortion); + this->MCStreamer::EmitCVDefRangeDirective(Ranges, FixedSizePortion); +} + void MCObjectStreamer::EmitCVStringTableDirective() { getContext().getCVContext().emitStringTable(*this); } -- cgit v1.2.3