Skip to content

cmd/go: make cache keys for libraries in GOROOT insensitive to -trimpath #57346

@bcmills

Description

@bcmills

In CL 380915 we observed that libraries in GOROOT contain the literal string $GOROOT instead of their absolute paths, even when -trimpath is not set.

As a result, we should (theoretically) compile the same bytes for those libraries regardless of whether -trimpath is set. We can therefore omit -trimpath from the cache key, allowing object files already in the cache to be reused in more cases.

We should add a script test that verifies that the library object files really don't depend on the -trimpath flag, make the flags passed to the compiler ignore cfg.BuildTrimpath for those libraries, and then update cmd/go/internal/work to omit it from the cache key.

(Note that we cannot omit it from the cache key for executables, since those are stamped with the actual GOROOT or GOROOT_FINAL during linking.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    GoCommandcmd/goNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.help wanted

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions