Skip to content
Snippets Groups Projects
  • Than McIntosh's avatar
    db48d458
    [dev.link] cmd/link: handle multiple levels of overwrite · db48d458
    Than McIntosh authored
    Revamp the way that symbol overwrites are handled to deal with symbols
    that are overwritten more than once (such as "_cgo_mmap"). The
    scenario here is that a symbol can be overwritten twice, once during
    preload, and then again when host objects are read during internal
    linking. This can result in a situation where we have two entries in
    the overwrite map, from X -> Y and then from Y -> Z. Rather than
    search the overwrite map when adding new entries, add a helper routine
    for querying the map that catches this situation and fixes it up.
    
    Also with this patch is a couple of tweaks to the loader.Dump method
    to insure that it can dump the entire global index space without
    crashing due to odd overwrites (as in the scenario above).
    
    Change-Id: Ib6c8a0e03e92fc2b57318001711b501eeaf12249
    Reviewed-on: https://go-review.googlesource.com/c/go/+/212098
    
    
    Run-TryBot: Than McIntosh <thanm@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
    db48d458
    History
    [dev.link] cmd/link: handle multiple levels of overwrite
    Than McIntosh authored
    Revamp the way that symbol overwrites are handled to deal with symbols
    that are overwritten more than once (such as "_cgo_mmap"). The
    scenario here is that a symbol can be overwritten twice, once during
    preload, and then again when host objects are read during internal
    linking. This can result in a situation where we have two entries in
    the overwrite map, from X -> Y and then from Y -> Z. Rather than
    search the overwrite map when adding new entries, add a helper routine
    for querying the map that catches this situation and fixes it up.
    
    Also with this patch is a couple of tweaks to the loader.Dump method
    to insure that it can dump the entire global index space without
    crashing due to odd overwrites (as in the scenario above).
    
    Change-Id: Ib6c8a0e03e92fc2b57318001711b501eeaf12249
    Reviewed-on: https://go-review.googlesource.com/c/go/+/212098
    
    
    Run-TryBot: Than McIntosh <thanm@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.