PATH:
usr
/
src
/
linux-headers-5.4.0-216-generic
/
scripts
#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # Disassemble the Code: line in Linux oopses # usage: decodecode < oops.file # # options: set env. variable AFLAGS=options to pass options to "as"; # e.g., to decode an i386 oops on an x86_64 system, use: # AFLAGS=--32 decodecode < 386.oops cleanup() { rm -f $T $T.s $T.o $T.oo $T.aa $T.dis exit 1 } die() { echo "$@" exit 1 } trap cleanup EXIT T=`mktemp` || die "cannot create temp file" code= cont= while read i ; do case "$i" in *Code:*) code=$i cont=yes ;; *) [ -n "$cont" ] && { xdump="$(echo $i | grep '^[[:xdigit:]<>[:space:]]\+$')" if [ -n "$xdump" ]; then code="$code $xdump" else cont= fi } ;; esac done if [ -z "$code" ]; then rm $T exit fi echo $code code=`echo $code | sed -e 's/.*Code: //'` width=`expr index "$code" ' '` width=$((($width-1)/2)) case $width in 1) type=byte ;; 2) type=2byte ;; 4) type=4byte ;; esac if [ -z "$ARCH" ]; then case `uname -m` in aarch64*) ARCH=arm64 ;; arm*) ARCH=arm ;; esac fi disas() { ${CROSS_COMPILE}as $AFLAGS -o $1.o $1.s > /dev/null 2>&1 if [ "$ARCH" = "arm" ]; then if [ $width -eq 2 ]; then OBJDUMPFLAGS="-M force-thumb" fi ${CROSS_COMPILE}strip $1.o fi if [ "$ARCH" = "arm64" ]; then if [ $width -eq 4 ]; then type=inst fi ${CROSS_COMPILE}strip $1.o fi ${CROSS_COMPILE}objdump $OBJDUMPFLAGS -S $1.o | \ grep -v "/tmp\|Disassembly\|\.text\|^$" > $1.dis 2>&1 } marker=`expr index "$code" "\<"` if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("` fi touch $T.oo if [ $marker -ne 0 ]; then echo All code >> $T.oo echo ======== >> $T.oo beforemark=`echo "$code"` echo -n " .$type 0x" > $T.s echo $beforemark | sed -e 's/ /,0x/g; s/[<>()]//g' >> $T.s disas $T cat $T.dis >> $T.oo rm -f $T.o $T.s $T.dis # and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fi echo Code starting with the faulting instruction > $T.aa echo =========================================== >> $T.aa code=`echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g; s/[>)]$//'` echo -n " .$type 0x" > $T.s echo $code >> $T.s disas $T cat $T.dis >> $T.aa # (lines of whole $T.oo) - (lines of $T.aa, i.e. "Code starting") + 3, # i.e. the title + the "===..=" line (sed is counting from 1, 0 address is # special) faultlinenum=$(( $(wc -l $T.oo | cut -d" " -f1) - \ $(wc -l $T.aa | cut -d" " -f1) + 3)) faultline=`cat $T.dis | head -1 | cut -d":" -f2-` faultline=`echo "$faultline" | sed -e 's/\[/\\\[/g; s/\]/\\\]/g'` cat $T.oo | sed -e "${faultlinenum}s/^\([^:]*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/" echo cat $T.aa cleanup
[+]
..
[-] ld-version.sh
[edit]
[+]
package
[-] stackusage
[edit]
[-] pnmtologo.c
[edit]
[-] gcc-plugin.sh
[edit]
[-] setlocalversion
[edit]
[-] stackdelta
[edit]
[-] .kallsyms.cmd
[edit]
[-] checkkconfigsymbols.py
[edit]
[-] extract-cert.c
[edit]
[-] extract-sys-certs.pl
[edit]
[-] unifdef.c
[edit]
[-] Makefile.extrawarn
[edit]
[-] Makefile.kcov
[edit]
[-] documentation-file-ref-check
[edit]
[-] parse-maintainers.pl
[edit]
[-] Makefile.ubsan
[edit]
[+]
atomic
[-] checksyscalls.sh
[edit]
[-] spdxcheck-test.sh
[edit]
[-] recordmcount.h
[edit]
[-] mkuboot.sh
[edit]
[-] kallsyms.c
[edit]
[-] link-vmlinux.sh
[edit]
[-] .sortextable.cmd
[edit]
[-] .bin2c.cmd
[edit]
[-] sortextable.h
[edit]
[-] show_delta
[edit]
[-] Makefile.gcc-plugins
[edit]
[-] ver_linux
[edit]
[-] leaking_addresses.pl
[edit]
[-] subarch.include
[edit]
[-] check_extable.sh
[edit]
[-] gcc-ld
[edit]
[-] diffconfig
[edit]
[-] bpf_helpers_doc.py
[edit]
[-] decode_stacktrace.sh
[edit]
[-] split-man.pl
[edit]
[-] makelst
[edit]
[-] .asn1_compiler.cmd
[edit]
[-] recordmcount
[edit]
[-] mkcompile_h
[edit]
[-] module-common.lds
[edit]
[-] kmsg-doc
[edit]
[-] Makefile
[edit]
[-] Makefile.modbuiltin
[edit]
[-] gcc-goto.sh
[edit]
[-] mksysmap
[edit]
[-] modules-check.sh
[edit]
[-] nsdeps
[edit]
[-] gcc-x86_64-has-stack-protector.sh
[edit]
[-] ubuntu-retpoline-extract-one
[edit]
[-] .recordmcount.cmd
[edit]
[-] gen_compile_commands.py
[edit]
[-] find-unused-docs.sh
[edit]
[-] coccicheck
[edit]
[-] gfp-translate
[edit]
[-] Makefile.kasan
[edit]
[-] config
[edit]
[-] bin2c
[edit]
[-] adjust_autoksyms.sh
[edit]
[-] asn1_compiler.c
[edit]
[+]
mod
[-] cc-can-link.sh
[edit]
[+]
selinux
[-] checkpatch.pl
[edit]
[+]
coccinelle
[-] .insert-sys-cert.cmd
[edit]
[-] Makefile.modfinal
[edit]
[-] headers_check.pl
[edit]
[-] recordmcount.c
[edit]
[-] sphinx-pre-install
[edit]
[-] Makefile.modsign
[edit]
[-] headers_install.sh
[edit]
[-] patch-kernel
[edit]
[-] xz_wrap.sh
[edit]
[+]
dtc
[+]
basic
[+]
tracing
[-] headerdep.pl
[edit]
[-] const_structs.checkpatch
[edit]
[-] extract_xc3028.pl
[edit]
[-] tags.sh
[edit]
[-] get_dvb_firmware
[edit]
[-] Makefile.build
[edit]
[-] clang-version.sh
[edit]
[-] tools-support-relr.sh
[edit]
[-] gcc-x86_32-has-stack-protector.sh
[edit]
[-] bootgraph.pl
[edit]
[-] gen_ksymdeps.sh
[edit]
[-] asn1_compiler
[edit]
[-] Makefile.clean
[edit]
[-] spdxcheck.py
[edit]
[-] decodecode
[edit]
[-] kallsyms
[edit]
[-] insert-sys-cert.c
[edit]
[-] extract-module-sig.pl
[edit]
[+]
gdb
[-] sortextable.c
[edit]
[-] prune-kernel
[edit]
[+]
kconfig
[-] cleanfile
[edit]
[-] namespace.pl
[edit]
[-] checkincludes.pl
[edit]
[-] faddr2line
[edit]
[-] checkstack.pl
[edit]
[-] .conmakehash.cmd
[edit]
[-] mkmakefile
[edit]
[-] extract-cert
[edit]
[-] Makefile.lib
[edit]
[+]
ksymoops
[-] profile2linkerlist.pl
[edit]
[-] gcc-version.sh
[edit]
[-] Makefile.modpost
[edit]
[-] recordmcount.pl
[edit]
[-] extract-ikconfig
[edit]
[-] bloat-o-meter
[edit]
[-] Makefile.dtbinst
[edit]
[-] kernel-doc
[edit]
[-] Lindent
[edit]
[+]
gcc-plugins
[-] cleanpatch
[edit]
[-] bin2c.c
[edit]
[-] xen-hypercalls.sh
[edit]
[-] markup_oops.pl
[edit]
[-] checkversion.pl
[edit]
[-] conmakehash.c
[edit]
[-] sortextable
[edit]
[-] Makefile.headersinst
[edit]
[-] export_report.pl
[edit]
[+]
genksyms
[-] get_abi.pl
[edit]
[-] conmakehash
[edit]
[-] Makefile.asm-generic
[edit]
[-] objdiff
[edit]
[-] .extract-cert.cmd
[edit]
[-] sign-file.c
[edit]
[-] depmod.sh
[edit]
[-] file-size.sh
[edit]
[-] Makefile.modinst
[edit]
[-] Kconfig.include
[edit]
[-] Makefile.host
[edit]
[-] extract-vmlinux
[edit]
[-] get_maintainer.pl
[edit]
[-] Makefile.package
[edit]
[-] spelling.txt
[edit]
[-] .sign-file.cmd
[edit]
[-] Kbuild.include
[edit]
[-] sign-file
[edit]
[-] insert-sys-cert
[edit]