-typename ELFFile<ELFT>::Elf_Dyn_Iter
-ELFFile<ELFT>::dynamic_table_end(bool NULLEnd) const {
- if (!DynamicRegion.Addr)
- return Elf_Dyn_Iter(0, nullptr);
- Elf_Dyn_Iter Ret(DynamicRegion.EntSize,
- (const char *)DynamicRegion.Addr + DynamicRegion.Size);
-
- if (NULLEnd) {
- Elf_Dyn_Iter Start = dynamic_table_begin();
- while (Start != Ret && Start->getTag() != ELF::DT_NULL)
- ++Start;
-
- // Include the DT_NULL.
- if (Start != Ret)
- ++Start;
- Ret = Start;
- }
- return Ret;
+const typename ELFFile<ELFT>::Elf_Dyn *
+ELFFile<ELFT>::dynamic_table_end() const {
+ uint64_t Size = DynamicRegion.Size;
+ if (Size % sizeof(Elf_Dyn))
+ report_fatal_error("Invalid dynamic table size");
+
+ return dynamic_table_begin() + Size / sizeof(Elf_Dyn);