PLSysSec / sys

Sys: A Static/Symbolic Tool for Finding Good Bugs in Good (Browser) Code
https://cseweb.ucsd.edu/~dstefan/pubs/brown:2020:sys.pdf
GNU General Public License v2.0
215 stars 41 forks source link

DecodeException "Unknown subclass id for DINode: MDSubclassID 26" #15

Open killer933 opened 3 years ago

killer933 commented 3 years ago

I tried to use WLLVM to compile a huge program. Then I got a excuteable file , and I used the command 'extract-bc' which was came from WLLVM to get the *.ll file. Finally, I used sys to check bugs, but I got a error "DecodeException "Unknown subclass id for DINode: MDSubclassID 26". I found some clue about the problem in the llvm-hs project.
"Comparing LLVM Specialized Metadata Nodes with llvm-hs supported Metadata subclasses " https://github.com/llvm-hs/llvm-hs/issues/307 Is there anyone knows how to slove the isssue? or, Is there any other way to get the ll file in a huge program? Thanks!

deian commented 3 years ago

sorry for the delay, my notification set up sucks. I think I fixed a few similar issues in llvm-hs in the past. (You can checkout our llvm-hs fork.) Their support is not complete and with huge files you'll hit edge cases like this once in a while. That's honestly the easiest way to go about it.

killer933 commented 3 years ago

I'm happy to hear from the author. I also want to know the commit version of llvm-hs which you had fixed. In that case, I can build the right llvm-hs. Thanks!

deian commented 3 years ago

https://github.com/PLSysSec/sys/blob/master/stack.yaml#L8

asesidaa commented 1 year ago

I think the easiest way is to build without the -g flag, otherwise, you need to add DILabel support manually in llvm-hs as specified in the issue that you mentioned. You would also need to cherry-pick this commit https://github.com/llvm-hs/llvm-hs/commit/b518fe11241e8aea40760eee9cd95421ef772646 before add new node.