Skip to content

Commit bd5948f

Browse files
committed
pstack: Support big endian
1 parent 1f33adf commit bd5948f

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/stack/dw.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,11 @@ unsafe fn format_value(
367367
fn u64_from_bytes(bytes: &[u8]) -> u64 {
368368
let mut buf = [0u8; 8];
369369
let len = bytes.len().min(8);
370-
buf[..len].copy_from_slice(&bytes[..len]);
370+
if cfg!(target_endian = "big") {
371+
buf[8 - len..].copy_from_slice(&bytes[..len]);
372+
} else {
373+
buf[..len].copy_from_slice(&bytes[..len]);
374+
}
371375
u64::from_ne_bytes(buf)
372376
}
373377

@@ -540,7 +544,12 @@ unsafe fn collect_one_arg(
540544
if loc.is_value {
541545
// The value is directly in loc.value
542546
let bytes = loc.value.to_ne_bytes();
543-
let used = &bytes[..size.min(8)];
547+
let n = size.min(8);
548+
let used = if cfg!(target_endian = "big") {
549+
&bytes[8 - n..]
550+
} else {
551+
&bytes[..n]
552+
};
544553
let value = format_value(used, &mut peeled, read_mem);
545554
Some(Argument { name, value })
546555
} else {

0 commit comments

Comments
 (0)