From 4b1ad75ead48645adb7f8e6115aff95b76c2f32a Mon Sep 17 00:00:00 2001 From: roland Date: Thu, 18 Aug 2005 08:51:30 +0000 Subject: 2005-08-18 Roland McGrath * loc2c.c (struct location): New member `emit_address'. (alloc_location): Initialize new member from ORIGIN. (location_from_address): New argument EMIT_ADDRESS. Initialize new member. (translate): Use LOC->emit_address hook to format DW_OP_addr constant. (location_relative): Die if DW_OP_addr is used. (default_emit_address): New function. (c_translate_location): New argument EMIT_ADDRESS, pass it down. Use default_emit_address if argument is null. * loc2c.h: Update decl. * loc2c-test.c (handle_variable): Update caller. * tapsets.cxx (dwflpp::literal_stmt_for_local): Update caller. (dwflpp::loc2c_emit_address): New static method. --- tapsets.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'tapsets.cxx') diff --git a/tapsets.cxx b/tapsets.cxx index da16750a..88369d55 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -28,6 +28,9 @@ extern "C" { #include #include #include "loc2c.h" + +#define __STDC_FORMAT_MACROS +#include } #include @@ -639,6 +642,15 @@ dwflpp throw semantic_error (msg); } + static void loc2c_emit_address (void *arg, struct obstack *pool, + Dwarf_Addr address) + { + dwflpp *dwfl = (dwflpp *) arg; + obstack_printf (pool, "%#" PRIx64 "UL /* hard-coded %s address */", + address, dwfl_module_info (dwfl->module, NULL, NULL, NULL, + NULL, NULL, NULL, NULL)); + } + string literal_stmt_for_local(Dwarf_Addr pc, string const & local, vector