GCC 5.1 includes -fsanitize=nonnull-attribute in -fsanitize=undefined.
This showed a couple of places where we were passing a NULL argument
to functions not expecting them. Even though these functions might not
actually use the argument (if for example the size argument of a buffer
is zero), gcc might use the information to assume the passed in variables
are always nonnull, which might cause unexpected optimizations.
libdwfl: Check file_name is not NULL before calling canonicalize_file_name.
libelf: Don't call mempcpy with possible NULL d_buf.
libelf: Don't call memmove with possible NULL buffer.
elfcmp: Don't call memcmp with possible NULL d_buf.