Skip to content
  • Hui Zhu's avatar
    markup_oops.pl: fix $func_offset error with x86_64 · ef2b9b05
    Hui Zhu authored
    
    
    When I use markup_oops.pl parse a x8664 oops, I got:
    
    objdump: --start-address: bad number: NaN
    No matching code found
    This is because:
    main::(./m.pl:228):	open(FILE, "objdump -dS --adjust-vma=$vmaoffset --start-address=$decodestart --stop-address=$decodestop $filename |") || die "Cannot start objdump";
      DB<3> p $decodestart
    NaN
    
    This NaN is from:
    main::(./m.pl:176):	my $decodestart = Math::BigInt->from_hex("0x$target") - Math::BigInt->from_hex("0x$func_offset");
      DB<2> p $func_offset
    0x175
    
    There is already a "0x" in $func_offset, another 0x makes it a NaN.
    
    The $func_offset is from line:
    
    	if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\]  \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) {
    		$function = $1;
    		$func_offset = $2;
    	}
    
    I make a patch to change "(0x[0-9a-f]+)\/0x[a-f0-9]/)" to "0x([0-9a-f]+)\/0x[a-f0-9]/)".
    
    Signed-off-by: default avatarHui Zhu <teawater@gmail.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Michal Marek <mmarek@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ef2b9b05