rather than relying on a trick that happens to work for the current relocation schemes. Also add some comments and improve variable naming.
warning that gcc generates at -O2 and higher.