@@ -446,23 +446,58 @@ impl<'a> Dump<'a> {
446446 self . color_print ( c. range ( ) . start ) ?;
447447 write ! ( self . state, "name: {:?}" , c. name( ) ) ?;
448448 self . print ( c. data_offset ( ) ) ?;
449- if c. name ( ) == "name" {
450- let iter = NameSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ;
451- self . print_custom_name_section ( iter, |me, item, pos| {
452- me. print_core_name ( item, pos)
453- } ) ?;
454- } else if c. name ( ) == "component-name" {
455- let iter = ComponentNameSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ;
456- self . print_custom_name_section ( iter, |me, item, pos| {
457- me. print_component_name ( item, pos)
458- } ) ?;
459- } else {
460- self . print_byte_header ( ) ?;
461- for _ in 0 ..NBYTES {
462- write ! ( self . dst, "---" ) ?;
449+ match c. name ( ) {
450+ "name" => {
451+ let iter = NameSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ;
452+ self . print_subsections ( iter, |me, item, pos| {
453+ me. print_core_name ( item, pos)
454+ } ) ?;
455+ }
456+ "component-name" => {
457+ let iter = ComponentNameSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ;
458+ self . print_subsections ( iter, |me, item, pos| {
459+ me. print_component_name ( item, pos)
460+ } ) ?;
461+ }
462+ "producers" => {
463+ let iter = ProducersSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ?;
464+ self . print_iter ( iter, |me, _pos, item| {
465+ write ! ( me. state, "field: {}" , item. name) ?;
466+ me. print ( item. values . range ( ) . start ) ?;
467+
468+ me. print_iter ( item. values , |me, pos, item| {
469+ write ! ( me. state, "{item:?}" ) ?;
470+ me. print ( pos)
471+ } )
472+ } ) ?;
473+ }
474+ "dylink.0" => {
475+ let iter = Dylink0SectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ;
476+ self . print_subsections ( iter, |me, item, pos| {
477+ write ! ( me. state, "{item:?}" ) ?;
478+ me. print ( pos)
479+ } ) ?;
480+ }
481+ "metadata.code.branch_hint" => {
482+ let iter = BranchHintSectionReader :: new ( c. data ( ) , c. data_offset ( ) ) ?;
483+ self . print_iter ( iter, |me, _pos, item| {
484+ write ! ( me. state, "func: {}" , item. func) ?;
485+ me. print ( item. hints . range ( ) . start ) ?;
486+
487+ me. print_iter ( item. hints , |me, pos, item| {
488+ write ! ( me. state, "{item:?}" ) ?;
489+ me. print ( pos)
490+ } )
491+ } ) ?;
492+ }
493+ _ => {
494+ self . print_byte_header ( ) ?;
495+ for _ in 0 ..NBYTES {
496+ write ! ( self . dst, "---" ) ?;
497+ }
498+ writeln ! ( self . dst, "-| ... {} bytes of data" , c. data( ) . len( ) ) ?;
499+ self . cur += c. data ( ) . len ( ) ;
463500 }
464- writeln ! ( self . dst, "-| ... {} bytes of data" , c. data( ) . len( ) ) ?;
465- self . cur += c. data ( ) . len ( ) ;
466501 }
467502 }
468503 Payload :: UnknownSection {
@@ -510,7 +545,7 @@ impl<'a> Dump<'a> {
510545 } )
511546 }
512547
513- fn print_custom_name_section < ' b , T > (
548+ fn print_subsections < ' b , T > (
514549 & mut self ,
515550 mut section : Subsections < ' b , T > ,
516551 print_item : impl Fn ( & mut Self , T , usize ) -> Result < ( ) > ,
0 commit comments