...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package time
17
18 import (
19 "github.com/pkg/errors"
20
21 "github.com/chaos-mesh/chaos-mesh/pkg/mapreader"
22 "github.com/chaos-mesh/chaos-mesh/pkg/ptrace"
23 )
24
25
26 const varLength = 16
27
28 func (it *FakeImage) SetVarUint64(program *ptrace.TracedProgram, entry *mapreader.Entry, symbol string, value uint64) error {
29 if offset, ok := it.offset[symbol]; ok {
30 variableOffset := entry.StartAddress + uint64(offset) + 8
31
32 err := program.WriteUint64ToAddr(entry.StartAddress+uint64(offset), variableOffset)
33 if err != nil {
34 return err
35 }
36
37 err = program.WriteUint64ToAddr(variableOffset, value)
38 return err
39 }
40
41 return errors.New("symbol not found")
42 }
43