From f1930ee4ea9bed443a9fd13a790b9f9014d318b4 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 4 Feb 2025 14:23:07 +0100 Subject: sys/targets: change the default DataOffset value The current default value sometimes intersects with the addresses used by malloc, which causes executor memory corruptions. Closes #5674. --- sys/targets/targets.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sys') diff --git a/sys/targets/targets.go b/sys/targets/targets.go index c571d1165..1d79f4f95 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -702,7 +702,7 @@ func initTarget(target *Target, OS, arch string) { target.NeedSyscallDefine = needSyscallDefine } if target.DataOffset == 0 { - target.DataOffset = 512 << 20 + target.DataOffset = target.defaultDataOffset() } target.NumPages = (16 << 20) / target.PageSize sourceDir := getSourceDir(target) @@ -774,6 +774,15 @@ func initTarget(target *Target, OS, arch string) { target.initAddr2Line() } +func (target *Target) defaultDataOffset() uint64 { + if target.PtrSize == 8 { + // An address from ASAN's 64-bit HighMem area. + return 0x200000000000 + } + // From 32-bit HighMem area. + return 0x80000000 +} + func (target *Target) initAddr2Line() { // Initialize addr2line lazily since lots of tests don't need it, // but we invoke a number of external binaries during addr2line detection. -- cgit mrf-deployment