Added sparse file support

This commit is contained in:
Eduard Urbach 2025-05-23 19:35:52 +02:00
parent 9d6356e8a9
commit 60691d09ed
No known key found for this signature in database
GPG key ID: C874F672B1AF20C0
10 changed files with 32 additions and 37 deletions

View file

@ -1,7 +1,6 @@
package macho
import (
"bytes"
"encoding/binary"
"io"
@ -24,7 +23,7 @@ type MachO struct {
}
// Write writes the Mach-O format to the given writer.
func Write(writer io.Writer, codeBytes []byte, dataBytes []byte) {
func Write(writer io.WriteSeeker, codeBytes []byte, dataBytes []byte) {
sections := exe.MakeSections(HeaderEnd, codeBytes, dataBytes)
code := sections[0]
data := sections[1]
@ -116,8 +115,8 @@ func Write(writer io.Writer, codeBytes []byte, dataBytes []byte) {
binary.Write(writer, binary.LittleEndian, &m.CodeHeader)
binary.Write(writer, binary.LittleEndian, &m.DataHeader)
binary.Write(writer, binary.LittleEndian, &m.UnixThread)
writer.Write(bytes.Repeat([]byte{0x00}, code.Padding))
writer.Seek(int64(code.Padding), io.SeekCurrent)
writer.Write(code.Bytes)
writer.Write(bytes.Repeat([]byte{0x00}, data.Padding))
writer.Seek(int64(data.Padding), io.SeekCurrent)
writer.Write(data.Bytes)
}