From f381978daf5fabfffba067db089991970c7656c1 Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Tue, 3 Jan 2023 16:33:01 +0100 Subject: [PATCH] Detect more ELF symbol kinds This makes 2 changes to `SymbolKind` detection: - `STT_NOTYPE` is detected as a label, since that's the default type given to a label in assembly code. This is also used for mapping symbols that are inserted by the assembler to indicate which addresses contain code or data. - `STT_GNU_IFUNC` is detected as a function symbol. --- src/read/elf/symbol.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/read/elf/symbol.rs b/src/read/elf/symbol.rs index 390aa466..5d8d29f2 100644 --- a/src/read/elf/symbol.rs +++ b/src/read/elf/symbol.rs @@ -349,8 +349,9 @@ impl<'data, 'file, Elf: FileHeader, R: ReadRef<'data>> ObjectSymbol<'data> fn kind(&self) -> SymbolKind { match self.symbol.st_type() { elf::STT_NOTYPE if self.index.0 == 0 => SymbolKind::Null, + elf::STT_NOTYPE => SymbolKind::Label, elf::STT_OBJECT | elf::STT_COMMON => SymbolKind::Data, - elf::STT_FUNC => SymbolKind::Text, + elf::STT_FUNC | elf::STT_GNU_IFUNC => SymbolKind::Text, elf::STT_SECTION => SymbolKind::Section, elf::STT_FILE => SymbolKind::File, elf::STT_TLS => SymbolKind::Tls,