]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: add array append version of methods
authorDavid Crawshaw <crawshaw@golang.org>
Mon, 29 Feb 2016 21:40:23 +0000 (12:40 -0900)
committerDavid Crawshaw <crawshaw@golang.org>
Wed, 2 Mar 2016 12:19:07 +0000 (12:19 +0000)
Used by DWARF writer changes in a followup CL.

Change-Id: I6ec40dcfeaba909d9b8f6cf2603bc5b85c1fa873
Reviewed-on: https://go-review.googlesource.com/20073
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/link/internal/amd64/obj.go
src/cmd/link/internal/arm/obj.go
src/cmd/link/internal/arm64/obj.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/symtab.go
src/cmd/link/internal/mips64/obj.go
src/cmd/link/internal/ppc64/obj.go
src/cmd/link/internal/x86/obj.go

index 1aa4422ed94994857cbe39fe0b25dc432927a8b0..0167b6990004a87ed0798558c0fcdeaf6478d1e6 100644 (file)
@@ -74,6 +74,9 @@ func linkarchinit() {
        ld.Thearch.Lput = ld.Lputl
        ld.Thearch.Wput = ld.Wputl
        ld.Thearch.Vput = ld.Vputl
+       ld.Thearch.Append16 = ld.Append16l
+       ld.Thearch.Append32 = ld.Append32l
+       ld.Thearch.Append64 = ld.Append64l
 
        ld.Thearch.Linuxdynld = "/lib64/ld-linux-x86-64.so.2"
        ld.Thearch.Freebsddynld = "/libexec/ld-elf.so.1"
index 29a58c6fd27083d57e63dc768b2081d8829ff5bc..1a83c3ba4c5b5aeb5ac3e80aa3cdcc487cb94186 100644 (file)
@@ -70,6 +70,9 @@ func linkarchinit() {
        ld.Thearch.Lput = ld.Lputl
        ld.Thearch.Wput = ld.Wputl
        ld.Thearch.Vput = ld.Vputl
+       ld.Thearch.Append16 = ld.Append16l
+       ld.Thearch.Append32 = ld.Append32l
+       ld.Thearch.Append64 = ld.Append64l
 
        ld.Thearch.Linuxdynld = "/lib/ld-linux.so.3" // 2 for OABI, 3 for EABI
        ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"
index ae121c28bf309ef17056e307c7c465943008ca68..762809fd3091a82ab65b17f00fe1bc03cec4dc40 100644 (file)
@@ -70,6 +70,9 @@ func linkarchinit() {
        ld.Thearch.Lput = ld.Lputl
        ld.Thearch.Wput = ld.Wputl
        ld.Thearch.Vput = ld.Vputl
+       ld.Thearch.Append16 = ld.Append16l
+       ld.Thearch.Append32 = ld.Append32l
+       ld.Thearch.Append64 = ld.Append64l
 
        ld.Thearch.Linuxdynld = "/lib/ld-linux-aarch64.so.1"
 
index d078069f4a13f8eeae1dbc88df5cbe102016dfe9..a9f60348ed4b1aa8db7d35321baccdbb2267574f 100644 (file)
@@ -107,9 +107,12 @@ type Arch struct {
        Gentext          func()
        Machoreloc1      func(*Reloc, int64) int
        PEreloc1         func(*Reloc, int64) bool
-       Lput             func(uint32)
        Wput             func(uint16)
+       Lput             func(uint32)
        Vput             func(uint64)
+       Append16         func(b []byte, v uint16) []byte
+       Append32         func(b []byte, v uint32) []byte
+       Append64         func(b []byte, v uint64) []byte
 }
 
 type Rpath struct {
index aea55299f5c7b803023505cd51136524d04b021b..0267ee46cf5186e95cbad3344be084f69199c540 100644 (file)
@@ -296,6 +296,13 @@ func Wputb(w uint16) {
        Cput(uint8(w))
 }
 
+func Append16b(b []byte, v uint16) []byte {
+       return append(b, uint8(v>>8), uint8(v))
+}
+func Append16l(b []byte, v uint16) []byte {
+       return append(b, uint8(v), uint8(v>>8))
+}
+
 func Lputb(l uint32) {
        Cput(uint8(l >> 24))
        Cput(uint8(l >> 16))
@@ -310,6 +317,13 @@ func Lputl(l uint32) {
        Cput(uint8(l >> 24))
 }
 
+func Append32b(b []byte, v uint32) []byte {
+       return append(b, uint8(v>>24), uint8(v>>16), uint8(v>>8), uint8(v))
+}
+func Append32l(b []byte, v uint32) []byte {
+       return append(b, uint8(v), uint8(v>>8), uint8(v>>16), uint8(v>>24))
+}
+
 func Vputb(v uint64) {
        Lputb(uint32(v >> 32))
        Lputb(uint32(v))
@@ -320,6 +334,18 @@ func Vputl(v uint64) {
        Lputl(uint32(v >> 32))
 }
 
+func Append64b(b []byte, v uint64) []byte {
+       b = Append32b(b, uint32(v>>32))
+       b = Append32b(b, uint32(v))
+       return b
+}
+
+func Append64l(b []byte, v uint64) []byte {
+       b = Append32l(b, uint32(v))
+       b = Append32l(b, uint32(v>>32))
+       return b
+}
+
 type byPkg []*Library
 
 func (libs byPkg) Len() int {
index ad686e934309151f36551ad2c9651b46b7f413f0..5ab58080477dbdc06d748f8f5a44e12562048ba4 100644 (file)
@@ -75,10 +75,16 @@ func linkarchinit() {
                ld.Thearch.Lput = ld.Lputl
                ld.Thearch.Wput = ld.Wputl
                ld.Thearch.Vput = ld.Vputl
+               ld.Thearch.Append16 = ld.Append16l
+               ld.Thearch.Append32 = ld.Append32l
+               ld.Thearch.Append64 = ld.Append64l
        } else {
                ld.Thearch.Lput = ld.Lputb
                ld.Thearch.Wput = ld.Wputb
                ld.Thearch.Vput = ld.Vputb
+               ld.Thearch.Append16 = ld.Append16b
+               ld.Thearch.Append32 = ld.Append32b
+               ld.Thearch.Append64 = ld.Append64b
        }
 
        ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"
index c604d3b4922566ce96d2a30dc258262b832de546..61b26799a105608938e27830417df93689077283 100644 (file)
@@ -75,10 +75,16 @@ func linkarchinit() {
                ld.Thearch.Lput = ld.Lputl
                ld.Thearch.Wput = ld.Wputl
                ld.Thearch.Vput = ld.Vputl
+               ld.Thearch.Append16 = ld.Append16l
+               ld.Thearch.Append32 = ld.Append32l
+               ld.Thearch.Append64 = ld.Append64l
        } else {
                ld.Thearch.Lput = ld.Lputb
                ld.Thearch.Wput = ld.Wputb
                ld.Thearch.Vput = ld.Vputb
+               ld.Thearch.Append16 = ld.Append16b
+               ld.Thearch.Append32 = ld.Append32b
+               ld.Thearch.Append64 = ld.Append64b
        }
 
        // TODO(austin): ABI v1 uses /usr/lib/ld.so.1
index c1535555b3c3ea5919009a7c298dea02c518c173..a4da60d7dd428b880804c8dd4c48bad3bc4aad09 100644 (file)
@@ -71,6 +71,9 @@ func linkarchinit() {
        ld.Thearch.Lput = ld.Lputl
        ld.Thearch.Wput = ld.Wputl
        ld.Thearch.Vput = ld.Vputl
+       ld.Thearch.Append16 = ld.Append16l
+       ld.Thearch.Append32 = ld.Append32l
+       ld.Thearch.Append64 = ld.Append64l
 
        ld.Thearch.Linuxdynld = "/lib/ld-linux.so.2"
        ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"