func parseCIE(ctx *parseContext) parsefunc { data := ctx.buf.Next(int(ctx.length)) buf := bytes.NewBuffer(data) // parse version ctx.common.Version = data[0] // parse augmentation ctx.common.Augmentation, _ = util.ParseString(buf) // parse code alignment factor ctx.common.CodeAlignmentFactor, _ = util.DecodeULEB128(buf) // parse data alignment factor ctx.common.DataAlignmentFactor, _ = util.DecodeSLEB128(buf) // parse return address register ctx.common.ReturnAddressRegister, _ = util.DecodeULEB128(buf) // parse initial instructions // The rest of this entry consists of the instructions // so we can just grab all of the data from the buffer // cursor to length. ctx.common.InitialInstructions = buf.Bytes() //ctx.buf.Next(int(ctx.length)) ctx.length = 0 return parselength }
func parseIncludeDirs(info *DebugLineInfo, buf *bytes.Buffer) { for { str, _ := util.ParseString(buf) if str == "" { break } info.IncludeDirs = append(info.IncludeDirs, str) } }
func definefile(sm *StateMachine, buf *bytes.Buffer) { var ( _, _ = util.ParseString(buf) _, _ = util.DecodeULEB128(buf) _, _ = util.DecodeULEB128(buf) _, _ = util.DecodeULEB128(buf) ) // Don't do anything here yet. }
func parseFileEntries(info *DebugLineInfo, buf *bytes.Buffer) { for { entry := new(FileEntry) name, _ := util.ParseString(buf) if name == "" { break } entry.Name = name entry.DirIdx, _ = util.DecodeULEB128(buf) entry.LastModTime, _ = util.DecodeULEB128(buf) entry.Length, _ = util.DecodeULEB128(buf) info.FileNames = append(info.FileNames, entry) } }