Skip to content
/ rust Public
forked from rust-lang/rust

Commit b00b6a8

Browse files
committed
unstable book: in a sanitizer example, check the code
this uses some # directives to make sure the code works on x86_64, and does not produce errors on other platforms
1 parent 19cab6b commit b00b6a8

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/doc/unstable-book/src/compiler-flags/sanitizer.md

+18-18
Original file line numberDiff line numberDiff line change
@@ -244,36 +244,36 @@ See the [Clang ControlFlowIntegrity documentation][clang-cfi] for more details.
244244
245245
## Example 1: Redirecting control flow using an indirect branch/call to an invalid destination
246246
247-
```rust,ignore (making doc tests pass cross-platform is hard)
247+
```rust
248248
#![feature(naked_functions)]
249249

250-
use std::arch::asm;
250+
use std::arch::naked_asm;
251251
use std::mem;
252252

253253
fn add_one(x: i32) -> i32 {
254254
x + 1
255255
}
256256

257+
# #[cfg(not(target_arch = "x86_64"))] pub extern "C" fn add_two(_: i32) {}
258+
257259
#[naked]
260+
# #[cfg(target_arch = "x86_64")]
258261
pub extern "C" fn add_two(x: i32) {
259262
// x + 2 preceded by a landing pad/nop block
260263
unsafe {
261-
asm!(
262-
"
263-
nop
264-
nop
265-
nop
266-
nop
267-
nop
268-
nop
269-
nop
270-
nop
271-
nop
272-
lea eax, [rdi+2]
273-
ret
274-
",
275-
options(noreturn)
276-
);
264+
naked_asm!(
265+
"nop",
266+
"nop",
267+
"nop",
268+
"nop",
269+
"nop",
270+
"nop",
271+
"nop",
272+
"nop",
273+
"nop",
274+
"lea eax, [rdi+2]",
275+
"ret",
276+
)
277277
}
278278
}
279279

0 commit comments

Comments
 (0)