Coverage Report

Created: 2025-11-11 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/elfutils/libdw/memory-access.h
Line
Count
Source
1
/* Unaligned memory access functionality.
2
   Copyright (C) 2000-2014, 2018 Red Hat, Inc.
3
   This file is part of elfutils.
4
5
   This file is free software; you can redistribute it and/or modify
6
   it under the terms of either
7
8
     * the GNU Lesser General Public License as published by the Free
9
       Software Foundation; either version 3 of the License, or (at
10
       your option) any later version
11
12
   or
13
14
     * the GNU General Public License as published by the Free
15
       Software Foundation; either version 2 of the License, or (at
16
       your option) any later version
17
18
   or both in parallel, as here.
19
20
   elfutils is distributed in the hope that it will be useful, but
21
   WITHOUT ANY WARRANTY; without even the implied warranty of
22
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23
   General Public License for more details.
24
25
   You should have received copies of the GNU General Public License and
26
   the GNU Lesser General Public License along with this program.  If
27
   not, see <http://www.gnu.org/licenses/>.  */
28
29
#ifndef _MEMORY_ACCESS_H
30
#define _MEMORY_ACCESS_H 1
31
32
#include <limits.h>
33
#include <stdint.h>
34
35
#include <system.h>
36
37
/* Number decoding macros.  See 7.6 Variable Length Data.  */
38
39
0
#define len_leb128(var) ((8 * sizeof (var) + 6) / 7)
40
41
static inline size_t
42
__libdw_max_len_leb128 (const size_t type_len,
43
      const unsigned char *addr, const unsigned char *end)
44
0
{
45
0
  const size_t pointer_len = likely (addr < end) ? end - addr : 0;
46
0
  return likely (type_len <= pointer_len) ? type_len : pointer_len;
47
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_end.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_error.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module.c:__libdw_max_len_leb128
Unexecuted instantiation: offline.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_max_len_leb128
Unexecuted instantiation: find-debuginfo.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_max_len_leb128
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_max_len_leb128
Unexecuted instantiation: open.c:__libdw_max_len_leb128
Unexecuted instantiation: image-header.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_frame.c:__libdw_max_len_leb128
Unexecuted instantiation: frame_unwind.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_max_len_leb128
Unexecuted instantiation: gzip.c:__libdw_max_len_leb128
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_max_len_leb128
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_max_len_leb128
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_max_len_leb128
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_max_len_leb128
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_max_len_leb128
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_max_len_leb128
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_max_len_leb128
Unexecuted instantiation: mips_retval.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_end.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_tag.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_error.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_attr.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_child.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formudata.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formref_die.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_siblingof.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_diecu.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_hasattr.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_bytesize.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_bitsize.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formflag.c:__libdw_max_len_leb128
Unexecuted instantiation: libdw_findcu.c:__libdw_max_len_leb128
Unexecuted instantiation: libdw_form.c:__libdw_max_len_leb128
Unexecuted instantiation: libdw_alloc.c:__libdw_max_len_leb128
Unexecuted instantiation: frame-cache.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_frame_register.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_getalt.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_setalt.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_peel_type.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_max_len_leb128
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_report_elf.c:__libdw_max_len_leb128
Unexecuted instantiation: relocate.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_max_len_leb128
Unexecuted instantiation: linux-proc-maps.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_max_len_leb128
Unexecuted instantiation: libdwfl_crc32.c:__libdw_max_len_leb128
Unexecuted instantiation: elf-from-memory.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_max_len_leb128
Unexecuted instantiation: linux-pid-attach.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_begin.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_nextcu.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_offdie.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formstring.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_haschildren.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formsdata.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formref.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_srclang.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_getlocation.c:__libdw_max_len_leb128
Unexecuted instantiation: fde.c:__libdw_max_len_leb128
Unexecuted instantiation: cfi.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_getcfi.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_get_units.c:__libdw_max_len_leb128
Unexecuted instantiation: segment.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formaddr.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_lowpc.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_ranges.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_formblock.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_max_len_leb128
Unexecuted instantiation: cie.c:__libdw_max_len_leb128
Unexecuted instantiation: dwarf_highpc.c:__libdw_max_len_leb128
Unexecuted instantiation: core-file.c:__libdw_max_len_leb128
Unexecuted instantiation: linux-core-attach.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_max_len_leb128
Unexecuted instantiation: link_map.c:__libdw_max_len_leb128
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_max_len_leb128
Unexecuted instantiation: derelocate.c:__libdw_max_len_leb128
48
49
static inline size_t
50
__libdw_max_len_uleb128 (const unsigned char *addr, const unsigned char *end)
51
0
{
52
0
  const size_t type_len = len_leb128 (uint64_t);
53
0
  return __libdw_max_len_leb128 (type_len, addr, end);
54
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_end.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_error.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module.c:__libdw_max_len_uleb128
Unexecuted instantiation: offline.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_max_len_uleb128
Unexecuted instantiation: find-debuginfo.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_max_len_uleb128
Unexecuted instantiation: open.c:__libdw_max_len_uleb128
Unexecuted instantiation: image-header.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_frame.c:__libdw_max_len_uleb128
Unexecuted instantiation: frame_unwind.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_max_len_uleb128
Unexecuted instantiation: gzip.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_max_len_uleb128
Unexecuted instantiation: mips_retval.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_end.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_tag.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_error.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_attr.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_child.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formudata.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formref_die.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_siblingof.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_diecu.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_hasattr.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_bytesize.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_bitsize.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formflag.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdw_findcu.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdw_form.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdw_alloc.c:__libdw_max_len_uleb128
Unexecuted instantiation: frame-cache.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_frame_register.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_getalt.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_setalt.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_peel_type.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_report_elf.c:__libdw_max_len_uleb128
Unexecuted instantiation: relocate.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_max_len_uleb128
Unexecuted instantiation: linux-proc-maps.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_max_len_uleb128
Unexecuted instantiation: libdwfl_crc32.c:__libdw_max_len_uleb128
Unexecuted instantiation: elf-from-memory.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_max_len_uleb128
Unexecuted instantiation: linux-pid-attach.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_begin.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_nextcu.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_offdie.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formstring.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_haschildren.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formsdata.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formref.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_srclang.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_getlocation.c:__libdw_max_len_uleb128
Unexecuted instantiation: fde.c:__libdw_max_len_uleb128
Unexecuted instantiation: cfi.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_getcfi.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_get_units.c:__libdw_max_len_uleb128
Unexecuted instantiation: segment.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formaddr.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_lowpc.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_ranges.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_formblock.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_max_len_uleb128
Unexecuted instantiation: cie.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwarf_highpc.c:__libdw_max_len_uleb128
Unexecuted instantiation: core-file.c:__libdw_max_len_uleb128
Unexecuted instantiation: linux-core-attach.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_max_len_uleb128
Unexecuted instantiation: link_map.c:__libdw_max_len_uleb128
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_max_len_uleb128
Unexecuted instantiation: derelocate.c:__libdw_max_len_uleb128
55
56
static inline size_t
57
__libdw_max_len_sleb128 (const unsigned char *addr, const unsigned char *end)
58
0
{
59
  /* Subtract one step, so we don't shift into sign bit.  */
60
0
  const size_t type_len = len_leb128 (int64_t) - 1;
61
0
  return __libdw_max_len_leb128 (type_len, addr, end);
62
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_end.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_error.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module.c:__libdw_max_len_sleb128
Unexecuted instantiation: offline.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_max_len_sleb128
Unexecuted instantiation: find-debuginfo.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_max_len_sleb128
Unexecuted instantiation: open.c:__libdw_max_len_sleb128
Unexecuted instantiation: image-header.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_frame.c:__libdw_max_len_sleb128
Unexecuted instantiation: frame_unwind.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_max_len_sleb128
Unexecuted instantiation: gzip.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_max_len_sleb128
Unexecuted instantiation: mips_retval.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_end.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_tag.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_error.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_attr.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_child.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formudata.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formref_die.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_siblingof.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_diecu.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_hasattr.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_bytesize.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_bitsize.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formflag.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdw_findcu.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdw_form.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdw_alloc.c:__libdw_max_len_sleb128
Unexecuted instantiation: frame-cache.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_frame_register.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_getalt.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_setalt.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_peel_type.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_report_elf.c:__libdw_max_len_sleb128
Unexecuted instantiation: relocate.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_max_len_sleb128
Unexecuted instantiation: linux-proc-maps.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_max_len_sleb128
Unexecuted instantiation: libdwfl_crc32.c:__libdw_max_len_sleb128
Unexecuted instantiation: elf-from-memory.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_max_len_sleb128
Unexecuted instantiation: linux-pid-attach.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_begin.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_nextcu.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_offdie.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formstring.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_haschildren.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formsdata.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formref.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_srclang.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_getlocation.c:__libdw_max_len_sleb128
Unexecuted instantiation: fde.c:__libdw_max_len_sleb128
Unexecuted instantiation: cfi.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_getcfi.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_get_units.c:__libdw_max_len_sleb128
Unexecuted instantiation: segment.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formaddr.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_lowpc.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_ranges.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_formblock.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_max_len_sleb128
Unexecuted instantiation: cie.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwarf_highpc.c:__libdw_max_len_sleb128
Unexecuted instantiation: core-file.c:__libdw_max_len_sleb128
Unexecuted instantiation: linux-core-attach.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_max_len_sleb128
Unexecuted instantiation: link_map.c:__libdw_max_len_sleb128
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_max_len_sleb128
Unexecuted instantiation: derelocate.c:__libdw_max_len_sleb128
63
64
#define get_uleb128_step(var, addr, nth)              \
65
0
  do {                       \
66
0
    unsigned char __b = *(addr)++;                \
67
0
    (var) |= (__typeof (var)) (__b & 0x7f) << ((nth) * 7);          \
68
0
    if (likely ((__b & 0x80) == 0))               \
69
0
      return (var);                   \
70
0
  } while (0)
71
72
static inline uint64_t
73
__libdw_get_uleb128 (const unsigned char **addrp, const unsigned char *end)
74
0
{
75
0
  const size_t max = __libdw_max_len_uleb128 (*addrp, end);
76
0
  if (unlikely (max == 0))
77
0
    return UINT64_MAX;
78
79
0
  uint64_t acc = 0;
80
81
  /* Unroll the first step to help the compiler optimize
82
     for the common single-byte case.  */
83
0
  get_uleb128_step (acc, *addrp, 0);
84
85
0
  for (size_t i = 1; i < max; ++i)
86
0
    get_uleb128_step (acc, *addrp, i);
87
  /* Other implementations set VALUE to UINT_MAX in this
88
     case.  So we better do this as well.  */
89
0
  return UINT64_MAX;
90
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_end.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_error.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module.c:__libdw_get_uleb128
Unexecuted instantiation: offline.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_get_uleb128
Unexecuted instantiation: find-debuginfo.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_get_uleb128
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_get_uleb128
Unexecuted instantiation: open.c:__libdw_get_uleb128
Unexecuted instantiation: image-header.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_frame.c:__libdw_get_uleb128
Unexecuted instantiation: frame_unwind.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_get_uleb128
Unexecuted instantiation: gzip.c:__libdw_get_uleb128
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_get_uleb128
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_get_uleb128
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_get_uleb128
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_get_uleb128
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_get_uleb128
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_get_uleb128
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_get_uleb128
Unexecuted instantiation: mips_retval.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_end.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_tag.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_error.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_attr.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_child.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formudata.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formref_die.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_siblingof.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_diecu.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_hasattr.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_bytesize.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_bitsize.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formflag.c:__libdw_get_uleb128
Unexecuted instantiation: libdw_findcu.c:__libdw_get_uleb128
Unexecuted instantiation: libdw_form.c:__libdw_get_uleb128
Unexecuted instantiation: libdw_alloc.c:__libdw_get_uleb128
Unexecuted instantiation: frame-cache.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_frame_register.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_getalt.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_setalt.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_peel_type.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_get_uleb128
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_report_elf.c:__libdw_get_uleb128
Unexecuted instantiation: relocate.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_get_uleb128
Unexecuted instantiation: linux-proc-maps.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_get_uleb128
Unexecuted instantiation: libdwfl_crc32.c:__libdw_get_uleb128
Unexecuted instantiation: elf-from-memory.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_get_uleb128
Unexecuted instantiation: linux-pid-attach.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_begin.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_nextcu.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_offdie.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formstring.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_haschildren.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formsdata.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formref.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_srclang.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_getlocation.c:__libdw_get_uleb128
Unexecuted instantiation: fde.c:__libdw_get_uleb128
Unexecuted instantiation: cfi.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_getcfi.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_get_units.c:__libdw_get_uleb128
Unexecuted instantiation: segment.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formaddr.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_lowpc.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_ranges.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_formblock.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_get_uleb128
Unexecuted instantiation: cie.c:__libdw_get_uleb128
Unexecuted instantiation: dwarf_highpc.c:__libdw_get_uleb128
Unexecuted instantiation: core-file.c:__libdw_get_uleb128
Unexecuted instantiation: linux-core-attach.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_get_uleb128
Unexecuted instantiation: link_map.c:__libdw_get_uleb128
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_get_uleb128
Unexecuted instantiation: derelocate.c:__libdw_get_uleb128
91
92
static inline uint64_t
93
__libdw_get_uleb128_unchecked (const unsigned char **addrp)
94
0
{
95
0
  uint64_t acc = 0;
96
97
  /* Unroll the first step to help the compiler optimize
98
     for the common single-byte case.  */
99
0
  get_uleb128_step (acc, *addrp, 0);
100
101
0
  const size_t max = len_leb128 (uint64_t);
102
0
  for (size_t i = 1; i < max; ++i)
103
0
    get_uleb128_step (acc, *addrp, i);
104
  /* Other implementations set VALUE to UINT_MAX in this
105
     case.  So we better do this as well.  */
106
0
  return UINT64_MAX;
107
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_end.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_error.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: offline.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: find-debuginfo.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: open.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: image-header.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_frame.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: frame_unwind.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: gzip.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: mips_retval.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_end.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_tag.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_error.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_attr.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_child.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formudata.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formref_die.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_siblingof.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_diecu.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_hasattr.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_bytesize.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_bitsize.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formflag.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdw_findcu.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdw_form.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdw_alloc.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: frame-cache.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_frame_register.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_getalt.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_setalt.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_peel_type.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_report_elf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: relocate.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: linux-proc-maps.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: libdwfl_crc32.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: elf-from-memory.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: linux-pid-attach.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_begin.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_nextcu.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_offdie.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formstring.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_haschildren.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formsdata.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formref.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_srclang.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_getlocation.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: fde.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: cfi.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_getcfi.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_get_units.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: segment.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formaddr.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_lowpc.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_ranges.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_formblock.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: cie.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwarf_highpc.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: core-file.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: linux-core-attach.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: link_map.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_get_uleb128_unchecked
Unexecuted instantiation: derelocate.c:__libdw_get_uleb128_unchecked
108
109
/* Note, addr needs to me smaller than end. */
110
0
#define get_uleb128(var, addr, end) ((var) = __libdw_get_uleb128 (&(addr), end))
111
0
#define get_uleb128_unchecked(var, addr) ((var) = __libdw_get_uleb128_unchecked (&(addr)))
112
113
/* The signed case is similar, but we sign-extend the result.  */
114
115
#define get_sleb128_step(var, addr, nth)              \
116
0
  do {                       \
117
0
    unsigned char __b = *(addr)++;                \
118
0
    (var) |= (__typeof (var)) (__b & 0x7f) << ((nth) * 7);          \
119
0
    if (likely ((__b & 0x80) == 0))               \
120
0
      {                       \
121
0
  if ((__b & 0x40) != 0)                 \
122
0
    (var) |= - ((__typeof (var)) 1 << (((nth) + 1) * 7));         \
123
0
  return (var);                   \
124
0
      }                       \
125
0
  } while (0)
126
127
static inline int64_t
128
__libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end)
129
0
{
130
0
  const size_t max = __libdw_max_len_sleb128 (*addrp, end);
131
0
  if (unlikely (max == 0))
132
0
    return INT64_MAX;
133
134
  /* Do the work in an unsigned type, but use implementation-defined
135
     behavior to cast to signed on return.  This avoids some undefined
136
     behavior when shifting.  */
137
0
  uint64_t acc = 0;
138
139
  /* Unroll the first step to help the compiler optimize
140
     for the common single-byte case.  */
141
0
  get_sleb128_step (acc, *addrp, 0);
142
143
0
  for (size_t i = 1; i < max; ++i)
144
0
    get_sleb128_step (acc, *addrp, i);
145
0
  if (*addrp == end)
146
0
    return INT64_MAX;
147
148
  /* There might be one extra byte.  */
149
0
  unsigned char b = **addrp;
150
0
  ++*addrp;
151
0
  if (likely ((b & 0x80) == 0))
152
0
    {
153
      /* We only need the low bit of the final byte, and as it is the
154
   sign bit, we don't need to do anything else here.  */
155
0
      acc |= ((__typeof (acc)) b) << 7 * max;
156
0
      return acc;
157
0
    }
158
159
  /* Other implementations set VALUE to INT_MAX in this
160
     case.  So we better do this as well.  */
161
0
  return INT64_MAX;
162
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_end.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_error.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module.c:__libdw_get_sleb128
Unexecuted instantiation: offline.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_get_sleb128
Unexecuted instantiation: find-debuginfo.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_get_sleb128
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_get_sleb128
Unexecuted instantiation: open.c:__libdw_get_sleb128
Unexecuted instantiation: image-header.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_frame.c:__libdw_get_sleb128
Unexecuted instantiation: frame_unwind.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_get_sleb128
Unexecuted instantiation: gzip.c:__libdw_get_sleb128
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_get_sleb128
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_get_sleb128
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_get_sleb128
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_get_sleb128
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_get_sleb128
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_get_sleb128
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_get_sleb128
Unexecuted instantiation: mips_retval.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_end.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_tag.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_error.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_attr.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_child.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formudata.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formref_die.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_siblingof.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_diecu.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_hasattr.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_bytesize.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_bitsize.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formflag.c:__libdw_get_sleb128
Unexecuted instantiation: libdw_findcu.c:__libdw_get_sleb128
Unexecuted instantiation: libdw_form.c:__libdw_get_sleb128
Unexecuted instantiation: libdw_alloc.c:__libdw_get_sleb128
Unexecuted instantiation: frame-cache.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_frame_register.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_getalt.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_setalt.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_peel_type.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_get_sleb128
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_report_elf.c:__libdw_get_sleb128
Unexecuted instantiation: relocate.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_get_sleb128
Unexecuted instantiation: linux-proc-maps.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_get_sleb128
Unexecuted instantiation: libdwfl_crc32.c:__libdw_get_sleb128
Unexecuted instantiation: elf-from-memory.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_get_sleb128
Unexecuted instantiation: linux-pid-attach.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_begin.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_nextcu.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_offdie.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formstring.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_haschildren.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formsdata.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formref.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_srclang.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_getlocation.c:__libdw_get_sleb128
Unexecuted instantiation: fde.c:__libdw_get_sleb128
Unexecuted instantiation: cfi.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_getcfi.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_get_units.c:__libdw_get_sleb128
Unexecuted instantiation: segment.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formaddr.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_lowpc.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_ranges.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_formblock.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_get_sleb128
Unexecuted instantiation: cie.c:__libdw_get_sleb128
Unexecuted instantiation: dwarf_highpc.c:__libdw_get_sleb128
Unexecuted instantiation: core-file.c:__libdw_get_sleb128
Unexecuted instantiation: linux-core-attach.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_get_sleb128
Unexecuted instantiation: link_map.c:__libdw_get_sleb128
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_get_sleb128
Unexecuted instantiation: derelocate.c:__libdw_get_sleb128
163
164
static inline int64_t
165
__libdw_get_sleb128_unchecked (const unsigned char **addrp)
166
0
{
167
  /* Do the work in an unsigned type, but use implementation-defined
168
     behavior to cast to signed on return.  This avoids some undefined
169
     behavior when shifting.  */
170
0
  uint64_t acc = 0;
171
172
  /* Unroll the first step to help the compiler optimize
173
     for the common single-byte case.  */
174
0
  get_sleb128_step (acc, *addrp, 0);
175
176
  /* Subtract one step, so we don't shift into sign bit.  */
177
0
  const size_t max = len_leb128 (int64_t) - 1;
178
0
  for (size_t i = 1; i < max; ++i)
179
0
    get_sleb128_step (acc, *addrp, i);
180
181
  /* There might be one extra byte.  */
182
0
  unsigned char b = **addrp;
183
0
  ++*addrp;
184
0
  if (likely ((b & 0x80) == 0))
185
0
    {
186
      /* We only need the low bit of the final byte, and as it is the
187
   sign bit, we don't need to do anything else here.  */
188
0
      acc |= ((__typeof (acc)) b) << 7 * max;
189
0
      return acc;
190
0
    }
191
192
  /* Other implementations set VALUE to INT_MAX in this
193
     case.  So we better do this as well.  */
194
0
  return INT64_MAX;
195
0
}
Unexecuted instantiation: dwfl_begin.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_end.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_error.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: offline.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module_getdwarf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: find-debuginfo.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdwfl_crc32_file.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: open.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: image-header.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_frame.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: frame_unwind.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_frame_pc.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_frame_regs.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: gzip.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwflst_process_tracker.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwflst_tracker_find_elf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwflst_tracker_elftab.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwflst_tracker_dwfltab.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: mips_retval.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_begin_elf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_end.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_tag.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_error.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_attr.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_abbrev_hash.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_attr_integrate.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_hasattr_integrate.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_child.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formudata.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formref_die.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_siblingof.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_diecu.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_hasattr.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_bytesize.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_bitsize.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formflag.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdw_findcu.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdw_form.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdw_alloc.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: frame-cache.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_frame_cfa.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_frame_register.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_cfi_addrframe.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_cfi_end.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_aggregate_size.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_getalt.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_setalt.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_peel_type.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_default_lower_bound.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdw_find_split_unit.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_report_elf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: relocate.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module_build_id.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_build_id_find_elf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: linux-proc-maps.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_addrmodule.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: libdwfl_crc32.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: elf-from-memory.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module_eh_cfi.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: linux-pid-attach.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_begin.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_getabbrev.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_nextcu.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_offdie.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formstring.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_haschildren.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formsdata.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formref.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_srclang.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_getlocation.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: fde.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: cfi.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_getcfi.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_getcfi_elf.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_get_units.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: segment.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formaddr.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_lowpc.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_ranges.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_formblock.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_next_cfi.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: cie.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwarf_highpc.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: core-file.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: linux-core-attach.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_segment_report_module.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: link_map.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: dwfl_module_report_build_id.c:__libdw_get_sleb128_unchecked
Unexecuted instantiation: derelocate.c:__libdw_get_sleb128_unchecked
196
197
0
#define get_sleb128(var, addr, end) ((var) = __libdw_get_sleb128 (&(addr), end))
198
0
#define get_sleb128_unchecked(var, addr) ((var) = __libdw_get_sleb128_unchecked (&(addr)))
199
200
201
/* We use simple memory access functions in case the hardware allows it.
202
   The caller has to make sure we don't have alias problems.  */
203
#if ALLOW_UNALIGNED
204
205
# define read_2ubyte_unaligned(Dbg, Addr) \
206
0
  (unlikely ((Dbg)->other_byte_order)                \
207
0
   ? bswap_16 (*((const uint16_t *) (Addr)))              \
208
0
   : *((const uint16_t *) (Addr)))
209
# define read_2sbyte_unaligned(Dbg, Addr) \
210
0
  (unlikely ((Dbg)->other_byte_order)                \
211
0
   ? (int16_t) bswap_16 (*((const int16_t *) (Addr)))            \
212
0
   : *((const int16_t *) (Addr)))
213
214
# define read_4ubyte_unaligned_noncvt(Addr) \
215
628k
   *((const uint32_t *) (Addr))
216
# define read_4ubyte_unaligned(Dbg, Addr) \
217
0
  (unlikely ((Dbg)->other_byte_order)                \
218
0
   ? bswap_32 (*((const uint32_t *) (Addr)))              \
219
0
   : *((const uint32_t *) (Addr)))
220
# define read_4sbyte_unaligned(Dbg, Addr) \
221
0
  (unlikely ((Dbg)->other_byte_order)                \
222
0
   ? (int32_t) bswap_32 (*((const int32_t *) (Addr)))            \
223
0
   : *((const int32_t *) (Addr)))
224
225
# define read_8ubyte_unaligned_noncvt(Addr) \
226
358k
   *((const uint64_t *) (Addr))
227
# define read_8ubyte_unaligned(Dbg, Addr) \
228
0
  (unlikely ((Dbg)->other_byte_order)                \
229
0
   ? bswap_64 (*((const uint64_t *) (Addr)))              \
230
0
   : *((const uint64_t *) (Addr)))
231
# define read_8sbyte_unaligned(Dbg, Addr) \
232
0
  (unlikely ((Dbg)->other_byte_order)                \
233
0
   ? (int64_t) bswap_64 (*((const int64_t *) (Addr)))            \
234
0
   : *((const int64_t *) (Addr)))
235
236
#else
237
238
union unaligned
239
  {
240
    void *p;
241
    uint16_t u2;
242
    uint32_t u4;
243
    uint64_t u8;
244
    int16_t s2;
245
    int32_t s4;
246
    int64_t s8;
247
  } attribute_packed;
248
249
# define read_2ubyte_unaligned(Dbg, Addr) \
250
  read_2ubyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
251
# define read_2sbyte_unaligned(Dbg, Addr) \
252
  read_2sbyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
253
# define read_4ubyte_unaligned(Dbg, Addr) \
254
  read_4ubyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
255
# define read_4sbyte_unaligned(Dbg, Addr) \
256
  read_4sbyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
257
# define read_8ubyte_unaligned(Dbg, Addr) \
258
  read_8ubyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
259
# define read_8sbyte_unaligned(Dbg, Addr) \
260
  read_8sbyte_unaligned_1 ((Dbg)->other_byte_order, (Addr))
261
262
static inline uint16_t
263
read_2ubyte_unaligned_1 (bool other_byte_order, const void *p)
264
{
265
  const union unaligned *up = p;
266
  if (unlikely (other_byte_order))
267
    return bswap_16 (up->u2);
268
  return up->u2;
269
}
270
static inline int16_t
271
read_2sbyte_unaligned_1 (bool other_byte_order, const void *p)
272
{
273
  const union unaligned *up = p;
274
  if (unlikely (other_byte_order))
275
    return (int16_t) bswap_16 (up->u2);
276
  return up->s2;
277
}
278
279
static inline uint32_t
280
read_4ubyte_unaligned_noncvt (const void *p)
281
{
282
  const union unaligned *up = p;
283
  return up->u4;
284
}
285
static inline uint32_t
286
read_4ubyte_unaligned_1 (bool other_byte_order, const void *p)
287
{
288
  const union unaligned *up = p;
289
  if (unlikely (other_byte_order))
290
    return bswap_32 (up->u4);
291
  return up->u4;
292
}
293
static inline int32_t
294
read_4sbyte_unaligned_1 (bool other_byte_order, const void *p)
295
{
296
  const union unaligned *up = p;
297
  if (unlikely (other_byte_order))
298
    return (int32_t) bswap_32 (up->u4);
299
  return up->s4;
300
}
301
302
static inline uint64_t
303
read_8ubyte_unaligned_noncvt (const void *p)
304
{
305
  const union unaligned *up = p;
306
  return up->u8;
307
}
308
static inline uint64_t
309
read_8ubyte_unaligned_1 (bool other_byte_order, const void *p)
310
{
311
  const union unaligned *up = p;
312
  if (unlikely (other_byte_order))
313
    return bswap_64 (up->u8);
314
  return up->u8;
315
}
316
static inline int64_t
317
read_8sbyte_unaligned_1 (bool other_byte_order, const void *p)
318
{
319
  const union unaligned *up = p;
320
  if (unlikely (other_byte_order))
321
    return (int64_t) bswap_64 (up->u8);
322
  return up->s8;
323
}
324
325
#endif  /* allow unaligned */
326
327
328
#define read_2ubyte_unaligned_inc(Dbg, Addr) \
329
0
  ({ uint16_t t_ = read_2ubyte_unaligned (Dbg, Addr);           \
330
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 2);         \
331
0
     t_; })
332
#define read_2sbyte_unaligned_inc(Dbg, Addr) \
333
0
  ({ int16_t t_ = read_2sbyte_unaligned (Dbg, Addr);           \
334
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 2);         \
335
0
     t_; })
336
337
#define read_4ubyte_unaligned_inc(Dbg, Addr) \
338
0
  ({ uint32_t t_ = read_4ubyte_unaligned (Dbg, Addr);           \
339
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 4);         \
340
0
     t_; })
341
#define read_4sbyte_unaligned_inc(Dbg, Addr) \
342
0
  ({ int32_t t_ = read_4sbyte_unaligned (Dbg, Addr);           \
343
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 4);         \
344
0
     t_; })
345
346
#define read_8ubyte_unaligned_inc(Dbg, Addr) \
347
0
  ({ uint64_t t_ = read_8ubyte_unaligned (Dbg, Addr);           \
348
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 8);         \
349
0
     t_; })
350
#define read_8sbyte_unaligned_inc(Dbg, Addr) \
351
0
  ({ int64_t t_ = read_8sbyte_unaligned (Dbg, Addr);           \
352
0
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 8);         \
353
0
     t_; })
354
355
/* 3ubyte reads are only used for DW_FORM_addrx3 and DW_FORM_strx3.
356
   And are probably very rare.  They are not optimized.  They are
357
   handled as if reading a 4byte value with the first (for big endian)
358
   or last (for little endian) byte zero.  */
359
360
static inline int
361
file_byte_order (bool other_byte_order)
362
0
{
363
0
#if BYTE_ORDER == LITTLE_ENDIAN
364
0
  return other_byte_order ? BIG_ENDIAN : LITTLE_ENDIAN;
365
#else
366
  return other_byte_order ? LITTLE_ENDIAN : BIG_ENDIAN;
367
#endif
368
0
}
Unexecuted instantiation: dwfl_begin.c:file_byte_order
Unexecuted instantiation: dwfl_end.c:file_byte_order
Unexecuted instantiation: dwfl_error.c:file_byte_order
Unexecuted instantiation: dwfl_module.c:file_byte_order
Unexecuted instantiation: offline.c:file_byte_order
Unexecuted instantiation: dwfl_module_getdwarf.c:file_byte_order
Unexecuted instantiation: find-debuginfo.c:file_byte_order
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:file_byte_order
Unexecuted instantiation: libdwfl_crc32_file.c:file_byte_order
Unexecuted instantiation: open.c:file_byte_order
Unexecuted instantiation: image-header.c:file_byte_order
Unexecuted instantiation: dwfl_frame.c:file_byte_order
Unexecuted instantiation: frame_unwind.c:file_byte_order
Unexecuted instantiation: dwfl_frame_pc.c:file_byte_order
Unexecuted instantiation: dwfl_frame_regs.c:file_byte_order
Unexecuted instantiation: gzip.c:file_byte_order
Unexecuted instantiation: dwflst_process_tracker.c:file_byte_order
Unexecuted instantiation: dwflst_tracker_find_elf.c:file_byte_order
Unexecuted instantiation: dwflst_tracker_elftab.c:file_byte_order
Unexecuted instantiation: dwflst_tracker_dwfltab.c:file_byte_order
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:file_byte_order
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:file_byte_order
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:file_byte_order
Unexecuted instantiation: mips_retval.c:file_byte_order
Unexecuted instantiation: dwarf_begin_elf.c:file_byte_order
Unexecuted instantiation: dwarf_end.c:file_byte_order
Unexecuted instantiation: dwarf_tag.c:file_byte_order
Unexecuted instantiation: dwarf_error.c:file_byte_order
Unexecuted instantiation: dwarf_attr.c:file_byte_order
Unexecuted instantiation: dwarf_abbrev_hash.c:file_byte_order
Unexecuted instantiation: dwarf_attr_integrate.c:file_byte_order
Unexecuted instantiation: dwarf_hasattr_integrate.c:file_byte_order
Unexecuted instantiation: dwarf_child.c:file_byte_order
Unexecuted instantiation: dwarf_formudata.c:file_byte_order
Unexecuted instantiation: dwarf_formref_die.c:file_byte_order
Unexecuted instantiation: dwarf_siblingof.c:file_byte_order
Unexecuted instantiation: dwarf_diecu.c:file_byte_order
Unexecuted instantiation: dwarf_hasattr.c:file_byte_order
Unexecuted instantiation: dwarf_bytesize.c:file_byte_order
Unexecuted instantiation: dwarf_bitsize.c:file_byte_order
Unexecuted instantiation: dwarf_formflag.c:file_byte_order
Unexecuted instantiation: libdw_findcu.c:file_byte_order
Unexecuted instantiation: libdw_form.c:file_byte_order
Unexecuted instantiation: libdw_alloc.c:file_byte_order
Unexecuted instantiation: frame-cache.c:file_byte_order
Unexecuted instantiation: dwarf_frame_cfa.c:file_byte_order
Unexecuted instantiation: dwarf_frame_register.c:file_byte_order
Unexecuted instantiation: dwarf_cfi_addrframe.c:file_byte_order
Unexecuted instantiation: dwarf_cfi_end.c:file_byte_order
Unexecuted instantiation: dwarf_aggregate_size.c:file_byte_order
Unexecuted instantiation: dwarf_getalt.c:file_byte_order
Unexecuted instantiation: dwarf_setalt.c:file_byte_order
Unexecuted instantiation: dwarf_peel_type.c:file_byte_order
Unexecuted instantiation: dwarf_default_lower_bound.c:file_byte_order
Unexecuted instantiation: libdw_find_split_unit.c:file_byte_order
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:file_byte_order
Unexecuted instantiation: dwfl_report_elf.c:file_byte_order
Unexecuted instantiation: relocate.c:file_byte_order
Unexecuted instantiation: dwfl_module_build_id.c:file_byte_order
Unexecuted instantiation: dwfl_build_id_find_elf.c:file_byte_order
Unexecuted instantiation: linux-proc-maps.c:file_byte_order
Unexecuted instantiation: dwfl_addrmodule.c:file_byte_order
Unexecuted instantiation: libdwfl_crc32.c:file_byte_order
Unexecuted instantiation: elf-from-memory.c:file_byte_order
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:file_byte_order
Unexecuted instantiation: dwfl_module_eh_cfi.c:file_byte_order
Unexecuted instantiation: linux-pid-attach.c:file_byte_order
Unexecuted instantiation: dwarf_begin.c:file_byte_order
Unexecuted instantiation: dwarf_getabbrev.c:file_byte_order
Unexecuted instantiation: dwarf_nextcu.c:file_byte_order
Unexecuted instantiation: dwarf_offdie.c:file_byte_order
Unexecuted instantiation: dwarf_formstring.c:file_byte_order
Unexecuted instantiation: dwarf_haschildren.c:file_byte_order
Unexecuted instantiation: dwarf_formsdata.c:file_byte_order
Unexecuted instantiation: dwarf_formref.c:file_byte_order
Unexecuted instantiation: dwarf_srclang.c:file_byte_order
Unexecuted instantiation: dwarf_getlocation.c:file_byte_order
Unexecuted instantiation: fde.c:file_byte_order
Unexecuted instantiation: cfi.c:file_byte_order
Unexecuted instantiation: dwarf_getcfi.c:file_byte_order
Unexecuted instantiation: dwarf_getcfi_elf.c:file_byte_order
Unexecuted instantiation: dwarf_get_units.c:file_byte_order
Unexecuted instantiation: segment.c:file_byte_order
Unexecuted instantiation: dwarf_formaddr.c:file_byte_order
Unexecuted instantiation: dwarf_lowpc.c:file_byte_order
Unexecuted instantiation: dwarf_ranges.c:file_byte_order
Unexecuted instantiation: dwarf_formblock.c:file_byte_order
Unexecuted instantiation: dwarf_next_cfi.c:file_byte_order
Unexecuted instantiation: cie.c:file_byte_order
Unexecuted instantiation: dwarf_highpc.c:file_byte_order
Unexecuted instantiation: core-file.c:file_byte_order
Unexecuted instantiation: linux-core-attach.c:file_byte_order
Unexecuted instantiation: dwfl_segment_report_module.c:file_byte_order
Unexecuted instantiation: link_map.c:file_byte_order
Unexecuted instantiation: dwfl_module_report_build_id.c:file_byte_order
Unexecuted instantiation: derelocate.c:file_byte_order
369
370
static inline uint32_t
371
read_3ubyte_unaligned (Dwarf *dbg, const unsigned char *p)
372
0
{
373
0
  union
374
0
  {
375
0
    uint32_t u4;
376
0
    unsigned char c[4];
377
0
  } d;
378
0
  bool other_byte_order = dbg->other_byte_order;
379
380
0
  if (file_byte_order (other_byte_order) == BIG_ENDIAN)
381
0
    {
382
0
      d.c[0] = 0x00;
383
0
      d.c[1] = p[0];
384
0
      d.c[2] = p[1];
385
0
      d.c[3] = p[2];
386
0
    }
387
0
  else
388
0
    {
389
0
      d.c[0] = p[0];
390
0
      d.c[1] = p[1];
391
0
      d.c[2] = p[2];
392
0
      d.c[3] = 0x00;
393
0
    }
394
395
0
  if (other_byte_order)
396
0
    return bswap_32 (d.u4);
397
0
  else
398
0
    return d.u4;
399
0
}
Unexecuted instantiation: dwfl_begin.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_end.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_error.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module.c:read_3ubyte_unaligned
Unexecuted instantiation: offline.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module_getdwarf.c:read_3ubyte_unaligned
Unexecuted instantiation: find-debuginfo.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_build_id_find_debuginfo.c:read_3ubyte_unaligned
Unexecuted instantiation: libdwfl_crc32_file.c:read_3ubyte_unaligned
Unexecuted instantiation: open.c:read_3ubyte_unaligned
Unexecuted instantiation: image-header.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_frame.c:read_3ubyte_unaligned
Unexecuted instantiation: frame_unwind.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_frame_pc.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_frame_regs.c:read_3ubyte_unaligned
Unexecuted instantiation: gzip.c:read_3ubyte_unaligned
Unexecuted instantiation: dwflst_process_tracker.c:read_3ubyte_unaligned
Unexecuted instantiation: dwflst_tracker_find_elf.c:read_3ubyte_unaligned
Unexecuted instantiation: dwflst_tracker_elftab.c:read_3ubyte_unaligned
Unexecuted instantiation: dwflst_tracker_dwfltab.c:read_3ubyte_unaligned
Unexecuted instantiation: dwelf_elf_gnu_debuglink.c:read_3ubyte_unaligned
Unexecuted instantiation: dwelf_dwarf_gnu_debugaltlink.c:read_3ubyte_unaligned
Unexecuted instantiation: dwelf_elf_gnu_build_id.c:read_3ubyte_unaligned
Unexecuted instantiation: mips_retval.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_begin_elf.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_end.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_tag.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_error.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_attr.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_abbrev_hash.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_attr_integrate.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_hasattr_integrate.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_child.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formudata.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formref_die.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_siblingof.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_diecu.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_hasattr.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_bytesize.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_bitsize.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formflag.c:read_3ubyte_unaligned
Unexecuted instantiation: libdw_findcu.c:read_3ubyte_unaligned
Unexecuted instantiation: libdw_form.c:read_3ubyte_unaligned
Unexecuted instantiation: libdw_alloc.c:read_3ubyte_unaligned
Unexecuted instantiation: frame-cache.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_frame_cfa.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_frame_register.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_cfi_addrframe.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_cfi_end.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_aggregate_size.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_getalt.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_setalt.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_peel_type.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_default_lower_bound.c:read_3ubyte_unaligned
Unexecuted instantiation: libdw_find_split_unit.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_cu_dwp_section_info.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_report_elf.c:read_3ubyte_unaligned
Unexecuted instantiation: relocate.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module_build_id.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_build_id_find_elf.c:read_3ubyte_unaligned
Unexecuted instantiation: linux-proc-maps.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_addrmodule.c:read_3ubyte_unaligned
Unexecuted instantiation: libdwfl_crc32.c:read_3ubyte_unaligned
Unexecuted instantiation: elf-from-memory.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module_dwarf_cfi.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module_eh_cfi.c:read_3ubyte_unaligned
Unexecuted instantiation: linux-pid-attach.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_begin.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_getabbrev.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_nextcu.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_offdie.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formstring.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_haschildren.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formsdata.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formref.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_srclang.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_getlocation.c:read_3ubyte_unaligned
Unexecuted instantiation: fde.c:read_3ubyte_unaligned
Unexecuted instantiation: cfi.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_getcfi.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_getcfi_elf.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_get_units.c:read_3ubyte_unaligned
Unexecuted instantiation: segment.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formaddr.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_lowpc.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_ranges.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_formblock.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_next_cfi.c:read_3ubyte_unaligned
Unexecuted instantiation: cie.c:read_3ubyte_unaligned
Unexecuted instantiation: dwarf_highpc.c:read_3ubyte_unaligned
Unexecuted instantiation: core-file.c:read_3ubyte_unaligned
Unexecuted instantiation: linux-core-attach.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_segment_report_module.c:read_3ubyte_unaligned
Unexecuted instantiation: link_map.c:read_3ubyte_unaligned
Unexecuted instantiation: dwfl_module_report_build_id.c:read_3ubyte_unaligned
Unexecuted instantiation: derelocate.c:read_3ubyte_unaligned
400
401
402
#define read_3ubyte_unaligned_inc(Dbg, Addr) \
403
  ({ uint32_t t_ = read_3ubyte_unaligned (Dbg, Addr);           \
404
     Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 3);         \
405
     t_; })
406
407
#define read_addr_unaligned_inc(Nbytes, Dbg, Addr)      \
408
  (assert ((Nbytes) == 4 || (Nbytes) == 8),       \
409
    ((Nbytes) == 4 ? read_4ubyte_unaligned_inc (Dbg, Addr)    \
410
     : read_8ubyte_unaligned_inc (Dbg, Addr)))
411
412
#endif  /* memory-access.h */