}
var wg sync.WaitGroup
- sect := Segtext.Sections[0]
- offset := sect.Vaddr - Segtext.Vaddr + Segtext.Fileoff
f := func(ctxt *Link, out *OutBuf, start, length int64) {
pad := thearch.CodePad
if pad == nil {
CodeblkPad(ctxt, out, start, length, pad)
}
- if !thearch.WriteTextBlocks {
- writeParallel(&wg, f, ctxt, offset, sect.Vaddr, sect.Length)
- for _, sect := range Segtext.Sections[1:] {
- offset := sect.Vaddr - Segtext.Vaddr + Segtext.Fileoff
+ for _, sect := range Segtext.Sections {
+ offset := sect.Vaddr - Segtext.Vaddr + Segtext.Fileoff
+ // Handle text sections with Codeblk
+ if sect.Name == ".text" {
+ writeParallel(&wg, f, ctxt, offset, sect.Vaddr, sect.Length)
+ } else {
writeParallel(&wg, datblk, ctxt, offset, sect.Vaddr, sect.Length)
}
- } else {
- // TODO why can't we handle all sections this way?
- for _, sect := range Segtext.Sections {
- offset := sect.Vaddr - Segtext.Vaddr + Segtext.Fileoff
- // Handle additional text sections with Codeblk
- if sect.Name == ".text" {
- writeParallel(&wg, f, ctxt, offset, sect.Vaddr, sect.Length)
- } else {
- writeParallel(&wg, datblk, ctxt, offset, sect.Vaddr, sect.Length)
- }
- }
}
if Segrodata.Filelen > 0 {