If you add a binary to lldb and do target modules load -s slide -f name multiple times, the old entries are not cleared from the SectionLoadList's addr->section map, leading to confusing lldb behavior.
SectionLoadList has a section-to-address map (m_sect_to_addr) and an address to section map (m_addr_to_sect) that are registered with the Target. SectionLoadList::SetSectionLoadAddress updates the entry in the m_sect_to_addr map if it exists, or adds it. And it adds a new entry to m_addr_to_sect as long as there isn't a section at that address already. But it never removes the old entry from m_addr_to_sect.
This results in each section having multiple entries, with each the load addresses that had been set previously, so load address -> file address translation behaves very oddly.
Is it worth checking here that the value of &first has actually changed, or is sliding in general tested elsewhere?