aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/objfile.go
diff options
context:
space:
mode:
authorJeremy Faller <jeremy@golang.org>2019-08-22 12:18:28 -0400
committerJeremy Faller <jeremy@golang.org>2019-09-25 17:35:25 +0000
commit21bf37b5a2052e5aaedbd17abeca7eb263cba706 (patch)
tree4efa309efee85079cf8065186869b57d1e3c7311 /src/cmd/internal/obj/objfile.go
parentefb9739203fc0b66f5593c5edbe0bc0fd6062956 (diff)
downloadgo-21bf37b5a2052e5aaedbd17abeca7eb263cba706.tar.xz
cmd/compile: update object file format for DWARF file table
In CL 188317, we generate the debug_lines in the compiler, and created a new symbol to hold the line table. Here we modify the object file format to output the file table. Change-Id: Ibee192e80b86ff6af36467a0b1c26ee747dfee37 Reviewed-on: https://go-review.googlesource.com/c/go/+/191167 Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Than McIntosh <thanm@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/objfile.go')
-rw-r--r--src/cmd/internal/obj/objfile.go28
1 files changed, 9 insertions, 19 deletions
diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go
index 863989c473..a40c6d8c29 100644
--- a/src/cmd/internal/obj/objfile.go
+++ b/src/cmd/internal/obj/objfile.go
@@ -86,7 +86,7 @@ func WriteObjFile(ctxt *Link, b *bufio.Writer, pkgpath string) {
w := newObjWriter(ctxt, b, pkgpath)
// Magic header
- w.wr.WriteString("\x00go112ld")
+ w.wr.WriteString("\x00go114ld")
// Version
w.wr.WriteByte(1)
@@ -97,6 +97,13 @@ func WriteObjFile(ctxt *Link, b *bufio.Writer, pkgpath string) {
}
w.writeString("")
+ // DWARF File Table
+ fileTable := ctxt.PosTable.DebugLinesFileTable()
+ w.writeInt(int64(len(fileTable)))
+ for _, str := range fileTable {
+ w.writeString(str)
+ }
+
// Symbol references
for _, s := range ctxt.Text {
w.writeRefs(s)
@@ -161,7 +168,7 @@ func WriteObjFile(ctxt *Link, b *bufio.Writer, pkgpath string) {
}
// Magic footer
- w.wr.WriteString("\xffgo112ld")
+ w.wr.WriteString("\xffgo114ld")
}
// Symbols are prefixed so their content doesn't get confused with the magic footer.
@@ -641,23 +648,6 @@ func (ctxt *Link) DwarfIntConst(myimportpath, name, typename string, val int64)
dwarf.PutIntConst(dwCtxt{ctxt}, s, ctxt.Lookup(dwarf.InfoPrefix+typename), myimportpath+"."+name, val)
}
-// dwarfFileTableSymbol creates (or finds) the symbol for holding the line table for this package.
-//
-// The symbol WILL NOT be unique at the per package/archive level. For example,
-// when writing a package archive, we'll write this symbol for the Go code, and
-// one for each assembly file in the package. As such, we can't treat this
-// symbol the same when we read in the object files in the linker. This symbol
-// won't make it to the symbol table, and compilation units will keep track of
-// it.
-// TODO: Actually save this to the object file, and read it back in the linker.
-func (ctxt *Link) dwarfFileTableSymbol() *LSym {
- s := ctxt.LookupInit(dwarf.DebugLinesPrefix+".package", func(s *LSym) {
- s.Type = objabi.SDWARFLINES
- //ctxt.Data = append(ctxt.Data, s)
- })
- return s
-}
-
func (ctxt *Link) DwarfAbstractFunc(curfn interface{}, s *LSym, myimportpath string) {
absfn := ctxt.DwFixups.AbsFuncDwarfSym(s)
if absfn.Size != 0 {