Cameron Diaz makes first red carpet appearance in five years