There is actually a space after "sp," like this, ffff2000080813c8: a9bb7bfd stp x29, x30, [sp, #-80]! Right now, checkstack.pl isn't able to print anything on aarch64, because it won't be able to match the stating objdump line of a function due to this missing space. Hence, it displays every stack as zero-size. After this patch, checkpatch.pl is able to match the start of a function's objdump, and is then able to calculate each function's stack correctly.
Showing the changes to scripts/checkstack.pl (1 of 1 file). Show all
Unified · Split
| @@ -47,8 +47,8 @@ my (@stack, $re, $dre, $x, $xs, $funcre); · 46 unmodified lines | |||
| 47 | $xs = "[0-9a-f ]"; # hex character or space | 47 | $xs = "[0-9a-f ]"; # hex character or space |
| 48 | $funcre = qr/^$x* <(.*)>:$/; | 48 | $funcre = qr/^$x* <(.*)>:$/; |
| 49 | if ($arch eq 'aarch64') { | 49 | if ($arch eq 'aarch64') { |
| 50 | #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp,#-80]! | 50 | #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp, #-80]! |
| 51 | $re = qr/^.*stp.*sp,\#-([0-9]{1,8})\]\!/o; | 51 | $re = qr/^.*stp.*sp, \#-([0-9]{1,8})\]\!/o; |
| 52 | } elsif ($arch eq 'arm') { | 52 | } elsif ($arch eq 'arm') { |
| 53 | #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64 | 53 | #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64 |
| 54 | $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o; | 54 | $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o; |