def _get_entries(self):
        """ Populate self.entries with ARangeEntry tuples for each range of addresses
        """
        self.stream.seek(0)
        entries = []
        offset = 0

        # one loop == one "set" == one CU
        while offset < self.size :
            aranges_header = struct_parse(self.structs.Dwarf_aranges_header, 
                self.stream, offset)
            addr_size = self._get_addr_size_struct(aranges_header["address_size"])

            # No segmentation
            if aranges_header["segment_size"] == 0:
                # pad to nearest multiple of tuple size
                tuple_size = aranges_header["address_size"] * 2 
                fp = self.stream.tell()
                seek_to = int(math.ceil(fp/float(tuple_size)) * tuple_size)
                self.stream.seek(seek_to)

                # entries in this set/CU
                addr = struct_parse(addr_size('addr'), self.stream)
                length = struct_parse(addr_size('length'), self.stream)
                while addr != 0 or length != 0:
                    # 'begin_addr length info_offset version address_size segment_size'
                    entries.append(
                        ARangeEntry(begin_addr=addr, 
                            length=length, 
                            info_offset=aranges_header["debug_info_offset"],
                            unit_length=aranges_header["unit_length"],
                            version=aranges_header["version"],
                            address_size=aranges_header["address_size"],
                            segment_size=aranges_header["segment_size"]))
                    addr = struct_parse(addr_size('addr'), self.stream)
                    length = struct_parse(addr_size('length'), self.stream)
            # Segmentation exists in executable
            elif aranges_header["segment_size"] != 0:
                raise NotImplementedError("Segmentation not implemented")

            offset = (offset 
                + aranges_header.unit_length 
                + self.structs.initial_length_field_size())

        return entries
 Populate self.entries with ARangeEntry tuples for each range of addresses
        
product/runtime/src/main/python/java/_vendor/elftools/dwarf/aranges.py