Give extracted linker sections pretty names
Replace .linker.sect0, etc. with .linker, .linker.text, .linker.data and .linker.data.rel.ro by extracting the name of the first section in each program header. Test: build and run host bionic binary Change-Id: I25107547536a3a3963fdeb311c45a7ee53c0bc45
This commit is contained in:
parent
f04eb99acc
commit
009f3df380
1 changed files with 18 additions and 2 deletions
|
@ -61,8 +61,15 @@ func main() {
|
|||
continue
|
||||
}
|
||||
|
||||
sectionName := fmt.Sprintf(".linker.sect%d", load)
|
||||
symName := fmt.Sprintf("__dlwrap_linker_sect%d", load)
|
||||
var progName string
|
||||
progSection := progToFirstSection(prog, ef.Sections)
|
||||
if progSection != nil {
|
||||
progName = progSection.Name
|
||||
} else {
|
||||
progName = fmt.Sprintf(".sect%d", load)
|
||||
}
|
||||
sectionName := ".linker" + progName
|
||||
symName := "__dlwrap_linker" + strings.ReplaceAll(progName, ".", "_")
|
||||
|
||||
flags := ""
|
||||
if prog.Flags&elf.PF_W != 0 {
|
||||
|
@ -125,3 +132,12 @@ func bytesToAsm(asm io.Writer, buf []byte) {
|
|||
}
|
||||
fmt.Fprintln(asm)
|
||||
}
|
||||
|
||||
func progToFirstSection(prog *elf.Prog, sections []*elf.Section) *elf.Section {
|
||||
for _, section := range sections {
|
||||
if section.Addr == prog.Vaddr {
|
||||
return section
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue