File: ExclusivityREPL.test

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (21 lines) | stat: -rw-r--r-- 562 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Runtime checks for exclusive access should be enabled in the REPL.
// REQUIRES: swift

// RUN: %lldb --repl < %s 2>&1 | FileCheck %s
// CHECK-DAG: modification requires exclusive access
// CHECK-DAG: Execution interrupted

class C {
  var f = 12
}

let c = C()

func doIt(_ p1: inout Int, _ p2: inout Int) { }

let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2)
let flagPtr = dlsym(RTLD_DEFAULT, "_swift_disableExclusivityChecking")
let flagValue = flagPtr!.load(as: Bool.self)

print("flagValue is \(flagValue)")
doIt(&c.f, &c.f) // This should trap