- switch (ui.Flags)
- {
- case UNW_FLAG_NHANDLER:
- return;
- case UNW_FLAG_EHANDLER:
- fprintf (file, "\texception_handler at 0x%x.\n", (unsigned int) ui.rva_ExceptionHandler);
- break;
- case UNW_FLAG_UHANDLER:
- fprintf (file, "\ttermination_handler at 0x%x.\n", (unsigned int) ui.rva_TerminationHandler);
- case UNW_FLAG_FHANDLER:
- fprintf (file, "\tframe_handler at 0x%x.\n", (unsigned int) ui.rva_FrameHandler);
- fprintf (file, "\t Argument for FrameHandler: 0x%x.\n",
- (unsigned int) ui.FrameHandlerArgument);
- return;
- case UNW_FLAG_CHAININFO:
- fprintf (file, "\t Function Entry: 0x%x\n", (unsigned int) ui.rva_FunctionEntry);
- return;
- default:
- fprintf (file, "\t Unknown flag value of 0x%x\n", (unsigned int) ui.Flags);
- return;
- }
- fprintf (file, "\t 0x%x # of scope(s)\n", (unsigned int) ui.CountOfScopes);
- for (i = 0; i < ui.CountOfScopes; i++)
- {
- struct pex64_scope_entry se;
- pex64_get_scope_entry (abfd, &se, i, ui.rawScopeEntries);
- fprintf (file, "\t scope #%u: BeginAddress: 0x%x, EndAddress: 0x%x,"
- "\n\t\tHandlerAddress:0x%x, JumpTarget:0x%x\n",
- (unsigned int) (i + 1),
- (unsigned int) se.rva_BeginAddress,
- (unsigned int) se.rva_EndAddress,
- (unsigned int) se.rva_HandlerAddress,
- (unsigned int) se.rva_JumpAddress);
- }
+ /* Now we need end of this xdata block. */
+ addr += ui.SizeOfBlock;
+ if (addr < end_addr)
+ {
+ unsigned int i;
+ fprintf (file,"\tUser data:\n");
+ for (i = 0; addr < end_addr; addr += 1, i++)
+ {
+ if ((i & 15) == 0)
+ fprintf (file, "\t %03x:", i);
+ fprintf (file, " %02x", data[addr]);
+ if ((i & 15) == 15)
+ fprintf (file, "\n");
+ }
+ if ((i & 15) != 0)
+ fprintf (file, "\n");
+ }