Fix normalization of explicit Clang header paths (#4739)
**What type of PR is this?**
Bug fix
**What does this PR do? Why is it needed?**
cgo's compiler path normalization misses `-internal-externc-isystem` and
`-stdlib++-isystem`, leaving their relative header paths unresolved when
the Go build changes directories. With an explicit Clang C-header
installation, building `runtime/cgo` consequently fails with `fatal
error: 'stdlib.h' file not found`.
Add both options to `cgoAbsEnvFlags`. Also skip `-Xpreprocessor`, like
the existing `-Xclang` handling, while awaiting a path operand.
Otherwise `-Xpreprocessor -internal-isystem -Xpreprocessor
relative/path` rewrites the forwarding flag itself and leaves the path
untouched. The joined `-stdlib++-isystemrelative/path` spelling remains
joined after normalization.
**Which issues(s) does this PR fix?**
Found while testing explicit Clang header components in hermetic-llvm,
following hermeticbuild/hermetic-llvm#806.
**Other notes for review**
Four new `TestTransformArgs` cases fail against upstream
`090bea98a70216066dc34b4c6731cd05b23ade7a` and pass with this change.
`go test env.go env_test.go flags.go` passes with Go 1.27.1.
`bazel test //go/tools/builders:env_test` also [passes on macOS
ARM64](https://app.buildbuddy.io/invocation/03a2eca4-a11e-4b15-b50d-cecc6e525759).
The same patch applied to rules_go 0.62.0 fixes the actual GNU/musl cgo
builds in hermetic-llvm: [all 19 root integration tests plus the
rules_go env test
pass](https://app.buildbuddy.io/invocation/f37fc00c-ce2e-48e4-8782-efa4c46e0998).
The unpatched integration failed while building `runtime/cgo`.
The local upstream `bazel test //...` run stopped when Bazel's
`generate-xml.sh` test runner segfaulted on
`//tests/core/starlark:sdk_tests_test_0` under macOS. The full suite has
not passed locally.
2 files changed