From 56bc894d06b81fd27065ad73d69b1781d2fe4953 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 27 Sep 2004 16:59:06 +0000 Subject: [PATCH] The system ranlib on darwin occasionally adds two extra newlines to the end of files, breaking the CFE build. As a gross hack around this, ignore any trailing garbage on bytecode files. Thanks to Brian for digging in and identifying the problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16525 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bytecode/Reader/Reader.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index 18780208e2b..d44003c73a1 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -2139,10 +2139,16 @@ void BytecodeReader::ParseBytecode(BufPtr Buf, unsigned Length, error("Expected Module Block! Type:" + utostr(Type) + ", Size:" + utostr(Size)); } - if (At + Size != MemEnd) { + + // It looks like the darwin ranlib program is broken, and adds trailing + // garbage to the end of some bytecode files. This hack allows the bc + // reader to ignore trailing garbage on bytecode files. + if (At + Size < MemEnd) + MemEnd = BlockEnd = At+Size; + + if (At + Size != MemEnd) error("Invalid Top Level Block Length! Type:" + utostr(Type) + ", Size:" + utostr(Size)); - } // Parse the module contents this->ParseModule(); -- 2.34.1