[LLVMdev] Something wrong with my libpthread.so
Mahadevan R
mdevan.foobar at gmail.com
Sat Oct 31 23:47:59 PDT 2009
Hi,
On Sat, Oct 31, 2009 at 11:42 AM, Nan Zhu <zhunansjtu at gmail.com> wrote:
> Hi,all
>
> I tried to run the generated whole-program bitcode of BIND,but I got some
> information:
>
> 0 lli 0x0000000000feda16
> 1 lli 0x0000000000fed88f
> 2 libpthread.so.0 0x0000003df340eee0
> 3 libc.so.6 0x0000003df28332f5 gsignal + 53
> 4 libc.so.6 0x0000003df2834b20 abort + 384
> 5 libc.so.6 0x0000003df282c2fa __assert_fail + 234
> 6 lli 0x000000000085ece9
> llvm::SmallVectorImpl<llvm::Instruction*>::operator[](unsigned int) + 77
> 7 lli 0x0000000000850ce0
> llvm::BitcodeReader::ParseMetadataAttachment() + 448
> 8 lli 0x0000000000851043
Looks like a bug in the following piece of code, from
BitcodeReader::ParseMetadataAttachment():
1601 case bitc::METADATA_ATTACHMENT: {
1602 unsigned RecordLength = Record.size();
1603 if (Record.empty() || (RecordLength - 1) % 2 == 1)
1604 return Error ("Invalid METADATA_ATTACHMENT reader!");
1605 Instruction *Inst = InstructionList[Record[0]];
1606 for (unsigned i = 1; i != RecordLength; i = i+2) {
1607 unsigned Kind = Record[i];
1608 Value *Node = MDValueList.getValueFwdRef(Record[i+1]);
1609 TheMetadata.addMD(Kind, cast<MDNode>(Node), Inst);
1610 }
1611 break;
1612 }
At line 1606, i never becomes equal to RecordLength.
Regards,
-Mahadevan.
More information about the llvm-dev
mailing list