@@ -8249,10 +8249,20 @@ namespace BinaryNinja {
82498249 Ref<ExternalLocation> GetExternalLocation(Ref<Symbol> sourceSymbol);
82508250 std::vector<Ref<ExternalLocation>> GetExternalLocations();
82518251
8252+ /*! \deprecated Use GetGlobalPointerValues instead. */
82528253 Confidence<RegisterValue> GetGlobalPointerValue() const;
8254+ std::vector<std::pair<uint32_t, Confidence<RegisterValue>>> GetGlobalPointerValues() const;
8255+ std::vector<std::pair<uint32_t, Confidence<RegisterValue>>> GetDefaultGlobalPointerValues() const;
8256+ std::vector<std::pair<uint32_t, Confidence<RegisterValue>>> GetUserGlobalPointerValues() const;
8257+ /*! \deprecated Use UserGlobalPointerValuesSet instead. */
82538258 bool UserGlobalPointerValueSet() const;
8259+ bool UserGlobalPointerValuesSet() const;
8260+ /*! \deprecated Use ClearUserGlobalPointerValues instead. */
82548261 void ClearUserGlobalPointerValue();
8262+ void ClearUserGlobalPointerValues();
8263+ /*! \deprecated Use SetUserGlobalPointerValues instead. */
82558264 void SetUserGlobalPointerValue(const Confidence<RegisterValue>& value);
8265+ void SetUserGlobalPointerValues(const std::vector<std::pair<uint32_t, Confidence<RegisterValue>>>& values);
82568266
82578267 std::optional<std::pair<std::string, BNStringType>> StringifyUnicodeData(Architecture* arch, const DataBuffer& buffer, bool nullTerminates = true, bool allowShortStrings = false);
82588268
@@ -13650,7 +13660,9 @@ namespace BinaryNinja {
1365013660
1365113661 std::vector<DisassemblyTextLine> GetTypeTokens(DisassemblySettings* settings = nullptr);
1365213662
13663+ /*! \deprecated Use GetGlobalPointerValues instead. */
1365313664 Confidence<RegisterValue> GetGlobalPointerValue() const;
13665+ std::vector<std::pair<uint32_t, Confidence<RegisterValue>>> GetGlobalPointerValues() const;
1365413666 bool UsesIncomingGlobalPointer() const;
1365513667 Confidence<RegisterValue> GetRegisterValueAtExit(uint32_t reg) const;
1365613668
@@ -17973,6 +17985,7 @@ namespace BinaryNinja {
1797317985 static uint32_t GetHighIntegerReturnValueRegisterCallback(void* ctxt);
1797417986 static uint32_t GetFloatReturnValueRegisterCallback(void* ctxt);
1797517987 static uint32_t GetGlobalPointerRegisterCallback(void* ctxt);
17988+ static uint32_t* GetGlobalPointerRegistersCallback(void* ctxt, size_t* count);
1797617989
1797717990 static uint32_t* GetImplicitlyDefinedRegistersCallback(void* ctxt, size_t* count);
1797817991 static void GetIncomingRegisterValueCallback(
@@ -18124,11 +18137,13 @@ namespace BinaryNinja {
1812418137 */
1812518138 virtual uint32_t GetFloatReturnValueRegister();
1812618139
18127- /*! Gets the register that holds the global pointer, if the calling convention defines one.
18140+ /*! \deprecated Use GetGlobalPointerRegisters instead. New calling convention implementations
18141+ should override GetGlobalPointerRegisters.
1812818142
1812918143 \return The global pointer register index, or BN_INVALID_REGISTER if there is none
1813018144 */
1813118145 virtual uint32_t GetGlobalPointerRegister();
18146+ virtual std::vector<uint32_t> GetGlobalPointerRegisters();
1813218147
1813318148 /*! Gets the registers that are implicitly given a known value on function entry by this
1813418149 calling convention.
@@ -18455,7 +18470,11 @@ namespace BinaryNinja {
1845518470 virtual uint32_t GetIntegerReturnValueRegister() override;
1845618471 virtual uint32_t GetHighIntegerReturnValueRegister() override;
1845718472 virtual uint32_t GetFloatReturnValueRegister() override;
18473+ /*! \deprecated Use GetGlobalPointerRegisters instead. New calling convention implementations
18474+ should override GetGlobalPointerRegisters.
18475+ */
1845818476 virtual uint32_t GetGlobalPointerRegister() override;
18477+ virtual std::vector<uint32_t> GetGlobalPointerRegisters() override;
1845918478
1846018479 virtual std::vector<uint32_t> GetImplicitlyDefinedRegisters() override;
1846118480 virtual RegisterValue GetIncomingRegisterValue(uint32_t reg, Function* func) override;
0 commit comments