# Check the stack usage of functions # # Copyright Joern Engel <joern@lazybastard.org> # Inspired by Linus Torvalds # Original idea maybe from Keith Owens # s390 port and big speedup by Arnd Bergmann <arnd@bergmann-dalldorf.de> # Mips port by Juan Quintela <quintela@mandrakesoft.com> # Arm port by Holger Schurig # Random bits by Matt Mackall <mpm@selenic.com> # M68k port by Geert Uytterhoeven and Andreas Schwab # AArch64, PARISC ports by Kyle McMartin # sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk> # ppc64le port by Breno Leitao <leitao@debian.org> # riscv port by Wadim Mueller <wafgo01@gmail.com> # loongarch port by Youling Tang <tangyouling@kylinos.cn> # # Usage: # objdump -d vmlinux | scripts/checkstack.pl [arch] [min_stack] # # TODO : Port to all architectures (one regex per arch)
use strict;
# check for arch # # $re is used for two matches: # $& (whole re) matches the complete objdump line with the stack growth # $1 (first bracket) matches the size of the stack growth # # $dre is similar, but for dynamic stack redutions: # $& (whole re) matches the complete objdump line with the stack growth # $1 (first bracket) matches the dynamic amount of the stack growth # # $sub: subroutine for special handling to check stack usage. # # use anything else and feel the pain ;)
my (@stack, $re, $dre, $sub, $x, $xs, $funcre, $min_stack);
{
my $arch = shift; if ($arch eq "") {
$arch = `uname -m`;
chomp($arch);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.