summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
committerpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
commitbdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch)
treec50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
parentPrint a 'p' flag for file descriptors that were opened after pledge(2). (diff)
downloadwireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz
wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp')
-rw-r--r--gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp b/gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
index 1facf5efb4b..d7e1dcf31a3 100644
--- a/gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
+++ b/gnu/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
@@ -59,3 +59,27 @@ Error llvm::msf::validateSuperBlock(const SuperBlock &SB) {
return Error::success();
}
+
+MSFStreamLayout llvm::msf::getFpmStreamLayout(const MSFLayout &Msf,
+ bool IncludeUnusedFpmData,
+ bool AltFpm) {
+ MSFStreamLayout FL;
+ uint32_t NumFpmIntervals = getNumFpmIntervals(Msf, IncludeUnusedFpmData);
+ support::ulittle32_t FpmBlock = Msf.SB->FreeBlockMapBlock;
+ assert(FpmBlock == 1 || FpmBlock == 2);
+ if (AltFpm) {
+ // If they requested the alternate FPM, then 2 becomes 1 and 1 becomes 2.
+ FpmBlock = 3U - FpmBlock;
+ }
+ for (uint32_t I = 0; I < NumFpmIntervals; ++I) {
+ FL.Blocks.push_back(FpmBlock);
+ FpmBlock += msf::getFpmIntervalLength(Msf);
+ }
+
+ if (IncludeUnusedFpmData)
+ FL.Length = NumFpmIntervals * Msf.SB->BlockSize;
+ else
+ FL.Length = divideCeil(Msf.SB->NumBlocks, 8);
+
+ return FL;
+}