diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-01-18 05:21:58 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-01-18 05:21:58 +0000 |
commit | 982bf210f524be9c22f14755973a36b471fc2894 (patch) | |
tree | 4850f24fbea0fbd80883d9e31a6a670997ec3ae8 | |
parent | 4d6d5aa0ffd29d46933955a07e0e1ff94be809a7 (diff) | |
parent | d80cf4f24d36dbad88bf0e7eda815706c9e45a3f (diff) | |
download | libbcc-android14-d1-s7-release.tar.gz |
Snap for 9500284 from d80cf4f24d36dbad88bf0e7eda815706c9e45a3f to udc-d1-releaseandroid-14.0.0_r9android-14.0.0_r8android-14.0.0_r7android-14.0.0_r6android-14.0.0_r5android-14.0.0_r4android-14.0.0_r3android-14.0.0_r12android-14.0.0_r11android-14.0.0_r10android14-d1-s7-releaseandroid14-d1-s6-releaseandroid14-d1-s5-releaseandroid14-d1-s4-releaseandroid14-d1-s3-releaseandroid14-d1-s2-releaseandroid14-d1-s1-releaseandroid14-d1-release
Change-Id: I2a818f83ddcdb9e6968c4a455c1b68ab43d10e5a
-rw-r--r-- | lib/RSGlobalInfoPass.cpp | 20 | ||||
-rw-r--r-- | lib/RSInvokeHelperPass.cpp | 4 | ||||
-rw-r--r-- | lib/RSUtils.h | 3 | ||||
-rw-r--r-- | lib/RSX86TranslateGEPPass.cpp | 1 |
4 files changed, 28 insertions, 0 deletions
diff --git a/lib/RSGlobalInfoPass.cpp b/lib/RSGlobalInfoPass.cpp index 40d658b..d9e64f3 100644 --- a/lib/RSGlobalInfoPass.cpp +++ b/lib/RSGlobalInfoPass.cpp @@ -206,6 +206,10 @@ public: llvm::Value *V = M.getOrInsertGlobal(kRsGlobalEntries, Int32Ty); llvm::GlobalVariable *GlobalEntries = llvm::dyn_cast<llvm::GlobalVariable>(V); + if (!GlobalEntries) { + // Abort when dynamic_cast failed? + return false; + } llvm::Constant *GlobalEntriesInit = llvm::ConstantInt::get(Int32Ty, NumGlobals); GlobalEntries->setInitializer(GlobalEntriesInit); @@ -215,6 +219,10 @@ public: V = M.getOrInsertGlobal(kRsGlobalNames, VoidPtrArrayTy); llvm::GlobalVariable *GlobalNames = llvm::dyn_cast<llvm::GlobalVariable>(V); + if (!GlobalNames) { + // Abort when dynamic_cast failed? + return false; + } llvm::Constant *GlobalNamesInit = llvm::ConstantArray::get(VoidPtrArrayTy, GVNames); GlobalNames->setInitializer(GlobalNamesInit); @@ -224,6 +232,10 @@ public: V = M.getOrInsertGlobal(kRsGlobalAddresses, VoidPtrArrayTy); llvm::GlobalVariable *GlobalAddresses = llvm::dyn_cast<llvm::GlobalVariable>(V); + if (!GlobalAddresses) { + // Abort when dynamic_cast failed? + return false; + } llvm::Constant *GlobalAddressesInit = llvm::ConstantArray::get(VoidPtrArrayTy, GVAddresses); GlobalAddresses->setInitializer(GlobalAddressesInit); @@ -234,6 +246,10 @@ public: V = M.getOrInsertGlobal(kRsGlobalSizes, SizeArrayTy); llvm::GlobalVariable *GlobalSizes = llvm::dyn_cast<llvm::GlobalVariable>(V); + if (!GlobalSizes) { + // Abort when dynamic_cast failed? + return false; + } llvm::Constant *GlobalSizesInit; if (PointerSizeInBits == 32) { GlobalSizesInit = llvm::ConstantDataArray::get(M.getContext(), GVSizes32); @@ -247,6 +263,10 @@ public: V = M.getOrInsertGlobal(kRsGlobalProperties, Int32ArrayTy); llvm::GlobalVariable *GlobalProperties = llvm::dyn_cast<llvm::GlobalVariable>(V); + if (!GlobalProperties) { + // Abort when dynamic_cast failed? + return false; + } llvm::Constant *GlobalPropertiesInit = llvm::ConstantDataArray::get(M.getContext(), GVProperties); GlobalProperties->setInitializer(GlobalPropertiesInit); diff --git a/lib/RSInvokeHelperPass.cpp b/lib/RSInvokeHelperPass.cpp index 99316ce..a22909f 100644 --- a/lib/RSInvokeHelperPass.cpp +++ b/lib/RSInvokeHelperPass.cpp @@ -177,6 +177,10 @@ public: continue; llvm::StructType *argStructType = llvm::dyn_cast<llvm::StructType>(argType->getPointerElementType()); + if (!argStructType) { + // Abort when dynamic_cast failed? + continue; + } for (unsigned int i = 0; i < argStructType->getNumElements(); i++) { llvm::Type *currentType = argStructType->getElementType(i); diff --git a/lib/RSUtils.h b/lib/RSUtils.h index e7ce1b5..f30f4d1 100644 --- a/lib/RSUtils.h +++ b/lib/RSUtils.h @@ -28,6 +28,9 @@ namespace { static inline llvm::StringRef getUnsuffixedStructName(const llvm::StructType *T) { + if (!T) { + abort(); // exit? + } #ifdef _DEBUG // Bug: 22926131 // When building with assertions enabled, LLVM cannot read the name of a diff --git a/lib/RSX86TranslateGEPPass.cpp b/lib/RSX86TranslateGEPPass.cpp index 52dee0d..113ca28 100644 --- a/lib/RSX86TranslateGEPPass.cpp +++ b/lib/RSX86TranslateGEPPass.cpp @@ -77,6 +77,7 @@ private: if (!OpC) { ALOGE("Operand for struct type is not constant!"); bccAssert(false); + return nullptr; // NOLINT, unreached } // Offset = Offset + EltOffset for index into a struct |