DWARF in Rizin

DWARF in Rizin librz/bin/dwarf.c librz/analysis/dwarf_process.c librz/include/rz_bin_dwarf.h RzBinDwarfDebugAbbrev –> RzBinDwarfDebugInfo : rz_bin_dwarf_parse_info() RzBinDwarfDebugInfo –> SDB [*] –> HtUP_offset_RzBinDwarfLocList : rz_bin_dwarf_parse_loc() HtUP_offset_RzBinDwarfLocList –> SDB : void rz_analysis_dwarf_process_info(const RzAnalysis analysis, RzAnalysisDwarfContext ctx) || [] –> RzBinDwarfLineInfo : rz_bin_dwarf_parse_line() } [] –> apply_dwarf : bool rz_core_bin_apply_dwarf(RzCore *core, RzBinFile binfile) applydwarf –> Function_Analysis : void rz_analysis_dwarf_integrate_functions(RzAnalysis *analysis, RzFlag flags, Sdb _dwarf_sdb) Function_Analysis –> [] @enduml

DWARF Summary

DWARF Summary DWARF5.pdf 太长了懒得看,咱觉得看这个就够了。 实际上咱感兴趣的部分应该是 ch5: Type Entries Just my note about DWARF5 Debugging Format Standard. Maybe focus on ch5: Type Entries What is DWARF? DWARF is the debuginfo standard used on the majority of operating systems today. 2.1 The Debugging Information Entry (DIE) DWARF uses a series of debugging information entries (DIEs) to define a low-level representation of a source program. Each debugging information entry consists of an identifying and a series of attributes.

Highlight

use ferris_says::say; // from the previous step use std::io::{stdout, BufWriter}; fn main() { let stdout = stdout(); let message = String::from("Hello fellow Rustaceans!"); let width = message.chars().count(); let mut writer = BufWriter::new(stdout.lock()); say(message.as_bytes(), width, &mut writer).unwrap(); } use std::collections::VecDeque; fn to_postfix(infix: &str) -> String { let preced = |op: char| match op { '(' | ')' => 1, '^' => 2, '*' | '/' => 3, '+' | '-' => 4, _ => unreachable!

Lorem

Vidit nubila gradus qui vana Aquas et vestes crudelis successus Lorem markdownum: dei ignes cernis iniustaque nepotis? In avidus temptatum fuerunt genitor, erat Gryneus? De quodque, sed neu, nam num, virorum. Nec tu primaque essent violata faciet nec Et scopulum, edere sacrificos, quam opus nomina morari, recessit, parva, erat iam sic et. Et Nisi: velocibus adest. Iterum canum colonos, ora Liriope carmine imago, vertice dexterior lumina vomit austroque frustraque tremulaeque prohibent nobilitate.

青石板小道上

青石板小道上,芳草郁郁,花香四溢。一只蜜蜂轻轻落在红玫瑰上, ag枝叶之间。玲珑的泉水从石头缝中流下,朦朦胧胧地注入小池塘。池边芙蓉正好, 三叶一片叶,青莲亭亭。 此去经年,此来覆辙,山川依旧人事几番新。等闲变迁,无情物外,悠悠活水东流去。白云一道三叠翠,青枫桥畔人来人往。 生当作人杰,死亦为鬼雄。至今思项羽,不肯过江东。江流宛转绕芳甸,月照花林皎如昼。劳疾程中缠,君不见,离愁何由生。 朝来佛前烧香礼,夕向红颜弃功名。若与相思两相违,此中愁豫更何妙。莫道不销魂,帘卷西风,人比黄花瘦。 酒入愁肠,化作相思液。悠悠生死别绪,轻风熏染泪痕。江枫渐老,迢迢暮雪,梅花醉三杯。我言秋日胜春朝,谁解 lie鬓意。 蛾儿飞火而不返,鸟儿情深不寐,人生长为乡愁客,明年今日知交少。繁华事事休,闲愁只这般,青春一去不复返。