...
1 package internal
2
3 import (
4 "errors"
5 "os"
6 "testing"
7 )
8
9 func TestAuxvVDSOMemoryAddress(t *testing.T) {
10 av, err := os.Open("../testdata/auxv.bin")
11 if err != nil {
12 t.Fatal(err)
13 }
14 t.Cleanup(func() { av.Close() })
15
16 addr, err := vdsoMemoryAddress(av)
17 if err != nil {
18 t.Fatal(err)
19 }
20
21 expected := uint64(0x7ffd377e5000)
22 if addr != expected {
23 t.Errorf("Expected vDSO memory address %x, got %x", expected, addr)
24 }
25 }
26
27 func TestAuxvNoVDSO(t *testing.T) {
28
29 av, err := os.Open("../testdata/auxv_no_vdso.bin")
30 if err != nil {
31 t.Fatal(err)
32 }
33 t.Cleanup(func() { av.Close() })
34
35 _, err = vdsoMemoryAddress(av)
36 if want, got := errAuxvNoVDSO, err; !errors.Is(got, want) {
37 t.Fatalf("expected error '%v', got: %v", want, got)
38 }
39 }
40
41 func TestLinuxVersionCodeEmbedded(t *testing.T) {
42 tests := []struct {
43 file string
44 version uint32
45 }{
46 {
47 "../testdata/vdso.bin",
48 uint32(328828),
49 },
50 {
51 "../testdata/vdso_multiple_notes.bin",
52 uint32(328875),
53 },
54 }
55
56 for _, test := range tests {
57 t.Run(test.file, func(t *testing.T) {
58 vdso, err := os.Open(test.file)
59 if err != nil {
60 t.Fatal(err)
61 }
62 defer vdso.Close()
63
64 vc, err := vdsoLinuxVersionCode(vdso)
65 if err != nil {
66 t.Fatal(err)
67 }
68
69 if vc != test.version {
70 t.Errorf("Expected version code %d, got %d", test.version, vc)
71 }
72 })
73 }
74 }
75
View as plain text