diff options
author | Marcin KoĆcielnicki <koriakin@0x04.net> | 2016-03-06 16:38:52 +0100 |
---|---|---|
committer | Marcin KoĆcielnicki <koriakin@0x04.net> | 2016-03-09 18:43:54 +0100 |
commit | cc2c4da8813b980a4e68272bb43583f4af6fe89c (patch) | |
tree | d9bca39562fdf1e4c32fded351f4c73c57a1b92a /gdb/rs6000-tdep.c | |
parent | a67914defbe57290c714975d7c1ccefa787fd635 (diff) | |
download | gdb-cc2c4da8813b980a4e68272bb43583f4af6fe89c.zip gdb-cc2c4da8813b980a4e68272bb43583f4af6fe89c.tar.gz gdb-cc2c4da8813b980a4e68272bb43583f4af6fe89c.tar.bz2 |
gdb/rs6000: Read backchain as unsigned.
Previously, backchain was read as a signed quantity, resulting in
addresses like 0xfffffffffffeded0 instead of 0xfffeded0 returned by
unwinder on 32-bit powerpc. While normally such addresses are masked
off, this causes problems for tracepoints, since 0xfffffffffffeded0
is considered unavailable.
Fixes a test failure in gdb.trace/entry-values.exp.
gdb/ChangeLog:
* corefile.c (safe_read_memory_unsigned_integer): New function.
* gdbcore.h (safe_read_memory_unsigned_integer): New prototype.
* rs6000-tdep.c (rs6000_frame_cache): Read backchain as unsigned.
Diffstat (limited to 'gdb/rs6000-tdep.c')
-rw-r--r-- | gdb/rs6000-tdep.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 565c620..2460eb5 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -3336,10 +3336,10 @@ rs6000_frame_cache (struct frame_info *this_frame, void **this_cache) if (!fdata.frameless) { /* Frameless really means stackless. */ - LONGEST backchain; + ULONGEST backchain; - if (safe_read_memory_integer (cache->base, wordsize, - byte_order, &backchain)) + if (safe_read_memory_unsigned_integer (cache->base, wordsize, + byte_order, &backchain)) cache->base = (CORE_ADDR) backchain; } |