Correct the function_headers pointer after swapping in a program.

When a program is swapped out, all pointers within the program block
are saved as relative offsets in the program. When it's swapped
back in then they are replaced by pointers to the new program block.
This was missing for the .function_headers entry, resulting in
a dangling pointer.