Skip to content
SymbolResolverFindFde

SymbolResolverFindFde

Description

Look up the .eh_frame FDE that describes how to unwind through the function at runtime_addr. Populates *out_cfi, *out_fde, and the module’s runtime load base so the caller can run the CFI VM (via DwarfCfiBuildRow) and compute a CFA in the runtime address space.

Success

Returns true; all three output parameters set.

Failure

Returns false when runtime_addr falls outside any loaded module, the module has no .eh_frame, or no FDE covers the address.

Usage example (Cross-references)

Usage examples (Cross-references)
    
    #if FEATURE_PARSER_DWARF
    bool SymbolResolverFindFde(
        SymbolResolver  *self,
        void            *runtime_addr,
            const DwarfFde *fde         = NULL;
            u64             module_base = 0;
            if (!SymbolResolverFindFde(resolver, (void *)(u64)rip, &cfi, &fde, &module_base))
                break;
            u64 file_relative = rip - module_base;
        const DwarfFde *fde  = NULL;
        u64             base = 0;
        ok                   = ok && SymbolResolverFindFde(&res, (void *)&sr1_marker_a, &cfi, &fde, &base);
        ok                   = ok && cfi != NULL && fde != NULL;
        // Same module => the FDE-side base equals the Resolve-side base.
        const DwarfFde *fde  = NULL;
        u64             base = 0;
        bool            ok   = SymbolResolverFindFde(&res, (void *)&sr1_marker_a, &cfi, &fde, &base);
        ok                   = ok && DebugAllocatorLiveCount(&alloc) > baseline; // CFI was built
Last updated on