Xiaofan Jiang

115 papers A* 7A 7B 3Misc 18Journal 33Unranked 46
YearRankTypeTitle / Venue / Authors
2026 conf
CHI Extended Abstracts
Minghui Zhao, Judith Amores, Vaishnavi Nattar Ranganathan, Xiaofan Jiang, Bodhi Priyantha
2026 J jnl
CoRR
Xiangyuan Xue, Yuyu Wang, Ruijie Yao, Xiaoyue Ni, Xiaofan Jiang, Jingping Nie
2026 J jnl
CoRR
Yanchen Liu, Yuang Fan, Minghui Zhao, Xiaofan Jiang
2026 J jnl
CoRR
Emily Bejerano, Federico Tondolo, Ayaan Qayyum, Xiaofan Yu, Xiaofan Jiang
2025 J jnl
CoRR
Siyang Jiang, Mu Yuan, Xiang Ji, Bufang Yang, Zeyu Liu, Lilin Xu, Yang Li, Yuting He, Liran Dong, Wenrui Lu, Zhenyu Yan, Xiaofan Jiang, Wei Gao, Hongkai Chen, Guoliang Xing
2025 J jnl
CoRR
Siyang Jiang, Bufang Yang, Lilin Xu, Mu Yuan, Yeerzhati Abudunuer, Kaiwei Liu, Liekang Zeng, Hongkai Chen, Zhenyu Yan, Xiaofan Jiang, Guoliang Xing
2025 J jnl
CoRR
Bufang Yang, Lilin Xu, Liekang Zeng, Kaiwei Liu, Siyang Jiang, Wenrui Lu, Hongkai Chen, Xiaofan Jiang, Guoliang Xing, Zhenyu Yan
2025 conf
HumanSys@SenSys
Yueyuan Sui, Minghui Zhao, Junxi Xia, Yiting Zhang, Xiaofan Jiang, Stephen Xia
2025 conf
HumanSys@SenSys
Yueyuan Sui, Yiting Zhang, Yanchen Liu, Minghui Zhao, Kaiyuan Hou, Jingping Nie, Xiaofan Jiang, Stephen Xia
2025 J jnl
CoRR
Adrian Nicolas Florea, Xilin Jiang, Nima Mesgarani, Xiaofan Jiang
2025 J jnl
CoRR
Lilin Xu, Kaiyuan Hou, Xiaofan Jiang
2025 Misc conf
SenSys
Minghui Zhao, Junxi Xia, Kaiyuan Hou, Yanchen Liu, Stephen Xia, Xiaofan Jiang
2025 Misc conf
SenSys
Jingping Nie, Yuang Fan, Minghui Zhao, Runxi Wan, Ziyi Xuan, Matthias Preindl, Xiaofan Jiang
2025 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Qijia Shao, Junxiao Chen, Ho-Man Colman Leung, Meiqi Zhao, Ruoyu Xu, Jiting Liu, Lisa Maria DiSalvo García, Xiaofan Jiang, Marie-Pierre St-Onge, Xia Zhou
2025 A* conf
MobiCom
Yuang Fan, Xuhai Xu, Xiaofan Jiang
2025 J jnl
CoRR
Bufang Yang, Lilin Xu, Liekang Zeng, Yunqi Guo, Siyang Jiang, Wenrui Lu, Kaiwei Liu, Hancheng Xiang, Xiaofan Jiang, Guoliang Xing, Zhenyu Yan
2025 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Jingping Nie, Yuang Fan, Ziyi Xuan, Minghui Zhao, Runxi Wan, Matthias Preindl, Xiaofan Jiang
2025 J jnl
CoRR
Kaiyuan Hou, Minghui Zhao, Lilin Xu, Yuang Fan, Xiaofan Jiang
2024 J jnl
CoRR
Yanchen Liu, Minghui Zhao, Kaiyuan Hou, Junxi Xia, Charles J. Carver, Stephen Xia, Xia Zhou, Xiaofan Jiang
2024 A* conf
MobiCom
Minghui Zhao, Kaiyuan Hou, Junxi Xia, Stephen Xia, Xiaofan Jiang
2024 A conf
MobiSys
Qijia Shao, Jiting Liu, Emily Bejerano, Ho-Man Colman Leung, Jingping Nie, Xiaofan Jiang, Xia Zhou
2024 J jnl
CoRR
Bufang Yang, Siyang Jiang, Lilin Xu, Kaiwei Liu, Hai Li, Guoliang Xing, Hongkai Chen, Xiaofan Jiang, Zhenyu Yan
2024 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Bufang Yang, Siyang Jiang, Lilin Xu, Kaiwei Liu, Hai Li, Guoliang Xing, Hongkai Chen, Xiaofan Jiang, Zhenyu Yan
2024 A* conf
MobiCom
Kaiyuan Hou, Yunqi Guo, Heming Fu, Hongkai Chen, Zhenyu Yan, Guoliang Xing, Xiaofan Jiang
2024 A conf
MobiSys
Qijia Shao, Jiting Liu, Emily Bejerano, Ho-Man Colman Leung, Jingping Nie, Xiaofan Jiang, Xia Zhou
2024 J jnl
CoRR
Jingping Nie, Hanya Shao, Yuang Fan, Qijia Shao, Haoxuan You, Matthias Preindl, Xiaofan Jiang
2024 J jnl
CoRR
Minghui Zhao, Junxi Xia, Kaiyuan Hou, Yanchen Liu, Stephen Xia, Xiaofan Jiang
2024 A* conf
MobiCom
Jingping Nie, Yuang Fan, Ziyi Xuan, Matthias Preindl, Xiaofan Jiang
2024 A* conf
MobiCom
Yanchen Liu, Emily Bejerano, Minghui Zhao, Federico Tondolo, Xiaofan Jiang
2024 J jnl
CoRR
Bufang Yang, Yunqi Guo, Lilin Xu, Zhenyu Yan, Hongkai Chen, Guoliang Xing, Xiaofan Jiang
2024 J jnl
CoRR
Yueyuan Sui, Minghui Zhao, Junxi Xia, Xiaofan Jiang, Stephen Xia
2024 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Yueyuan Sui, Minghui Zhao, Junxi Xia, Xiaofan Jiang, Stephen Xia
2024 A* conf
MobiCom
Yueyuan Sui, Minghui Zhao, Junxi Xia, Xiaofan Jiang, Stephen Xia
2024 J jnl
CoRR
Yunqi Guo, Kaiyuan Hou, Heming Fu, Hongkai Chen, Zhenyu Yan, Guoliang Xing, Xiaofan Jiang
2023 conf
e-Energy
Jingping Nie, Stephen Xia, Yanchen Liu, Shengxuan Ding, Lanxiang Hu, Minghui Zhao, Yuang Fan, Mohamed A. Abdel-Aty, Matthias Preindl, Xiaofan Jiang
2023 conf
IPSN
Kaiyuan Hou, Stephen Xia, Emily Bejerano, Junyi Wu, Xiaofan Jiang
2023 A* conf
MobiCom
Stephen Xia, Minghui Zhao, Charuvahan Adhivarahan, Kaiyuan Hou, Yuyang Chen, Jingping Nie, Eugene Wu, Karthik Dantu, Xiaofan Jiang
2023 conf
CPS-IoT Week Workshops
Ziyi Xuan, Ming Liu, Jingping Nie, Minghui Zhao, Stephen Xia, Xiaofan Jiang
2023 conf
IPSN
Yanchen Liu, Yu Ji, Minghui Zhao, Xiaofan Jiang, Xia Zhou, Changxi Zheng
2023 conf
IoTDI
Minghui Zhao, Stephen Xia, Jingping Nie, Kaiyuan Hou, Avik Dhupar, Xiaofan Jiang
2023 conf
BuildSys
Stephen Xia, Peter Wei, Yanchen Liu, Andrew Sonta, Xiaofan Jiang
2022 conf
IPSN
Kaiyuan Hou, Yanchen Liu, Peter Wei, Chenye Yang, Hengjiu Kang, Stephen Xia, Teresa Spada, Andrew Rundle, Xiaofan Jiang
2022 A conf
MobiSys
Minghui Zhao, Yanchen Liu, Avik Dhupar, Kaiyuan Hou, Stephen Xia, Xiaofan Jiang
2022 A conf
MobiSys
Yanchen Liu, Minghui Zhao, Stephen Xia, Eugene Wu, Xiaofan Jiang
2022 Misc conf
SenSys
Kaiyuan Hou, Stephen Xia, Junyi Wu, Minghui Zhao, Emily Bejerano, Xiaofan Jiang
2022 Misc conf
SenSys
Jingping Nie, Minghui Zhao, Stephen Xia, Xinghua Sun, Hanya Shao, Yuang Fan, Matthias Preindl, Xiaofan Jiang
2022 conf
IPSN
Stephen Xia, Xiaofan Jiang
2022 conf
IASA@MobiSys
Kaiyuan Hou, Stephen Xia, Xiaofan Jiang
2022 conf
IASA@MobiSys
Jingping Nie, Hanya Shao, Minghui Zhao, Stephen Xia, Matthias Preindl, Xiaofan Jiang
2022 conf
BuildSys
Jingping Nie, Lanxiang Hu, YiAn Liu, Yuang Fan, Matthias Preindl, Xiaofan Jiang
2022 J jnl
ACM Trans. Internet Things
Deliang Yang, Guoliang Xing, Jun Huang, Xiangmao Chang, Xiaofan Jiang
2022 B conf
DCOSS
Yanchen Liu, Jingping Nie, Stephen Xia, Jiajing Sun, Peter Wei, Xiaofan Jiang
2022 J jnl
IEEE Pervasive Comput.
Yanchen Liu, Stephen Xia, Jingping Nie, Peter Wei, Zhan Shu, Jeffrey Andrew Chang, Xiaofan Jiang
2021 J jnl
ACM Trans. Sens. Networks
Peter Wei, Xiaofan Jiang
2021 Misc conf
SenSys
Stephen Xia, Rishikanth Chandrasekaran, Yanchen Liu, Chenye Yang, Tajana Simunic Rosing, Xiaofan Jiang
2021 conf
IPSN
Stephen Xia, Jingping Nie, Xiaofan Jiang
2021 conf
IPSN
Stephen Xia, Xiaofan Jiang
2021 J jnl
Sensors
Hugo Meyer, Peter Wei, Xiaofan Jiang
2021 conf
IPSN
Peter Wei, Yanchen Liu, Xiaofan Jiang
2021 J jnl
Pervasive Mob. Comput.
Jingping Nie, Yanchen Liu, Yigong Hu, Yuanyuting Wang, Stephen Xia, Matthias Preindl, Xiaofan Jiang
2020 J jnl
IEEE Internet Things J.
Peter Wei, Stephen Xia, Runfeng Chen, Jingyi Qian, Max Chong Li, Xiaofan Jiang
2020 conf
IPSN
Yigong Hu, Jingping Nie, Yuanyuting Wang, Stephen Xia, Xiaofan Jiang
2020 Misc conf
SenSys
Peter Wei, Chenye Yang, Xiaofan Jiang
2020 conf
AIChallengeIoT@SenSys
Stephen Xia, Xiaofan Jiang
2020 conf
IoTDI
Deliang Yang, Guoliang Xing, Jun Huang, Xiangmao Chang, Xiaofan Jiang
2020 conf
IoTDI
Jingping Nie, Yigong Hu, Yuanyuting Wang, Stephen Xia, Xiaofan Jiang
2019 conf
UbiComp/ISWC Adjunct
Peter Wei, Haocong Shi, Jiaying Yang, Jingyi Qian, Yinan Ji, Xiaofan Jiang
2019 conf
BuildSys
Peter Wei, Xiaofan Jiang
2019 B conf
EWSN
Deliang Yang, Jun Huang, Xiangmao Chang, Xiaofan Jiang, Guoliang Xing
2019 B conf
EWSN
Deliang Yang, Jun Huang, Xiangmao Chang, Xiaofan Jiang, Guoliang Xing
2019 J jnl
IEEE Internet Things J.
Stephen Xia, Daniel de Godoy, Bashima Islam, Md Tamzeed Islam, Shahriar Nirjon, Peter R. Kinget, Xiaofan Jiang
2018 conf
CICC
Daniel de Godoy, Xiaofan Jiang, Peter R. Kinget
2018 J jnl
ACM Trans. Sens. Networks
Peter Wei, Xiaoqi Chen, Jordan Vega, Stephen Xia, Rishikanth Chandrasekaran, Xiaofan Jiang
2018 conf
VNC
Stephen Xia, Daniel de Godoy, Bashima Islam, Md Tamzeed Islam, Shahriar Nirjon, Peter R. Kinget, Xiaofan Jiang
2018 conf
BuildSys
Peter Wei, Xiaofan Jiang
2018 J jnl
Sensors
Ji Jia, Chengtian Xu, Shijia Pan, Stephen Xia, Peter Wei, Hae Young Noh, Pei Zhang, Xiaofan Jiang
2018 conf
IoTDI
Daniel de Godoy, Stephen Xia, Wendy P. Fernandez, Xiaofan Jiang, Peter R. Kinget
2018 A conf
UMAP
Peter Wei, Stephen Xia, Xiaofan Jiang
2018 J jnl
ACM Trans. Sens. Networks
Hae Young Noh, Xiaofan Jiang, Pei Zhang
2018 conf
UbiComp/ISWC Adjunct
Ji Jia, Chengtian Xu, Shijia Pan, Stephen Xia, Peter Wei, Hae Young Noh, Pei Zhang, Xiaofan Jiang
2018 conf
IoTDI
Daniel de Godoy, Bashima Islam, Stephen Xia, Md Tamzeed Islam, Rishikanth Chandrasekaran, Yen-Chun Chen, Shahriar Nirjon, Peter R. Kinget, Xiaofan Jiang
2017 conf
IoTDI
Daniel de Godoy, Ji Jia, Xiaofan Jiang
2017 conf
UbiComp/ISWC Adjunct
Stephen Xia, Yan Lu, Peter Wei, Xiaofan Jiang
2017 conf
BuildSys
Peter Wei, Xiaoqi Chen, Jordan Vega, Stephen Xia, Rishikanth Chandrasekaran, Xiaofan Jiang
2016 conf
BuildSys
Peter Wei, Xiaoqi Chen, Rishikanth Chandrasekaran, Fengyi Song, Xiaofan Jiang
2016 conf
SECON Workshops
Maanit Mehra, Aditya Bagri, Xiaofan Jiang, Jorge Ortiz
2016 conf
IPSN
Xiaoqi Chen, Rishikanth Chandrasekaran, Fengyi Song, Xiaofan Jiang
2016 Misc conf
SenSys
Rishikanth Chandrasekaran, Daniel de Godoy, Stephen Xia, Md Tamzeed Islam, Bashima Islam, S. M. Shahriar Nirjon, Peter R. Kinget, Xiaofan Jiang
2014 Misc conf
SenSys
Yun Cheng, Xiucheng Li, Zhijun Li, Shouxu Jiang, Yilong Li, Ji Jia, Xiaofan Jiang
2014 conf
ICONIP (2)
Yun Cheng, Xiucheng Li, Zhijun Li, Shouxu Jiang, Xiaofan Jiang
2014 conf
BuildSys
Yilong Li, Yun Cheng, Xiucheng Li, Yu Wang, Guoliang Xing, Xiaofan Jiang
2013 A conf
MobiSys
S. M. Shahriar Nirjon, Robert F. Dickerson, Philip Asare, Qiang Li, Dezhi Hong, John A. Stankovic, Pan Hu, Guobin Shen, Xiaofan Jiang
2013 A conf
MobiSys
Xiaofan Jiang, Ji Jia, Gansha Wu, Jesse Z. Fang
2013 Misc conf
HotMobile
S. M. Shahriar Nirjon, Robert F. Dickerson, John A. Stankovic, Guobin Shen, Xiaofan Jiang
2012 conf
BuildSys@SenSys
Yun Cheng, Kaifei Chen, Ben Zhang, Chieh-Jan Mike Liang, Xiaofan Jiang, Feng Zhao
2012 conf
IPSN
Xiaofan Jiang, Chieh-Jan Mike Liang, Kaifei Chen, Ben Zhang, Jeff Hsu, Jie Liu, Bin Cao, Feng Zhao
2012 Misc conf
SenSys
Jiao Wang, Fang Cheng, Jiangshan Wang, Guobin Shen, Xiaofan Jiang
2012 Misc conf
SenSys
S. M. Shahriar Nirjon, Robert F. Dickerson, Qiang Li, Philip Asare, John A. Stankovic, Dezhi Hong, Ben Zhang, Xiaofan Jiang, Guobin Shen, Feng Zhao
2012 conf
IPSN
Dezhi Hong, Ben Zhang, Qiang Li, S. M. Shahriar Nirjon, Robert F. Dickerson, Guobin Shen, Xiaofan Jiang, John A. Stankovic
2012 Misc conf
SenSys
Pan Hu, Guobin Shen, Xiaofan Jiang, Shao-Fu Shih, Donghuan Lu, Feng Zhao, Dezhi Hong, Qiang Li, S. M. Shahriar Nirjon, Robert F. Dickerson, John A. Stankovic
2012 Misc conf
SenSys
Xi Chen, Lei Xie, Xiaofan Jiang, Sanglu Lu, Daoxu Chen
2011 J jnl
Sustain. Comput. Informatics Syst.
Randy H. Katz, David E. Culler, Seth Sanders, Sara Alspaugh, Yanpei Chen, Stephen Dawson-Haggerty, Prabal Dutta, Mike He, Xiaofan Jiang, Laura Keys, Andrew Krioukov, Ken Lutz, Jorge Ortiz, Prashanth Mohan, Evan Reutzel, Jay Taneja, Jeff Hsu, Sushant Shankar
2011 Misc conf
SenSys
Xiaofan Jiang, Chieh-Jan Mike Liang, Feng Zhao, Kaifei Chen, Jeff Hsu, Ben Zhang, Jie Liu
2010
Xiaofan Jiang
2010 conf
HotEmNets
Stephen Dawson-Haggerty, Jorge Ortiz, Xiaofan Jiang, Jeff Hsu, Sushant Shankar, David E. Culler
2010 conf
BuildSys@SenSys
Jeff Hsu, Prashanth Mohan, Xiaofan Jiang, Jorge Ortiz, Sushant Shankar, Stephen Dawson-Haggerty, David E. Culler
2010 Misc conf
SenSys
Stephen Dawson-Haggerty, Xiaofan Jiang, Gilman Tolle, Jorge Ortiz, David E. Culler
2010 conf
IPSN
Xiaofan Jiang, Stephen Dawson-Haggerty, David E. Culler
2009 conf
IPSN
Xiaofan Jiang, Stephen Dawson-Haggerty, Prabal Dutta, David E. Culler
2009 Misc conf
SenSys
Xiaofan Jiang, Minh Van Ly, Jay Taneja, Prabal Dutta, David E. Culler
2008 Misc conf
SenSys
Prabal Dutta, Jay Taneja, Jaein Jeong, Xiaofan Jiang, David E. Culler
2008 Misc conf
SenSys
Xiaofan Jiang, Stephen Dawson-Haggerty, Jay Taneja, Prabal Dutta, David E. Culler
2007 J jnl
SIGBED Rev.
Xiaofan Jiang, Jay Taneja, Jorge Ortiz, Arsalan Tavakoli, Prabal Dutta, Jaein Jeong, David E. Culler, Philip Alexander Levis, Scott Shenker
2007 conf
IPSN
Xiaofan Jiang, Prabal Dutta, David E. Culler, Ion Stoica
2005 conf
IPSN
Xiaofan Jiang, Joseph Polastre, David E. Culler
redb/extractors/elf_extractors/elf_symbols.py
← Index redb/extractors/elf_extractors/elf_symbols.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFSymbol


class ELFSymbolExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_symbols = []
        self.elastic_index = self.index_prefix + "-elf_symbols"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _map_symbol_type(self, st_type_str: str) -> int:
        """Map symbol type string to enum value."""
        type_map = {
            'STT_NOTYPE': 0,
            'STT_OBJECT': 1,
            'STT_FUNC': 2,
            'STT_SECTION': 3,
            'STT_FILE': 4,
            'STT_COMMON': 5,
            'STT_TLS': 6
        }
        return type_map.get(st_type_str, 0)

    def _map_symbol_bind(self, st_bind_str: str) -> int:
        """Map symbol binding string to enum value."""
        bind_map = {
            'STB_LOCAL': 0,
            'STB_GLOBAL': 1,
            'STB_WEAK': 2
        }
        return bind_map.get(st_bind_str, 0)

    def _map_symbol_visibility(self, st_vis_str: str) -> int:
        """Map symbol visibility string to enum value."""
        vis_map = {
            'STV_DEFAULT': 0,
            'STV_INTERNAL': 1,
            'STV_HIDDEN': 2,
            'STV_PROTECTED': 3
        }
        return vis_map.get(st_vis_str, 0)

    def _extract_symbol_data(self, symbol, is_dynamic: bool = False) -> Dict:
        """Extract data from a single symbol."""
        try:
            # Get symbol name (handle empty names)
            symbol_name = symbol.name if symbol.name else f"<unnamed_{symbol.entry.get('st_name', 0)}>"

            # Get symbol properties
            symbol_value = symbol.entry.get('st_value', 0)
            symbol_size = symbol.entry.get('st_size', 0)

            # Handle section index - can be integer or special string like 'SHN_UNDEF'
            st_shndx_raw = symbol.entry.get('st_shndx', 0)
            if isinstance(st_shndx_raw, str):
                # Map special section index strings to integers
                shndx_map = {
                    'SHN_UNDEF': 0,
                    'SHN_ABS': 65521,  # 0xFFF1
                    'SHN_COMMON': 65522,  # 0xFFF2
                    'SHN_XINDEX': 65535,  # 0xFFFF
                }
                symbol_section_index = shndx_map.get(st_shndx_raw, 0)
                symbol_section_index_str = st_shndx_raw.replace('SHN_', '') if st_shndx_raw.startswith('SHN_') else st_shndx_raw
            else:
                symbol_section_index = st_shndx_raw
                symbol_section_index_str = str(st_shndx_raw)

            # Get symbol type and map to enum
            st_type_str = symbol.entry.get('st_info', {}).get('type', 'STT_NOTYPE')
            symbol_type_enum = self._map_symbol_type(st_type_str)
            symbol_type_str = st_type_str.replace('STT_', '') if st_type_str.startswith('STT_') else st_type_str

            # Get symbol binding and map to enum
            st_bind_str = symbol.entry.get('st_info', {}).get('bind', 'STB_LOCAL')
            symbol_bind_enum = self._map_symbol_bind(st_bind_str)
            symbol_bind_str = st_bind_str.replace('STB_', '') if st_bind_str.startswith('STB_') else st_bind_str

            # Get symbol visibility and map to enum
            st_vis_str = symbol.entry.get('st_other', {}).get('visibility', 'STV_DEFAULT')
            symbol_visibility_enum = self._map_symbol_visibility(st_vis_str)
            symbol_visibility_str = st_vis_str.replace('STV_', '') if st_vis_str.startswith('STV_') else st_vis_str

            return ELFSymbol(
                symbol_name=symbol_name,
                symbol_value=symbol_value,
                symbol_size=symbol_size,
                symbol_type=symbol_type_enum,
                symbol_type_str=symbol_type_str,
                symbol_bind=symbol_bind_enum,
                symbol_bind_str=symbol_bind_str,
                symbol_visibility=symbol_visibility_enum,
                symbol_visibility_str=symbol_visibility_str,
                symbol_section_index=symbol_section_index,
                symbol_section_index_str=symbol_section_index_str,
                is_dynamic=1 if is_dynamic else 0
            )

        except Exception as e:
            self.log.error(f"Error extracting symbol data: {e}")
            return None

    def _extract_symbols_from_section(self, elf, section_name: str, is_dynamic: bool = False) -> List[Dict]:
        """Extract symbols from a specific symbol table section."""
        symbols = []

        try:
            section = elf.get_section_by_name(section_name)
            if not section:
                self.log.debug(f"No {section_name} section found")
                return symbols

            if not hasattr(section, 'iter_symbols'):
                self.log.debug(f"Section {section_name} is not a symbol table")
                return symbols

            # Iterate through symbols in the section with per-symbol error handling
            for symbol_index, symbol in enumerate(section.iter_symbols()):
                try:
                    symbol_data = self._extract_symbol_data(symbol, is_dynamic)
                    if symbol_data:
                        symbols.append(symbol_data)
                except Exception as e:
                    self.log.warning(f"Error processing symbol {symbol_index} in {section_name}: {e}")
                    # Continue with other symbols

        except Exception as e:
            self.log.error(f"Error extracting symbols from {section_name}: {e}")

        return symbols

    def tag(self):
        return Tag.ELF_SYMBOLS.value if hasattr(Tag, 'ELF_SYMBOLS') else "elf_symbols"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                all_symbols = []

                # Extract static symbols from .symtab with individual error handling
                try:
                    static_symbols = self._extract_symbols_from_section(elf, '.symtab', is_dynamic=False)
                    all_symbols.extend(static_symbols)
                    self.log.debug(f"Extracted {len(static_symbols)} static symbols from .symtab")
                except Exception as e:
                    self.log.warning(f"Error extracting static symbols from .symtab: {e}")

                # Extract dynamic symbols from .dynsym with individual error handling
                try:
                    dynamic_symbols = self._extract_symbols_from_section(elf, '.dynsym', is_dynamic=True)
                    all_symbols.extend(dynamic_symbols)
                    self.log.debug(f"Extracted {len(dynamic_symbols)} dynamic symbols from .dynsym")
                except Exception as e:
                    self.log.warning(f"Error extracting dynamic symbols from .dynsym: {e}")

                return all_symbols

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_symbols = result
            return self.elf_symbols

        except Exception as e:
            self.log.error(f"Error extracting ELF symbols {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_symbols
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no symbols (e.g., stripped binary)
                # None is reserved for actual errors

                # Prepare data arrays for all symbols
                data = []
                current_time = datetime.now(timezone.utc)
                for symbol in self.elf_symbols:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        symbol.symbol_name,
                        symbol.symbol_value,
                        symbol.symbol_size,
                        symbol.symbol_type,
                        symbol.symbol_type_str,
                        symbol.symbol_bind,
                        symbol.symbol_bind_str,
                        symbol.symbol_visibility,
                        symbol.symbol_visibility_str,
                        symbol.symbol_section_index,
                        symbol.symbol_section_index_str,
                        symbol.is_dynamic,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'symbol_name', 'symbol_value', 'symbol_size',
                    'symbol_type', 'symbol_type_str',
                    'symbol_bind', 'symbol_bind_str',
                    'symbol_visibility', 'symbol_visibility_str',
                    'symbol_section_index', 'symbol_section_index_str', 'is_dynamic',
                    'analysis_date'
                ]

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'LowCardinality(String)', 'UInt64', 'UInt64',
                    "Enum8('NOTYPE'=0, 'OBJECT'=1, 'FUNC'=2, 'SECTION'=3, 'FILE'=4, 'COMMON'=5, 'TLS'=6)",
                    'LowCardinality(String)',
                    "Enum8('LOCAL'=0, 'GLOBAL'=1, 'WEAK'=2)",
                    'LowCardinality(String)',
                    "Enum8('DEFAULT'=0, 'INTERNAL'=1, 'HIDDEN'=2, 'PROTECTED'=3)",
                    'LowCardinality(String)',
                    'UInt16', 'LowCardinality(String)', 'UInt8',
                    'DateTime64(3, \'UTC\')'
                ]

                if not data:
                    return None

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

    def get_clickhouse_table(self) -> str:
        return "redb_elf_symbols"