return sect
}
-func Le16(b []byte) uint16 {
- return uint16(b[0]) | uint16(b[1])<<8
-}
-
-func Le32(b []byte) uint32 {
- return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-}
-
-func Le64(b []byte) uint64 {
- return uint64(Le32(b)) | uint64(Le32(b[4:]))<<32
-}
-
-func Be16(b []byte) uint16 {
- return uint16(b[0])<<8 | uint16(b[1])
-}
-
-func Be32(b []byte) uint32 {
- return uint32(b[0])<<24 | uint32(b[1])<<16 | uint32(b[2])<<8 | uint32(b[3])
-}
-
type chain struct {
sym *sym.Symbol
up *chain
// overflow depends on the instruction
var o1 uint32
if ctxt.Arch.ByteOrder == binary.BigEndian {
- o1 = ld.Be32(s.P[r.Off-2:])
+ o1 = binary.BigEndian.Uint32(s.P[r.Off-2:])
} else {
- o1 = ld.Le32(s.P[r.Off:])
+ o1 = binary.LittleEndian.Uint32(s.P[r.Off:])
}
switch o1 >> 26 {
case 24, // ori
// overflow depends on the instruction
var o1 uint32
if ctxt.Arch.ByteOrder == binary.BigEndian {
- o1 = ld.Be32(s.P[r.Off-2:])
+ o1 = binary.BigEndian.Uint32(s.P[r.Off-2:])
} else {
- o1 = ld.Le32(s.P[r.Off:])
+ o1 = binary.LittleEndian.Uint32(s.P[r.Off:])
}
switch o1 >> 26 {
case 25, // oris
case sym.RV_POWER_DS:
var o1 uint32
if ctxt.Arch.ByteOrder == binary.BigEndian {
- o1 = uint32(ld.Be16(s.P[r.Off:]))
+ o1 = uint32(binary.BigEndian.Uint16(s.P[r.Off:]))
} else {
- o1 = uint32(ld.Le16(s.P[r.Off:]))
+ o1 = uint32(binary.LittleEndian.Uint16(s.P[r.Off:]))
}
if t&3 != 0 {
ld.Errorf(s, "relocation for %s+%d is not aligned: %d", r.Sym.Name, r.Off, t)
import (
"compress/flate"
+ "encoding/binary"
"fmt"
"hash"
"hash/adler32"
}
if z.dict != nil {
// The next four bytes are the Adler-32 checksum of the dictionary.
- checksum := adler32.Checksum(z.dict)
- z.scratch[0] = uint8(checksum >> 24)
- z.scratch[1] = uint8(checksum >> 16)
- z.scratch[2] = uint8(checksum >> 8)
- z.scratch[3] = uint8(checksum >> 0)
+ binary.BigEndian.PutUint32(z.scratch[:], adler32.Checksum(z.dict))
if _, err = z.w.Write(z.scratch[0:4]); err != nil {
return err
}
}
checksum := z.digest.Sum32()
// ZLIB (RFC 1950) is big-endian, unlike GZIP (RFC 1952).
- z.scratch[0] = uint8(checksum >> 24)
- z.scratch[1] = uint8(checksum >> 16)
- z.scratch[2] = uint8(checksum >> 8)
- z.scratch[3] = uint8(checksum >> 0)
+ binary.BigEndian.PutUint32(z.scratch[:], checksum)
_, z.err = z.w.Write(z.scratch[0:4])
return z.err
}
import (
"bufio"
"compress/zlib"
+ "encoding/binary"
"hash/crc32"
"image"
"image/color"
// compression level, although that is not implemented yet.
)
-// Big-endian.
-func writeUint32(b []uint8, u uint32) {
- b[0] = uint8(u >> 24)
- b[1] = uint8(u >> 16)
- b[2] = uint8(u >> 8)
- b[3] = uint8(u >> 0)
-}
-
type opaquer interface {
Opaque() bool
}
e.err = UnsupportedError(name + " chunk is too large: " + strconv.Itoa(len(b)))
return
}
- writeUint32(e.header[:4], n)
+ binary.BigEndian.PutUint32(e.header[:4], n)
e.header[4] = name[0]
e.header[5] = name[1]
e.header[6] = name[2]
crc := crc32.NewIEEE()
crc.Write(e.header[4:8])
crc.Write(b)
- writeUint32(e.footer[:4], crc.Sum32())
+ binary.BigEndian.PutUint32(e.footer[:4], crc.Sum32())
_, e.err = e.w.Write(e.header[:8])
if e.err != nil {
func (e *encoder) writeIHDR() {
b := e.m.Bounds()
- writeUint32(e.tmp[0:4], uint32(b.Dx()))
- writeUint32(e.tmp[4:8], uint32(b.Dy()))
+ binary.BigEndian.PutUint32(e.tmp[0:4], uint32(b.Dx()))
+ binary.BigEndian.PutUint32(e.tmp[4:8], uint32(b.Dy()))
// Set bit depth and color type.
switch e.cb {
case cbG8: