Skip to content
  • nagachika's avatar
    19823032
    merge revision(s) 954b7ac8: [Backport #19789] · 19823032
    nagachika authored
    	addr2line.c: fix `DW_FORM_ref_addr` parsing for DWARF 2 (#8146)
    
    	addr2line.c: fix DW_FORM_ref_addr parsing for DWARF 2
    
    	This fixes a crash when retrieving backtrace info with YJIT enabled on
    	macOS with Rust 1.71.0. Since Rust 1.71.0, the DWARF info generated by
    	the Rust compiler uses DW_FORM_ref_addr instead of DW_FORM_ref4 for
    	pointers to other DIEs.
    	DW_FORM_ref_addr representation in DWARF 2 is different from DWARF 3+,
    	so we need to handle it separately.
    	This patch fixes the parsing of DW_FORM_ref_addr for DWARF 2, which is
    	the default DWARF version Rustc uses on macOS.
    
    	See the DWARF 2.0.0 spec, section 7.5.4 Attribute Encodings
    	https://dwarfstd.org/doc/dwarf-2.0.0.pdf
    
    	https://bugs.ruby-lang.org/issues/19789
    	---
    	 addr2line.c | 40 ++++++++++++++++++++++++++--------------
    	 1 file changed, 26 insertions(+), 14 deletions(-)
    19823032
    merge revision(s) 954b7ac8: [Backport #19789]
    nagachika authored
    	addr2line.c: fix `DW_FORM_ref_addr` parsing for DWARF 2 (#8146)
    
    	addr2line.c: fix DW_FORM_ref_addr parsing for DWARF 2
    
    	This fixes a crash when retrieving backtrace info with YJIT enabled on
    	macOS with Rust 1.71.0. Since Rust 1.71.0, the DWARF info generated by
    	the Rust compiler uses DW_FORM_ref_addr instead of DW_FORM_ref4 for
    	pointers to other DIEs.
    	DW_FORM_ref_addr representation in DWARF 2 is different from DWARF 3+,
    	so we need to handle it separately.
    	This patch fixes the parsing of DW_FORM_ref_addr for DWARF 2, which is
    	the default DWARF version Rustc uses on macOS.
    
    	See the DWARF 2.0.0 spec, section 7.5.4 Attribute Encodings
    	https://dwarfstd.org/doc/dwarf-2.0.0.pdf
    
    	https://bugs.ruby-lang.org/issues/19789
    	---
    	 addr2line.c | 40 ++++++++++++++++++++++++++--------------
    	 1 file changed, 26 insertions(+), 14 deletions(-)
Loading