@@ -12435,12 +12435,53 @@ namespace BinaryNinja {
12435
12435
std::vector<ArchAndAddr> GetUnresolvedIndirectBranches();
12436
12436
bool HasUnresolvedIndirectBranches();
12437
12437
12438
+ /*! \brief Apply an automatic type adjustment to the call at `addr` in `arch`.
12439
+
12440
+ The adjustment will take effect if the new confidence level is higher than the confidence
12441
+ level of any existing adjustment at the given address, whether automatic or user-defined.
12442
+
12443
+ \param arch Architecture for the call instruction
12444
+ \param addr Address of the call instruction
12445
+ \param adjust Type adjustment to apply
12446
+ */
12438
12447
void SetAutoCallTypeAdjustment(Architecture* arch, uint64_t addr, const Confidence<Ref<Type>>& adjust);
12448
+
12449
+ /*! \brief Apply an automatic stack adjustment to the call at `addr` in `arch`.
12450
+
12451
+ The adjustment will take effect if the new confidence level is higher than the confidence
12452
+ level of any existing adjustment at the given address, whether automatic or user-defined.
12453
+
12454
+ \param arch Architecture for the call instruction
12455
+ \param addr Address of the call instruction
12456
+ \param adjust Stack adjustment to apply
12457
+ */
12439
12458
void SetAutoCallStackAdjustment(Architecture* arch, uint64_t addr, const Confidence<int64_t>& adjust);
12459
+
12460
+ /*! \brief Apply automatic register stack adjustments to the call at `addr` in `arch`.
12461
+
12462
+ \note This overwrites any existing register stack adjustments at the given address,
12463
+ irrespective of their confidence level.
12464
+
12465
+ \param arch Architecture for the call instruction
12466
+ \param addr Address of the call instruction
12467
+ \param adjust Map of register stack adjustments to apply
12468
+ */
12440
12469
void SetAutoCallRegisterStackAdjustment(
12441
12470
Architecture* arch, uint64_t addr, const std::map<uint32_t, Confidence<int32_t>>& adjust);
12471
+
12472
+ /*! \brief Apply an automatic register stack adjustment for a specific register stack to the call at `addr` in `arch`.
12473
+
12474
+ The adjustment will take effect if the new confidence level is higher than the confidence
12475
+ level of any existing adjustment at the given address, whether automatic or user-defined.
12476
+
12477
+ \param arch Architecture for the call instruction
12478
+ \param addr Address of the call instruction
12479
+ \param regStack Register stack identifier
12480
+ \param adjust Register stack adjustment to apply
12481
+ */
12442
12482
void SetAutoCallRegisterStackAdjustment(
12443
12483
Architecture* arch, uint64_t addr, uint32_t regStack, const Confidence<int32_t>& adjust);
12484
+
12444
12485
void SetUserCallTypeAdjustment(Architecture* arch, uint64_t addr, const Confidence<Ref<Type>>& adjust);
12445
12486
void SetUserCallStackAdjustment(Architecture* arch, uint64_t addr, const Confidence<int64_t>& adjust);
12446
12487
void SetUserCallRegisterStackAdjustment(
@@ -12641,6 +12682,15 @@ namespace BinaryNinja {
12641
12682
bool GetInstructionContainingAddress(Architecture* arch, uint64_t addr, uint64_t* start);
12642
12683
12643
12684
Confidence<bool> IsInlinedDuringAnalysis();
12685
+ /*! Set whether the function should be inlined during analysis.
12686
+
12687
+ This will take effect if the new confidence level is higher than the confidence
12688
+ level of the existing value of `IsInlinedDuringAnalysis`, whether automatic or
12689
+ user-defined.
12690
+
12691
+ \param inlined Whether the function should be inlined.
12692
+
12693
+ */
12644
12694
void SetAutoInlinedDuringAnalysis(Confidence<bool> inlined);
12645
12695
void SetUserInlinedDuringAnalysis(Confidence<bool> inlined);
12646
12696
0 commit comments