Commit b87d7a5c authored by David Crawshaw's avatar David Crawshaw

cmd/link: give RelocVariant a type, document Reloc

Change-Id: Ib20263405a08674b5e160295fc965da4c8b54b34
Reviewed-on: https://go-review.googlesource.com/29248Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent 6007c8c7
...@@ -132,16 +132,27 @@ func (a *Attribute) Set(flag Attribute, value bool) { ...@@ -132,16 +132,27 @@ func (a *Attribute) Set(flag Attribute, value bool) {
} }
} }
// Reloc is a relocation.
//
// The typical Reloc rewrites part of a symbol at offset Off to address Sym.
// A Reloc is stored in a slice on the Symbol it rewrites.
//
// Relocations are generated by the compiler as the type
// cmd/internal/obj.Reloc, which is encoded into the object file wire
// format and decoded by the linker into this type. A separate type is
// used to hold linker-specific state about the relocation.
//
// Some relocations are created by cmd/link.
type Reloc struct { type Reloc struct {
Off int32 Off int32 // offset to rewrite
Siz uint8 Siz uint8 // number of bytes to rewrite, 1, 2, or 4
Done uint8 Done uint8 // set to 1 when relocation is complete
Type obj.RelocType Variant RelocVariant // variation on Type
Variant int32 Type obj.RelocType // the relocation type
Add int64 Add int64 // addend
Xadd int64 Xadd int64 // addend passed to external linker
Sym *Symbol Sym *Symbol // symbol the relocation addresses
Xsym *Symbol Xsym *Symbol // symbol passed to external linker
} }
type Auto struct { type Auto struct {
...@@ -251,9 +262,11 @@ type Pciter struct { ...@@ -251,9 +262,11 @@ type Pciter struct {
done int done int
} }
// Reloc.variant // RelocVariant is a linker-internal variation on a relocation.
type RelocVariant uint8
const ( const (
RV_NONE = iota RV_NONE RelocVariant = iota
RV_POWER_LO RV_POWER_LO
RV_POWER_HI RV_POWER_HI
RV_POWER_HA RV_POWER_HA
...@@ -264,6 +277,6 @@ const ( ...@@ -264,6 +277,6 @@ const (
// divided by 2. // divided by 2.
RV_390_DBL RV_390_DBL
RV_CHECK_OVERFLOW = 1 << 8 RV_CHECK_OVERFLOW RelocVariant = 1 << 7
RV_TYPE_MASK = RV_CHECK_OVERFLOW - 1 RV_TYPE_MASK RelocVariant = RV_CHECK_OVERFLOW - 1
) )
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment