Home | History | Annotate | Download | only in libsframe

Lines Matching refs:fre

77    some checks on the FRE start address.
259 /* Get the FRE start address size, given the FRE_TYPE. */
331 includes the starting address, FRE info, and all the offsets. */
418 masking with the rep_block_size is necessary to find the matching FRE. */
438 /* Advance the buffer pointer to where the FRE info is. */
442 /* FRE info is uint8_t. No need to flip. */
580 /* Get IDX'th offset from FRE. Set errp as applicable. */
583 sframe_get_fre_offset (sframe_frame_row_entry *fre, int idx, int *errp)
587 if (fre == NULL || !sframe_fre_sanity_check_p (fre))
590 offset_cnt = sframe_fre_get_offset_count (fre->fre_info);
591 offset_size = sframe_fre_get_offset_size (fre->fre_info);
601 int8_t *sp = (int8_t *)fre->fre_offsets;
606 int16_t *sp = (int16_t *)fre->fre_offsets;
611 int32_t *ip = (int32_t *)fre->fre_offsets;
665 /* Get the FRE type given the function size. */
683 /* Get the base reg id from the FRE info. Set errp if failure. */
686 sframe_fre_get_base_reg_id (sframe_frame_row_entry *fre, int *errp)
688 if (fre == NULL)
691 uint8_t fre_info = fre->fre_info;
695 /* Get the CFA offset from the FRE. If the offset is invalid, sets errp. */
699 sframe_frame_row_entry *fre, int *errp)
701 int32_t offset = sframe_get_fre_offset (fre, SFRAME_FRE_CFA_OFFSET_IDX, errp);
710 /* Get the FP offset from the FRE. If the offset is invalid, sets errp.
717 sframe_frame_row_entry *fre, int *errp)
737 return sframe_get_fre_offset (fre, fp_offset_idx, errp);
740 /* Get the RA offset from the FRE. If the offset is invalid, sets errp.
749 sframe_frame_row_entry *fre, int *errp)
761 /* Otherwise, get the RA offset from the FRE. */
762 return sframe_get_fre_offset (fre, SFRAME_FRE_RA_OFFSET_IDX, errp);
769 sframe_frame_row_entry *fre, int *errp)
771 if (fre == NULL || !sframe_fre_sanity_check_p (fre))
774 return sframe_get_fre_ra_mangled_p (fre->fre_info);
790 /* Decode the SFrame FRE start address offset value from FRE_BUF in on-disk
834 /* Decode a frame row entry FRE which starts at location FRE_BUF. The function
835 updates ESZ to the size of the FRE as stored in the binary format.
842 sframe_decode_fre (const char *fre_buf, sframe_frame_row_entry *fre,
851 if (fre_buf == NULL || fre == NULL || esz == NULL)
854 /* Copy over the FRE start address. */
855 sframe_decode_fre_start_address (fre_buf, &fre->fre_start_addr, fre_type);
858 fre->fre_info = *(uint8_t *)(fre_buf + addr_size);
860 sframe_assert (sizeof (fre->fre_info) == sizeof (uint8_t));
864 memset (fre->fre_offsets, 0, MAX_OFFSET_BYTES);
866 stack_offsets_sz = sframe_fre_offset_bytes_size (fre->fre_info);
867 stack_offsets = fre_buf + addr_size + sizeof (fre->fre_info);
868 memcpy (fre->fre_offsets, stack_offsets, stack_offsets_sz);
870 /* The FRE has been decoded. Use it to perform one last sanity check. */
871 fre_size = sframe_fre_entry_size (fre, fre_type);
872 sframe_assert (fre_size == (addr_size + sizeof (fre->fre_info)
992 debug_printf ("%u total fre bytes\n", fre_bytes);
1135 /* Get the end IP offset for the FRE at index i in the FDEP. The buffer FRES
1136 is the starting location for the FRE. */
1147 /* Get the start address of the next FRE in sequence. */
1154 /* The end IP offset for the FRE needs to be deduced from the function
1181 /* Find the FDE which contains the PC, then scan its fre entries. */
1200 /* Stop search if FRE's start_ip is greater than pc. Given
1294 /* Get the FRE_IDX'th FRE of the function at FUNC_IDX'th function
1302 sframe_frame_row_entry *fre)
1312 if (ctx == NULL || fre == NULL)
1322 /* Now scan the FRE entries. */
1326 /* Decode the FRE at the current position. Return it if valid. */
1340 sframe_frame_row_entry_copy (fre, &ifre);
1344 /* Next FRE. */
1527 /* Add an FRE to function at FUNC_IDX'th function descriptor entry in
1767 /* Write the SFrame FRE start address from the in-memory FRE_START_ADDR
1822 /* The FRE start address must be encodable in the available number of
1888 /* Write out the FRE table first.
1891 FDE; the latter stores the information about the FRE type record used for
1893 in which FREs are stored in the SFrame's FRE sub-section. This means
1973 Entries section and the FRE section. */
1983 /* SFrame FRE section follows immediately after the SFrame FDE section. */
1989 /* Write out the FDE Index and the FRE table in the sfe_data. */