Status: Development, except where otherwise specified
This document defines the required attributes of Mapping
messages.
A message representing a Mapping
MUST have at least one of the following
attributes:
process.executable.build_id.gnu
process.executable.build_id.go
process.executable.build_id.profiling
If possible all the above listed attributes SHOULD be present in a Mapping
. To promote interoperability, it is RECOMMENDED for process.executable.build_id.profiling
to be present in every Mapping
.
In some environments GNU and/or Go build_id values are stripped or not usable - for example Alpine Linux which is often used as a base for Docker environments. For that reason and to promote interoperability, a deterministic build_id generation algorithm that hashes the first and last page of a file together with its length is defined as:
TRUNC(SHA256(first4k, last4k, fileLen))
where TRUNC
returns the first 16bytes of the resulting digest, input to SHA256
is passed left to right, first4k
, last4k
are the first and last 4096 bytes of the file (may overlap) and fileLen
is the 8byte big-endian serialization of the file length.