@@ -49,19 +49,33 @@ extern "C" void *LLVMRustGetSymbols(
49
49
std::unique_ptr<object::SymbolicFile> Obj;
50
50
51
51
const file_magic Type = identify_magic (Buf->getBuffer ());
52
- if (Type != file_magic::bitcode ) {
53
- return ErrorCallback ( " not bitcode " ) ;
52
+ if (! object::SymbolicFile::isSymbolicFile (Type, &Context) ) {
53
+ return 0 ;
54
54
}
55
- auto ObjOrErr = object::SymbolicFile::createSymbolicFile (
55
+
56
+ if (Type == file_magic::bitcode) {
57
+ auto ObjOrErr = object::SymbolicFile::createSymbolicFile (
56
58
Buf->getMemBufferRef (), file_magic::bitcode, &Context);
57
- if (!ObjOrErr) {
58
- Error E = ObjOrErr.takeError ();
59
- SmallString<0 > ErrorBuf;
60
- raw_svector_ostream Error (ErrorBuf);
61
- Error << E << ' \0 ' ;
62
- return ErrorCallback (Error.str ().data ());
59
+ if (!ObjOrErr) {
60
+ Error E = ObjOrErr.takeError ();
61
+ SmallString<0 > ErrorBuf;
62
+ raw_svector_ostream Error (ErrorBuf);
63
+ Error << E << ' \0 ' ;
64
+ return ErrorCallback (Error.str ().data ());
65
+ }
66
+ Obj = std::move (*ObjOrErr);
67
+ } else {
68
+ auto ObjOrErr = object::SymbolicFile::createSymbolicFile (Buf->getMemBufferRef ());
69
+ if (!ObjOrErr) {
70
+ Error E = ObjOrErr.takeError ();
71
+ SmallString<0 > ErrorBuf;
72
+ raw_svector_ostream Error (ErrorBuf);
73
+ Error << E << ' \0 ' ;
74
+ return ErrorCallback (Error.str ().data ());
75
+ }
76
+ Obj = std::move (*ObjOrErr);
63
77
}
64
- Obj = std::move (*ObjOrErr);
78
+
65
79
66
80
for (const object::BasicSymbolRef &S : Obj->symbols ()) {
67
81
if (!isArchiveSymbol (S))
0 commit comments