Usage ===== Direct usage: objdump -dr input.o | ./objtool.awk Or loop over all kernel objects under a given path: loop <path> Note that "loop" will use binutils-s390x-linux-gnu's objdump (available in EPEL https://fedoraproject.org/wiki/EPEL) if installed, otherwise the local version. Verbose ------- By default objtook.awk only reports on functions that match its search heuristic. It can report on all functions when put into verbose mode: objdump -dr input.o | ./objtool.awk -v verbose=1 - or - verbose=1 ./loop linux/ | grep :: | wc -l Pre-built object files ====================== The linux/ directory consists of object files generated by linux v4.16 'allyesconfig' and CONFIG_COMPILE_TEST. The report file was created from these files. Total number of functions considered: % verbose=1 ./loop linux/ | grep :: | wc -l 249032 Interesting functions: % ./loop linux/ | grep :: linux/arch/s390/kernel/head.o :: iplstart-0x3c0() linux/arch/s390/kernel/head.o :: iplstart() linux/arch/s390/kernel/head.o :: startup() linux/arch/s390/kernel/head.o :: startup_kdump() linux/arch/s390/kernel/head.o :: startup_kdump() linux/arch/s390/kernel/head.o :: startup_kdump_relocated() linux/arch/s390/kernel/head64.o :: startup_continue() linux/arch/s390/kernel/head64.o :: _stext() linux/arch/s390/kernel/vdso64/gettimeofday.o :: __kernel_gettimeofday() linux/arch/s390/kernel/base.o :: s390_base_mcck_handler() linux/arch/s390/kernel/base.o :: s390_base_ext_handler() linux/arch/s390/kernel/base.o :: s390_base_pgm_handler() linux/arch/s390/kernel/swsusp.o :: pgm_check_entry() linux/arch/s390/kernel/swsusp.o :: restore_registers() linux/arch/s390/kernel/mcount.o :: ftrace_graph_caller() linux/arch/s390/kernel/entry.o :: sie64a() linux/arch/s390/kernel/entry.o :: system_call() linux/arch/s390/kernel/entry.o :: ret_from_fork() linux/arch/s390/kernel/entry.o :: kernel_thread_starter() linux/arch/s390/kernel/entry.o :: pgm_check_handler() linux/arch/s390/kernel/entry.o :: io_int_handler() linux/arch/s390/kernel/entry.o :: ext_int_handler() linux/arch/s390/kernel/entry.o :: mcck_int_handler() linux/arch/s390/kernel/entry.o :: restart_int_handler() linux/arch/s390/kernel/relocate_kernel.o :: relocate_kernel() linux/arch/s390/kernel/irq.o :: do_softirq_own_stack() linux/arch/s390/kernel/vdso32/clock_gettime.o :: __kernel_clock_gettime() linux/arch/s390/kernel/vdso32/gettimeofday.o :: __kernel_gettimeofday() linux/arch/s390/kernel/vdso32/clock_getres.o :: __kernel_clock_getres() linux/arch/s390/net/bpf_jit.o :: sk_load_word_slow() linux/arch/s390/net/bpf_jit.o :: sk_load_half_slow() linux/arch/s390/net/bpf_jit.o :: sk_load_byte_slow() linux/arch/s390/net/bpf_jit.o :: sk_load_word_slow_neg() linux/arch/s390/net/bpf_jit.o :: sk_load_half_slow_neg() linux/arch/s390/net/bpf_jit.o :: sk_load_byte_slow_neg() See the report file for a full assembly listing. References ========== zSeries ELF Application Binary Interface Supplement http://refspecs.linuxfoundation.org/ELF/zSeries/lzsabi0_zSeries.pdf Enterprise Systems Architecture/390: Principles of Operation http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/download/DZ9AR008.pdf System z Instructions Mnemonic List http://www.tachyonsoft.com/inst390m.htm