Skip to content

fix(filter): run PLTFilter last to evict PLT stubs re-added by EhFrameFilter#42

Draft
maxgio92 wants to merge 1 commit intomainfrom
fix/plt-filter-ordering
Draft

fix(filter): run PLTFilter last to evict PLT stubs re-added by EhFrameFilter#42
maxgio92 wants to merge 1 commit intomainfrom
fix/plt-filter-ordering

Conversation

@maxgio92
Copy link
Owner

EhFrameFilter adds any FDE-confirmed address, including PLT stubs that have compiler-generated FDE records. Running PLTFilter before EhFrameFilter allowed those stubs to sneak back in.

Fix: move PLTFilter to run last in the default pipeline so PLT-section addresses are always evicted regardless of how they were detected.

…eFilter

EhFrameFilter adds any FDE-confirmed address, including PLT stubs that
have compiler-generated FDE records. PLTFilter must run after it so that
PLT-section addresses are always evicted regardless of detection method.

Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
maxgio92 pushed a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DisasmDetector wraps the existing disassembly pipeline (prologue,
callsite, boundary) as a CandidateDetector operating on *elf.File.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

DetectFunctionsFromELF default pipeline:
  detectors: [DisasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

This fixes the structural issue where a filter was emitting new
candidates, creating implicit ordering dependencies. PLT stubs
introduced by EhFrameDetector are now correctly evicted by
PLTFilter regardless of pipeline order. Closes #42. Refs #43.

Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DisasmDetector wraps the existing disassembly pipeline (prologue,
callsite, boundary) as a CandidateDetector operating on *elf.File.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

DetectFunctionsFromELF default pipeline:
  detectors: [DisasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

This fixes the structural issue where a filter was emitting new
candidates, creating implicit ordering dependencies. PLT stubs
introduced by EhFrameDetector are now correctly evicted by
PLTFilter regardless of pipeline order. Closes #42. Refs #43.

Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DisasmDetector wraps the existing disassembly pipeline (prologue,
callsite, boundary) as a CandidateDetector operating on *elf.File.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

DetectFunctionsFromELF default pipeline:
  detectors: [DisasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

This fixes the structural issue where a filter was emitting new
candidates, creating implicit ordering dependencies. PLT stubs
introduced by EhFrameDetector are now correctly evicted by
PLTFilter regardless of pipeline order. Closes #42. Refs #43.

Signed-off-by: Massimiliano Giovagnoli <me@maxgio.it>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
maxgio92 added a commit that referenced this pull request Mar 15, 2026
Add CandidateDetector type symmetric with CandidateFilter, and
WithDetectors option symmetric with WithFilters.

DetectFunctions and DetectFunctionsFromELF are both public user-facing
APIs at the same level. disasmDetector (unexported) bridges between
them inside the pipeline.

EhFrameDetector emits CFI candidates from .eh_frame FDE records.
EhFrameFilter is now a pure filter: retains only FDE-confirmed
candidates and upgrades their confidence. It never appends.

Default pipeline in DetectFunctionsFromELF:
  detectors: [disasmDetector, EhFrameDetector]
  filters:   [CETFilter, EhFrameFilter, PLTFilter]

PLT stubs introduced by EhFrameDetector are now correctly evicted by
PLTFilter. Supersedes #42. Refs #43.

Signed-off-by: maxgio92 <maxgio92@pm.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant