[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 11/18] tcg: Allow the debug_frame data structure t
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL v2 11/18] tcg: Allow the debug_frame data structure to be constant |
Date: |
Tue, 27 May 2014 13:51:17 -0700 |
Adjust the FDE to point to the code_buffer after we've copied it
to the image, rather than requiring that the backend set it prior.
This allows the backend to use read-only storage for its data.
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/tcg.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 219c995..e73b403 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -86,8 +86,14 @@ typedef struct QEMU_PACKED {
uintptr_t func_len;
} DebugFrameFDEHeader;
+typedef struct QEMU_PACKED {
+ DebugFrameCIE cie;
+ DebugFrameFDEHeader fde;
+} DebugFrameHeader;
+
static void tcg_register_jit_int(void *buf, size_t size,
- void *debug_frame, size_t debug_frame_size)
+ const void *debug_frame,
+ size_t debug_frame_size)
__attribute__((unused));
/* Forward declarations for functions declared and used in tcg-target.c. */
@@ -2777,7 +2783,8 @@ static int find_string(const char *strtab, const char
*str)
}
static void tcg_register_jit_int(void *buf_ptr, size_t buf_size,
- void *debug_frame, size_t debug_frame_size)
+ const void *debug_frame,
+ size_t debug_frame_size)
{
struct __attribute__((packed)) DebugInfo {
uint32_t len;
@@ -2915,10 +2922,10 @@ static void tcg_register_jit_int(void *buf_ptr, size_t
buf_size,
uintptr_t buf = (uintptr_t)buf_ptr;
size_t img_size = sizeof(struct ElfImage) + debug_frame_size;
+ DebugFrameHeader *dfh;
img = g_malloc(img_size);
*img = img_template;
- memcpy(img + 1, debug_frame, debug_frame_size);
img->phdr.p_vaddr = buf;
img->phdr.p_paddr = buf;
@@ -2946,6 +2953,11 @@ static void tcg_register_jit_int(void *buf_ptr, size_t
buf_size,
img->di.fn_low_pc = buf;
img->di.fn_high_pc = buf + buf_size;
+ dfh = (DebugFrameHeader *)(img + 1);
+ memcpy(dfh, debug_frame, debug_frame_size);
+ dfh->fde.func_start = buf;
+ dfh->fde.func_len = buf_size;
+
#ifdef DEBUG_JIT
/* Enable this block to be able to debug the ELF image file creation.
One can use readelf, objdump, or other inspection utilities. */
--
1.9.3
- [Qemu-devel] [PULL v2 01/18] tcg: Optimize brcond2 and setcond2 ne/eq, (continued)
- [Qemu-devel] [PULL v2 01/18] tcg: Optimize brcond2 and setcond2 ne/eq, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 03/18] tcg: Push tcg-runtime routines into exec/helper-*, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 05/18] tcg: Inline tcg_gen_helperN, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 04/18] tcg: Use helper-gen.h in tcg-op.h, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 07/18] tcg: Register the helper info struct rather than the name, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 06/18] tcg: Move side effects out of dh_sizemask, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 08/18] tcg: Save flags and computed sizemask in TCGHelperInfo, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 09/18] tcg: Remove sizemask and flags arguments to tcg_gen_callN, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 10/18] tcg: Move size effects out of dh_arg, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 12/18] tcg-i386: Make debug_frame const, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 11/18] tcg: Allow the debug_frame data structure to be constant,
Richard Henderson <=
- [Qemu-devel] [PULL v2 14/18] tcg-arm: Make debug_frame const, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 13/18] tcg-aarch64: Make debug_frame const, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 15/18] tcg-s390: Make debug_frame const, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 16/18] tcg-sparc: Make debug_frame const, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 17/18] tcg/optimize: Move updating of gen_opc_buf into tcg_opt_gen_mov*, Richard Henderson, 2014/05/27
- [Qemu-devel] [PULL v2 18/18] tcg/optimize: Remember garbage high bits for 32-bit ops, Richard Henderson, 2014/05/27
- Re: [Qemu-devel] [PULL v2 00/18] tcg patch queue, Peter Maydell, 2014/05/28