aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorJouni Hogander <jouni.hogander@unikie.com>2019-11-19 13:12:54 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-12-17 11:10:52 +0100
commit07bfd71dacb4775720708ca2fc39fef10c9f37c4 (patch)
tree13d1bb01110aacfefe8999a23ac3cd83b4a5e9fa /pkg
parentd13d795888186e87aeec9ce670986d183036c348 (diff)
Implement basic support for MIPS64LE
Add basic stuff to enable MIPS64ELR2 target: - build - make extract - make generate - qemu execution - system call parsing from /proc/kallsyms
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/report.go5
-rw-r--r--pkg/host/syscalls_linux.go2
-rw-r--r--pkg/osutil/osutil_linux.go2
3 files changed, 8 insertions, 1 deletions
diff --git a/pkg/cover/report.go b/pkg/cover/report.go
index 9268f733d..419fd4ba1 100644
--- a/pkg/cover/report.go
+++ b/pkg/cover/report.go
@@ -435,6 +435,8 @@ func PreviousInstructionPC(arch string, pc uint64) uint64 {
return (pc - 3) & ^uint64(1)
case "ppc64le":
return pc - 4
+ case "mips64le":
+ return pc - 4
default:
panic(fmt.Sprintf("unknown arch %q", arch))
}
@@ -458,6 +460,9 @@ func archCallInsn(arch string) (string, string) {
case "ppc64le":
// c00000000006d904: bl c000000000350780 <.__sanitizer_cov_trace_pc>
return "\tbl ", " <.__sanitizer_cov_trace_pc>"
+ case "mips64le":
+ // ffffffff80100420: jal ffffffff80205880 <__sanitizer_cov_trace_pc>
+ return "\tjal\t", callName
default:
panic(fmt.Sprintf("unknown arch %q", arch))
}
diff --git a/pkg/host/syscalls_linux.go b/pkg/host/syscalls_linux.go
index 5e67d05eb..d9c247c88 100644
--- a/pkg/host/syscalls_linux.go
+++ b/pkg/host/syscalls_linux.go
@@ -75,6 +75,8 @@ func parseKallsyms(kallsyms []byte, arch string) map[string]bool {
re = regexp.MustCompile(` T (__arm64_)?sys_([^\n]+)\n`)
case "ppc64le":
re = regexp.MustCompile(` T ()?sys_([^\n]+)\n`)
+ case "mips64le":
+ re = regexp.MustCompile(` T sys_(mips_)?([^\n]+)\n`)
default:
panic("unsupported arch for kallsyms parsing")
}
diff --git a/pkg/osutil/osutil_linux.go b/pkg/osutil/osutil_linux.go
index 8a99a5f84..79df69999 100644
--- a/pkg/osutil/osutil_linux.go
+++ b/pkg/osutil/osutil_linux.go
@@ -58,7 +58,7 @@ func removeImmutable(fname string) error {
cmd = 1074030082
case "amd64", "arm64":
cmd = 1074292226
- case "ppc64le":
+ case "ppc64le", "mips64le":
cmd = 2148034050
default:
panic("unknown arch")