code: func (m *Mapping) key() mappingKey {
  	// Normalize addresses to handle address space randomization.
  	// Round up to next 4K boundary to avoid minor discrepancies.
  	const mapsizeRounding = 0x1000
  
  	size := m.Limit - m.Start
  	size = size + mapsizeRounding - 1
  	size = size - (size % mapsizeRounding)
  	key := mappingKey{
  		size:   size,
  		offset: m.Offset,
  	}
  
  	switch {
  	case m.BuildID != "":
  		key.buildIDOrFile = m.BuildID
  	case m.File != "":
  		key.buildIDOrFile = m.File
  	default:
  		// A mapping containing neither build ID nor file name is a fake mapping. A
  		// key with empty buildIDOrFile is used for fake mappings so that they are
  		// treated as the same mapping during merging.
  	}
  	return key
  }
docs: // key generates encoded strings of Mapping to be used as a key for
  // maps.