aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-09-27 16:59:06 +0000
committerChris Lattner <sabre@nondot.org>2004-09-27 16:59:06 +0000
commit56bc894d06b81fd27065ad73d69b1781d2fe4953 (patch)
tree70947df007b2eb9b692bdb3f9f2fc126e837ebfb /lib/Bytecode
parent48f44cf5b3717df78933f968424213f39f807997 (diff)
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
Diffstat (limited to 'lib/Bytecode')
-rw-r--r--lib/Bytecode/Reader/Reader.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 18780208e2..d44003c73a 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();