The bug was introduced when the AddressRange class was no longer able to modify the End address directly and the entire range of the .text address range that contained the trailing empty symbol was replaced. There was no unit test for this, so it wasn't caught. I fixed the bug and added a unit test for it.
The effects of this bug are serious as the AddressOffsetSize in the header would be incorrectly calculated and an invalid GSYM would be created.
I would suggest to leave AddressRange to be immutable.
It might prevent from side effects if borders of range would be changed.
If you think it is still better to have setStart/setEnd then we need to add assertions:
assert(Start <= End);