History

scripts: Add ppc64le support for checkstack.pl

64-bit ELF v2 ABI specification for POWER describes, on section "General Stack Frame Requirements", that the stack should use the following instructions when compiled with backchain: mflr r0 std r0, 16(r1) stdu r1, -XX(r1) Where XX is the frame size for that function, and this is the value checkstack.pl will find the stack size for each function. This patch also simplifies the entire Powerpc section, since just two type of instructions are used, 'stdu' for 64 bits and 'stwu' for 32 bits platform.

Breno Leitao committed 8 years ago

Commit 8449a4c1 parent 8272f591 file · +4 −7Browse files

Showing the changes to scripts/checkstack.pl (1 of 1 file). Show all

Unified · Split

scripts/checkstack.pl+4−7
@@ -15,6 +15,7 @@ · 14 unmodified lines
15# M68k port by Geert Uytterhoeven and Andreas Schwab15# M68k port by Geert Uytterhoeven and Andreas Schwab
16# AArch64, PARISC ports by Kyle McMartin16# AArch64, PARISC ports by Kyle McMartin
17# sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk>17# sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk>
18# ppc64le port by Breno Leitao <leitao@debian.org>
18#19#
19# Usage:20# Usage:
20# objdump -d vmlinux | scripts/checkstack.pl [arch]21# objdump -d vmlinux | scripts/checkstack.pl [arch]
@@ -78,13 +79,9 @@ my (@stack, $re, $dre, $x, $xs, $funcre); · 57 unmodified lines
78 $re = qr/.*l\.addi.*r1,r1,-(([0-9]{2}|[3-9])[0-9]{2})/o;79 $re = qr/.*l\.addi.*r1,r1,-(([0-9]{2}|[3-9])[0-9]{2})/o;
79 } elsif ($arch eq 'parisc' || $arch eq 'parisc64') {80 } elsif ($arch eq 'parisc' || $arch eq 'parisc64') {
80 $re = qr/.*ldo ($x{1,8})\(sp\),sp/o;81 $re = qr/.*ldo ($x{1,8})\(sp\),sp/o;
81 } elsif ($arch eq 'ppc') {82 } elsif ($arch eq 'powerpc' || $arch =~ /^ppc(64)?(le)?$/ ) {
82 #c00029f4: 94 21 ff 30 stwu r1,-208(r1)83 # powerpc : 94 21 ff 30 stwu r1,-208(r1)
83 $re = qr/.*stwu.*r1,-($x{1,8})\(r1\)/o;84 # ppc64(le) : 81 ff 21 f8 stdu r1,-128(r1)
84 } elsif ($arch eq 'ppc64') {
85 #XXX
86 $re = qr/.*stdu.*r1,-($x{1,8})\(r1\)/o;
87 } elsif ($arch eq 'powerpc') {
88 $re = qr/.*st[dw]u.*r1,-($x{1,8})\(r1\)/o;85 $re = qr/.*st[dw]u.*r1,-($x{1,8})\(r1\)/o;
89 } elsif ($arch =~ /^s390x?$/) {86 } elsif ($arch =~ /^s390x?$/) {
90 # 11160: a7 fb ff 60 aghi %r15,-16087 # 11160: a7 fb ff 60 aghi %r15,-160