/
Deconstruction of  Dyninst Deconstruction of  Dyninst

Deconstruction of Dyninst - PowerPoint Presentation

calandra-battersby
calandra-battersby . @calandra-battersby
Follow
375 views
Uploaded On 2018-02-02

Deconstruction of Dyninst - PPT Presentation

Best Practices and Lessons Learned Bill Williams What is Componentization Software Project Public Interface Neat Idea Deconstruction of Dyninst 2 Software Project Neat Idea What is Componentization ID: 627360

deconstruction dyninst component api dyninst deconstruction api component interface requirements features parseapi flow build public code componentization binary model external stackwalker cfg

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Deconstruction of Dyninst" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Deconstruction of Dyninst:Best Practices and Lessons Learned

Bill WilliamsSlide2

What is Componentization?

Software Project

Public Interface

Neat Idea

Deconstruction of Dyninst

2Slide3

Software Project

Neat Idea

What is Componentization?

Public Interface

Component

Public Interface

Component

Deconstruction of Dyninst

3Slide4

Why Components?Expose existing functionality

Build new tools easily

Orthogonality

Testability

Improved code qualityDeconstruction of Dyninst

4Slide5

Dyninst and the Components

AST

Binary

Process

Stackwalker

API

Patch

API

Symtab

API

DataFlow

API

Instruction

API

Parse

API

Code

Gen

ProcControl

API

Binary

= Existing Component

= New Component

= Proposed

DyninstAPISlide6

ParseAPI: Defining the component

Block

Edge

Function

Cached

register

liveness

info

Instrumentability

InstPoints

Dyninst

CFG model

Deconstruction of Dyninst

6Slide7

ParseAPI: Defining the component

Block

Edge

Function

Cached

register

liveness

info

Instrumentability

InstPoints

Dyninst

extensions

ParseAPI

CFG model

Deconstruction of Dyninst

7Slide8

PatchAPI: Refine your assumptions

Deconstruction of Dyninst

8Slide9

SymtabAPI: Creating good abstractions

…hiding messy internals

Great interface…

Deconstruction of Dyninst

9

ELF

PE

XCOFFSlide10

InstructionAPI: Adding missing features

Old: Control flow and not much else

Deconstruction of Dyninst

10Slide11

InstructionAPI: Adding missing features

New: control

flow and

data flow

Deconstruction of Dyninst

11Slide12

ProcControlAPI: Build one to throw away

Too many features,

and I don’t need all of them!

Deconstruction of Dyninst

12Slide13

ProcControlAPI: Build one to throw away

Ah, something

that just does

what I need!

Deconstruction of Dyninst

13Slide14

Stackwalker: When customers attack

Dyninst

requirements

STAT requirements

Deconstruction of Dyninst

14Slide15

DataflowAPI: Cool isn’t enough

Customers: the difference between a module

and a component

Deconstruction of Dyninst

15Slide16

What we’ve learnedInternal and external users driving interface

design

Test

new interfaces

Change code incrementallyKeep your project’s details where they belong

Deconstruction of Dyninst16Slide17

Componentization TradeoffsStability vs. improvementInternal requirements vs. external requirements

Development time

vs. scope

Structured vs. organicEarly feedback vs. interface stability

Deconstruction of Dyninst

17