The ELF File Explorer is a custom editor built into CodeFusion Studio that lets you quickly parse and analyze compiled firmware binaries. Rather than reaching for separate tooling, you can open any ELF-format file directly in VS Code and immediately inspect its memory layout, symbol table, metadata, and statistics — all in a single interactive view. This dramatically reduces time spent debugging and profiling while giving you deeper insight into your application’s structure.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/analogdevicesinc/codefusion-studio/llms.txt
Use this file to discover all available pages before exploring further.
Supported file formats
The ELF File Explorer can open any file that contains a valid ELF header. The following file extensions are recognized automatically:AXF DOJ DXE ELF EXE KO MOD O OUT PRX PUFF SO
Opening an ELF file
- From the Activity Bar
- From the Explorer
Open the CFS panel
Click the CodeFusion Studio icon in the VS Code Activity Bar to open the CFS side panel.
Navigation
Once a file is open, navigation icons on the left side of the editor let you switch between four main views: Statistics, Metadata, Symbols, and Memory Layout. A help icon in the top-right corner provides context-sensitive guidance for the currently active view.Statistics
The Statistics page gives a high-level overview of the ELF file across five sections.File Overview
File Overview
Summarizes key metadata for the binary:
| Field | Description |
|---|---|
| Format | ELF 32-bit or 64-bit |
| Data Encoding | Endianness — little or big endian |
| File Type | Executable, relocatable, shared object, or core file |
| Architecture | Target architecture (for example, Arm or x86) |
| ABI Version | Application Binary Interface version |
| Debug Info | Indicates whether the file contains debugging information |
| Stripping | Indicates whether symbol information has been stripped |
Main Section Sizes
Main Section Sizes
Shows total memory consumed, broken down by data type:
- Text — Executable code
- Data — Initialized global and static variables
- Bss — Zero-initialized and uninitialized data
Symbol Types
Symbol Types
Displays the count of functions and variables grouped by binding type: global, local, and weak. Filters above the table let you narrow the view to all, text, data, or bss symbols.
Sections
Sections
A table showing details for every section contained within the ELF file.
Largest Symbols
Largest Symbols
Lists the ten largest symbols in the binary. Filters above the table let you narrow by all, text, data, or bss symbols.
Metadata
The Metadata page displays a breakdown of text, data, and bss sizes alongside the full ELF header contents, including architecture, data layout, ELF version, and flags.Header Info
Contains the ELF file type, target architecture, entry point address, and program/section header details — required for the OS to correctly load and execute the binary.
AEABI Attributes
ARM Embedded ABI attributes that convey the target architecture, floating-point configuration, and optimization level. These ensure toolchain and runtime compatibility.
Heuristic Information
Indicates detected metadata for Zephyr and MSDK firmware platforms, which may include Flash and RAM sizes and other platform-specific data.
Symbols Explorer
The Symbol Explorer presents a sortable, filterable table of every symbol in the ELF file. Click any column header to sort; use the SQL query interface for precise filtering.The Symbol Explorer query engine is powered by AlaSQL. Supported syntax and functions are limited to what AlaSQL provides — refer to the AlaSQL documentation for the full feature set.
Available columns
The default query (SELECT *) returns these fields:
| Column | Type | Description |
|---|---|---|
id | integer | Unique identifier for the symbol |
name | string | Symbol name |
type | string | Kind of entity the symbol represents |
address | integer | Memory address where the symbol is located |
section | string | Section in which the symbol is defined |
size | integer | Size of the symbol in bytes |
localstack | integer | Worst-case local stack usage for a function (excluding callees) |
stack | integer | Worst-case total stack usage for a function (including callees) |
bind | string | Linkage type — for example, local or global |
visibility | string | Accessibility from other modules — for example, default or hidden |
path | string | Source file where the symbol is defined |
The These flags are enabled by default in CodeFusion Studio projects.
localstack, stack, and path columns are only populated when the relevant data is present in the ELF. Stack data requires the following GCC flags at build time:Generating compiler data for stack analysis
To produce stack usage (SU) and call graph (CGRAPH) data with GCC, compile your firmware with:- Zephyr
- MSDK
Add the following lines to your
CMakeLists.txt:SQL query examples
Any valid SQL construct is supported, includingWHERE, ORDER, LIMIT, LIKE, and REGEXP:
| Goal | Query |
|---|---|
| Show specific columns | SELECT name, address FROM symbols |
| Symbols larger than 100 bytes | SELECT * FROM symbols WHERE size > 100 |
| Ten largest symbols | SELECT * FROM symbols ORDER BY size DESC LIMIT 10 |
| Symbols in an address range | SELECT * FROM symbols WHERE address BETWEEN 0x10000000 AND 0x20000000 |
| Symbols from a specific source file | SELECT * FROM symbols WHERE path LIKE '%main.c%' |
| Symbols whose name starts with a prefix | SELECT * FROM symbols WHERE name REGEXP '^init.*' |
Memory Layout
The Memory Layout page pairs an interactive visual memory map on the left with a segment table on the right. The map uses the following visual conventions:| Display | Meaning |
|---|---|
| Stripes | Unused memory |
| Blank | Read/write memory |
| Filled | Read-only memory |
Overlapping segments are rendered as smaller rectangles to the right of the main segment. Small segments may appear larger than their actual size for readability — always refer to the reported size values for accuracy.
Segments
Clicking a segment in the table drills down to the sections it contains.| Field | Description |
|---|---|
| Id | Unique identifier for the segment |
| Type | Purpose of the segment — for example, loadable or dynamic |
| Address | Start address of the segment |
| Size | Size in bytes |
| Flags | Permissions: R (read), W (write), X (executable) |
| Align | Memory alignment requirement in bytes |
Sections in a segment
Clicking a segment reveals the sections it contains:| Field | Description |
|---|---|
| Id | Unique identifier for the section |
| Name | Section name |
| Address | Start address |
| Size | Size in bytes |
| Flags | Section attributes (see table below) |
| Type | Contents and purpose of the section |
Section flag reference
Section flag reference
| Flag | Meaning |
|---|---|
| W | Write |
| A | Alloc |
| X | Execute |
| M | Merge |
| S | Strings |
| I | Info |
| L | Link order |
| O | Extra OS processing required |
| G | Group |
| T | TLS |
| C | Compressed |
| x | Unknown |
| o | OS specific |
| E | Exclude |
| D | Mbind |
| y | Purecode |
| p | Processor specific |
Symbols in a section
| Field | Description |
|---|---|
| Id | Unique identifier for the symbol |
| Name | Symbol name |
| Address | Memory address |
| Size | Size in bytes |
| Bind | Linkage type — for example, local or global |
| Visibility | Accessibility — for example, default or hidden |
CLI reference: cfsutil elf
All ELF analysis capabilities are also available from the terminal via the cfsutil command-line utility.
cfsutil elf analyze
Provides a high-level summary of the ELF file, including platform detection, stack/heap sizes, and Flash/SRAM sizes.
--format json to emit machine-readable output suitable for CI pipelines or scripting.
cfsutil elf info
Provides in-depth information about the ELF file. At least one switch is required:
| Switch | Information |
|---|---|
-a | Attributes |
-c | Core ELF information |
-h | ELF header |
-s | Size |
--format | Output format: text (default) or json |
-v | Verbose output |
cfsutil elf memory
Provides information on segments, sections, and symbols within the binary.
| Switch | Effect |
|---|---|
-s | List segments |
-t | List sections within each segment |
-y | List symbols within each section |
-d | Print detailed information (requires -s, -t, or -y) |
-i <value> | Filter to segment or section with the given ID |
-n <value> | Filter to segment or section with the given name |
--format | Output format: text (default) or json |
For
-t and -y, sections and symbols can be restricted to a specific segment or section using -i or -n. This command can produce a large amount of output — consider redirecting it to a file.cfsutil elf symbols
Runs a SQL query against the symbol table and outputs the matching rows.
| Switch | Effect |
|---|---|
-f | Print the full source file path (when debug info is available) |
--format | Output format: text (default) or json |