It seems possible that two runs of eg. gcc at different levels of
optimisation on the same files assigns different IDs to the same files.
To circumvent this, we use the file paths instead of file IDs.
It is possible, eg. for the end-of-data debug_line tag, that the address
does not correspond to an instruction address but eg. the last address
of .text. To avoid an error here, we use as a bound address the greater
known address below the given bound instead.