Ramakrishna Upadrasta

33 papers A* 1A 1B 4Journal 20Unranked 5
YearRankTypeTitle / Venue / Authors
2026 A conf
CGO
Nilesh Rajendra Shah, M. V. V. S. Manoj Kumar, Dhairya Baxi, Ramakrishna Upadrasta
2026 J jnl
CoRR
Animesh Singh, K. Shiv Kumar, S. VenkataKeerthy, Pragna Mamidipaka, R. V. B. R. N. Aaseesh, Sayandeep Sen, Palanivel A. Kodeswaran, Theophilus A. Benson, Ramakrishna Upadrasta, Praveen Tammana
2025 J jnl
CoRR
Kuldeep Gautam, S. VenkataKeerthy, Ramakrishna Upadrasta
2025 conf
VMCAI (2)
Utpal Bora, Saurabh Joshi, Gautam Muduganti, Ramakrishna Upadrasta
2025 J jnl
ACM Trans. Softw. Eng. Methodol.
S. VenkataKeerthy, Soumya Banerjee, Sayan Dey, Yashas Andaluri, Raghul P. S., Subrahmanyam Kalyanasundaram, Fernando Magno Quintão Pereira, Ramakrishna Upadrasta
2024 J jnl
CoRR
Utpal Bora, Saurabh Joshi, Gautam Muduganti, Ramakrishna Upadrasta
2024 B conf
CC
S. VenkataKeerthy, Siddharth Jain, Umesh Kalvakuntla, Pranav Sai Gorantla, Rajiv Shailesh Chitale, Eugene Brevdo, Albert Cohen, Mircea Trofin, Ramakrishna Upadrasta
2023 J jnl
ACM Trans. Archit. Code Optim.
Nilesh Rajendra Shah, Ashitabh Misra, Antoine Miné, Rakesh Venkat, Ramakrishna Upadrasta
2023 B conf
CC
S. VenkataKeerthy, Siddharth Jain, Anilava Kundu, Rohit Aggarwal, Albert Cohen, Ramakrishna Upadrasta
2023 J jnl
CoRR
S. VenkataKeerthy, Siddharth Jain, Umesh Kalvakuntla, Pranav Sai Gorantla, Rajiv Shailesh Chitale, Eugene Brevdo, Albert Cohen, Mircea Trofin, Ramakrishna Upadrasta
2023 J jnl
CoRR
S. VenkataKeerthy, Yashas Andaluri, Sayan Dey, Soumya Banerjee, Ramakrishna Upadrasta
2022 ch.
SSA-based Compiler Design
Dibyendu Das, Ramakrishna Upadrasta, Vugranam C. Sreedhar
2022 J jnl
CoRR
Shalini Jain, Rahul Utkoor, Hemalatha Eedi, Sathya Peri, Ramakrishna Upadrasta
2022 B conf
ISPASS
Shalini Jain, Yashas Andaluri, S. VenkataKeerthy, Ramakrishna Upadrasta
2022 J jnl
CoRR
Shalini Jain, Yashas Andaluri, S. VenkataKeerthy, Ramakrishna Upadrasta
2022 conf
APNet
S. VenkataKeerthy, Yashas Andaluri, Sayan Dey, Rinku Shah, Praveen Tammana, Ramakrishna Upadrasta
2022 J jnl
CoRR
S. VenkataKeerthy, Siddharth Jain, Rohit Aggarwal, Albert Cohen, Ramakrishna Upadrasta
2022 conf
LLVM-HPC@SC
Shalini Jain, S. VenkataKeerthy, Rohit Aggarwal, Tharun Kumar Dangeti, Dibyendu Das, Ramakrishna Upadrasta
2021 J jnl
CoRR
Sanket Tavarageri, Gagandeep Goyal, Sasikanth Avancha, Bharat Kaul, Ramakrishna Upadrasta
2021 conf
LLVM-HPC@SC
Utpal Bora, Shraiysh Vaishay, Saurabh Joshi, Ramakrishna Upadrasta
2021 J jnl
CoRR
Utpal Bora, Shraiysh Vaishay, Saurabh Joshi, Ramakrishna Upadrasta
2021 J jnl
ACM Trans. Archit. Code Optim.
Sanket Tavarageri, Alexander Heinecke, Sasikanth Avancha, Bharat Kaul, Gagandeep Goyal, Ramakrishna Upadrasta
2020 J jnl
ACM Trans. Archit. Code Optim.
S. VenkataKeerthy, Rohit Aggarwal, Shalini Jain, Maunendra Sankar Desarkar, Ramakrishna Upadrasta, Y. N. Srikant
2020 J jnl
ACM Trans. Archit. Code Optim.
Utpal Bora, Santanu Das, Pankaj Kukreja, Saurabh Joshi, Ramakrishna Upadrasta, Sanjay V. Rajopadhye
2020 J jnl
CoRR
Sanket Tavarageri, Alexander Heinecke, Sasikanth Avancha, Gagandeep Goyal, Ramakrishna Upadrasta, Bharat Kaul
2020 J jnl
CoRR
Sanket Tavarageri, Alexander Heinecke, Sasikanth Avancha, Gagandeep Goyal, Ramakrishna Upadrasta, Bharat Kaul
2019 J jnl
CoRR
Venkata Keerthy S, Rohit Aggarwal, Shalini Jain, Maunendra Sankar Desarkar, Ramakrishna Upadrasta, Y. N. Srikant
2019 J jnl
CoRR
Utpal Bora, Santanu Das, Pankaj Kukreja, Saurabh Joshi, Ramakrishna Upadrasta, Sanjay V. Rajopadhye
2019 conf
HPCS
Abhishek A. Patwardhan, Ramakrishna Upadrasta
2018 B conf
ICNP
Tharun Kumar Dangeti, Venkata Keerthy S, Ramakrishna Upadrasta
2013
Ramakrishna Upadrasta
2013 A* conf
POPL
Ramakrishna Upadrasta, Albert Cohen
2012 J jnl
ACM Trans. Archit. Code Optim.
Dibyendu Das, Benoît Dupont de Dinechin, Ramakrishna Upadrasta
tests/unit/test_decompile_function_type.py
← Index tests/unit/test_decompile_function_type.py python
"""Unit tests for bninja/function_type.py."""
import sys
import pytest
from unittest.mock import MagicMock

# Install binaryninja stubs before importing
from tests.unit.conftest_binja_stubs import install_binja_stubs, SymbolType
install_binja_stubs()

from redb.extractors.decompiler.bninja.function_type import (
    FunctionType,
    FunctionTypeAnalysis,
)


# ============================================================================
# 4a. FunctionType / FunctionTypeAnalysis
# ============================================================================


class TestFunctionTypeEnum:
    def test_function_type_enum_values(self):
        assert FunctionType.USER.value == "USER"
        assert FunctionType.LIBRARY.value == "LIBRARY"
        assert FunctionType.EXTERNAL.value == "EXTERNAL"
        assert FunctionType.THUNK.value == "THUNK"
        assert FunctionType.UNKNOWN.value == "UNKNOWN"


class TestFunctionTypeAnalysis:
    def _make_function(self, symbol_type=None, is_thunk=False, raise_on_symbol=False):
        func = MagicMock()
        func.is_thunk = is_thunk
        if raise_on_symbol:
            type(func).symbol = property(lambda self: (_ for _ in ()).throw(Exception("no symbol")))
        else:
            func.symbol.type = symbol_type if symbol_type is not None else SymbolType.FunctionSymbol
        return func

    def test_user_function_type(self):
        func = self._make_function(symbol_type=SymbolType.FunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.USER

    def test_external_function_type(self):
        func = self._make_function(symbol_type=SymbolType.ImportedFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.EXTERNAL

    def test_library_function_type(self):
        func = self._make_function(symbol_type=SymbolType.LibraryFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.LIBRARY

    def test_thunk_function_type(self):
        # Thunk overrides the symbol type
        func = self._make_function(
            symbol_type=SymbolType.FunctionSymbol, is_thunk=True
        )
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.THUNK

    def test_exception_returns_unknown(self):
        func = self._make_function(raise_on_symbol=True)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.UNKNOWN