| 500 | |
| 501 | @memoize |
| 502 | def get_segments(self): |
| 503 | segments = [] |
| 504 | data_section = self.get_section(SecType.DATA) |
| 505 | self.seek(data_section.offset) |
| 506 | num_segments = self.read_uleb() |
| 507 | for _ in range(num_segments): |
| 508 | flags = self.read_uleb() |
| 509 | if (flags & SEG_PASSIVE): |
| 510 | init = None |
| 511 | else: |
| 512 | init = self.read_init() |
| 513 | size = self.read_uleb() |
| 514 | offset = self.tell() |
| 515 | segments.append(DataSegment(flags, init, offset, size)) |
| 516 | self.seek(offset + size) |
| 517 | return segments |
| 518 | |
| 519 | @memoize |
| 520 | def get_tables(self): |