Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 009f3df3 authored by Colin Cross's avatar Colin Cross
Browse files

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
parent f04eb99a
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -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
}