diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 95b6569eee..c63ad0a48e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2004-07-16 Andrew Cagney + + * frame.c (fprint_field): New function. + (fprint_frame_id): Use fprint_field. + 2004-07-15 Joel Brobecker * ada-lang.c (ada_language_defn): Remove commented out code. diff --git a/gdb/frame.c b/gdb/frame.c index 0e3531acea..c164d72736 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -139,14 +139,25 @@ static int frame_debug; static int backtrace_past_main; static unsigned int backtrace_limit = UINT_MAX; +static void +fprint_field (struct ui_file *file, const char *name, int p, CORE_ADDR addr) +{ + if (p) + fprintf_unfiltered (file, "%s=0x%s", name, paddr_nz (addr)); + else + fprintf_unfiltered (file, "!%s", name); +} void fprint_frame_id (struct ui_file *file, struct frame_id id) { - fprintf_unfiltered (file, "{stack=0x%s,code=0x%s,special=0x%s}", - paddr_nz (id.stack_addr), - paddr_nz (id.code_addr), - paddr_nz (id.special_addr)); + fprintf_unfiltered (file, "{"); + fprint_field (file, "stack", id.stack_addr_p, id.stack_addr); + fprintf_unfiltered (file, ","); + fprint_field (file, "code", id.code_addr_p, id.code_addr); + fprintf_unfiltered (file, ","); + fprint_field (file, "special", id.special_addr_p, id.special_addr); + fprintf_unfiltered (file, "}"); } static void