From cc437dcdb16e463eb11b1f60b5bc1cb7c5d7ab4a Mon Sep 17 00:00:00 2001 From: Andrew LeFevre Date: Wed, 21 Oct 2020 16:28:24 -0400 Subject: [PATCH] fix #14 by exporting ArchiveMember.IsDataObj to allow users to create data archive members themselves --- goobj2/file.go | 21 ++++++++------------- goobj2/write.go | 2 +- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/goobj2/file.go b/goobj2/file.go index 7a770a1..35a0eab 100644 --- a/goobj2/file.go +++ b/goobj2/file.go @@ -27,9 +27,9 @@ import ( ) const ( + CompilerObjName = "__.PKGDEF" + archiveHeaderLen = 60 - initSymName = `""..inittask` - objHeaderLen = 80 ) // A Package is a parsed Go object file or archive defining a Go package. @@ -60,20 +60,15 @@ type ArchiveMember struct { NonPkgSymRefs []*Sym SymRefs []SymRef + IsDataObj bool + textSyms []*Sym symMap map[int]*Sym - - isCompilerObj bool - isDataObj bool } func (a ArchiveMember) IsCompilerObj() bool { - return a.isCompilerObj -} - -func (a ArchiveMember) IsDataObj() bool { - return a.isDataObj + return a.ArchiveHeader.Name == CompilerObjName } type ArchiveHeader struct { @@ -534,7 +529,7 @@ func (r *objReader) parseArchive(importCfg ImportCfg, returnReader bool) (*goobj var am *ArchiveMember switch ar.Name { - case "__.PKGDEF": + case CompilerObjName: ar.Data = make([]byte, size) if err := r.readFull(ar.Data); err != nil { return nil, err @@ -545,7 +540,7 @@ func (r *objReader) parseArchive(importCfg ImportCfg, returnReader bool) (*goobj am = new(ArchiveMember) am.ArchiveHeader = ar - am.isCompilerObj = true + am.IsDataObj = true default: oldLimit := r.limit r.limit = r.offset + size @@ -573,7 +568,7 @@ func (r *objReader) parseArchive(importCfg ImportCfg, returnReader bool) (*goobj if fsize != size { ar.Data = append(ar.Data, 0x00) } - am = &ArchiveMember{ArchiveHeader: ar, isDataObj: true} + am = &ArchiveMember{ArchiveHeader: ar, IsDataObj: true} } r.skip(r.limit - r.offset) diff --git a/goobj2/write.go b/goobj2/write.go index 97eab5f..c5e03c4 100644 --- a/goobj2/write.go +++ b/goobj2/write.go @@ -44,7 +44,7 @@ func (pkg *Package) Write(path string) (err error) { b.Write(arhdr[:]) curObjStartOff = b.Offset() b.Write(ar.Data) - if ctxt.isCompilerObj || ctxt.isDataObj { + if ctxt.IsDataObj { continue }