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

Commit 7f5f22b2 authored by Yabin Cui's avatar Yabin Cui
Browse files

symbol_inject: add step to codesign Mach-O binaries.

The adhoc codesign of Macho-O binaries is broken after symbol
injection. MacOS refuses to run the binaries unless we sign
them again.

Bug: 241493489
Test: build and run simpleperf_ndk64 on MacOS
Change-Id: I25ef5c6413bd97e1bfa0a4ec5d04eaefb6fea54c
parent 2701ecd5
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -94,4 +94,13 @@ func main() {
		os.Remove(*output)
		os.Exit(5)
	}

	if file.IsMachoFile {
		err = symbol_inject.CodeSignMachoFile(*output)
		if err != nil {
			fmt.Fprintln(os.Stderr, err.Error())
			os.Remove(*output)
			os.Exit(6)
		}
	}
}
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import (
	"debug/macho"
	"fmt"
	"io"
	"os/exec"
	"sort"
	"strings"
)
@@ -40,7 +41,7 @@ func extractMachoSymbols(machoFile *macho.File) (*File, error) {
		return symbols[i].Value < symbols[j].Value
	})

	file := &File{}
	file := &File{IsMachoFile: true}

	for _, section := range machoFile.Sections {
		file.Sections = append(file.Sections, &Section{
@@ -95,3 +96,8 @@ func dumpMachoSymbols(r io.ReaderAt) error {

	return nil
}

func CodeSignMachoFile(path string) error {
	cmd := exec.Command("/usr/bin/codesign", "--force", "-s", "-", path)
	return cmd.Run()
}
+4 −3
Original line number Diff line number Diff line
@@ -164,6 +164,7 @@ type File struct {
	r           io.ReaderAt
	Symbols     []*Symbol
	Sections    []*Section
	IsMachoFile bool
}

type Symbol struct {