mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-23 13:21:43 +08:00
libsframe: use const char * consistently for immutable FRE buffers
libsframe/ * sframe.c (sframe_decode_fre): Use const char * datatype when handling buffer containing the FREs. (sframe_fre_get_end_ip_offset): Likewise. (sframe_find_fre): Likewise. (sframe_decoder_get_fre): Likewise.
This commit is contained in:
parent
e80578bea7
commit
812d868850
@ -733,11 +733,10 @@ sframe_decode_fre_start_address (const char *fre_buf,
|
||||
|
||||
static int
|
||||
sframe_decode_fre (const char *fre_buf, sframe_frame_row_entry *fre,
|
||||
unsigned int fre_type,
|
||||
size_t *esz)
|
||||
unsigned int fre_type, size_t *esz)
|
||||
{
|
||||
int err = 0;
|
||||
void *stack_offsets = NULL;
|
||||
const char *stack_offsets = NULL;
|
||||
size_t stack_offsets_sz;
|
||||
size_t addr_size;
|
||||
size_t fre_size;
|
||||
@ -758,7 +757,7 @@ sframe_decode_fre (const char *fre_buf, sframe_frame_row_entry *fre,
|
||||
memset (fre->fre_offsets, 0, MAX_OFFSET_BYTES);
|
||||
/* Get offsets size. */
|
||||
stack_offsets_sz = sframe_fre_offset_bytes_size (fre->fre_info);
|
||||
stack_offsets = (unsigned char *)fre_buf + addr_size + sizeof (fre->fre_info);
|
||||
stack_offsets = fre_buf + addr_size + sizeof (fre->fre_info);
|
||||
memcpy (fre->fre_offsets, stack_offsets, stack_offsets_sz);
|
||||
|
||||
/* The FRE has been decoded. Use it to perform one last sanity check. */
|
||||
@ -991,7 +990,7 @@ sframe_find_fre (sframe_decoder_ctx *ctx, int32_t pc,
|
||||
sframe_func_desc_entry *fdep;
|
||||
uint32_t start_address, i;
|
||||
sframe_frame_row_entry cur_fre, next_fre;
|
||||
unsigned char *sp;
|
||||
const char *fres;
|
||||
unsigned int fre_type, fde_type;
|
||||
size_t esz;
|
||||
int err = 0;
|
||||
@ -1022,10 +1021,10 @@ sframe_find_fre (sframe_decoder_ctx *ctx, int32_t pc,
|
||||
if (fde_type == SFRAME_FDE_TYPE_PCMASK)
|
||||
bitmask = 0xff;
|
||||
|
||||
sp = (unsigned char *) ctx->sfd_fres + fdep->sfde_func_start_fre_off;
|
||||
fres = ctx->sfd_fres + fdep->sfde_func_start_fre_off;
|
||||
for (i = 0; i < fdep->sfde_func_num_fres; i++)
|
||||
{
|
||||
err = sframe_decode_fre ((const char *)sp, &next_fre, fre_type, &esz);
|
||||
err = sframe_decode_fre (fres, &next_fre, fre_type, &esz);
|
||||
start_address = next_fre.fre_start_addr;
|
||||
|
||||
if (((fdep->sfde_func_start_address
|
||||
@ -1037,8 +1036,7 @@ sframe_find_fre (sframe_decoder_ctx *ctx, int32_t pc,
|
||||
if (i < fdep->sfde_func_num_fres - 1)
|
||||
{
|
||||
sp += esz;
|
||||
err = sframe_decode_fre ((const char*)sp, &next_fre,
|
||||
fre_type, &esz);
|
||||
err = sframe_decode_fre (fres, &next_fre, fre_type, &esz);
|
||||
|
||||
/* Sanity check the next FRE. */
|
||||
if (!sframe_fre_sanity_check_p (&next_fre))
|
||||
@ -1141,7 +1139,7 @@ sframe_decoder_get_fre (sframe_decoder_ctx *ctx,
|
||||
{
|
||||
sframe_func_desc_entry *fdep;
|
||||
sframe_frame_row_entry ifre;
|
||||
unsigned char *sp;
|
||||
const char *fres;
|
||||
uint32_t i;
|
||||
unsigned int fre_type;
|
||||
size_t esz = 0;
|
||||
@ -1158,11 +1156,11 @@ sframe_decoder_get_fre (sframe_decoder_ctx *ctx,
|
||||
|
||||
fre_type = sframe_get_fre_type (fdep);
|
||||
/* Now scan the FRE entries. */
|
||||
sp = (unsigned char *) ctx->sfd_fres + fdep->sfde_func_start_fre_off;
|
||||
fres = ctx->sfd_fres + fdep->sfde_func_start_fre_off;
|
||||
for (i = 0; i < fdep->sfde_func_num_fres; i++)
|
||||
{
|
||||
/* Decode the FRE at the current position. Return it if valid. */
|
||||
err = sframe_decode_fre ((const char *)sp, &ifre, fre_type, &esz);
|
||||
err = sframe_decode_fre (fres, &ifre, fre_type, &esz);
|
||||
if (i == fre_idx)
|
||||
{
|
||||
if (!sframe_fre_sanity_check_p (&ifre))
|
||||
@ -1179,7 +1177,7 @@ sframe_decoder_get_fre (sframe_decoder_ctx *ctx,
|
||||
return 0;
|
||||
}
|
||||
/* Next FRE. */
|
||||
sp += esz;
|
||||
fres += esz;
|
||||
}
|
||||
|
||||
return sframe_set_errno (&err, SFRAME_ERR_FDE_NOTFOUND);
|
||||
|
Loading…
Reference in New Issue
Block a user