1.macro mknops nr_bytes 2 .nops \nr_bytes, 9 3.endm 4 5.macro ALTERNATIVE 6.L\@_orig_s: 7.L\@_orig_e: 8 mknops (-(((.L\@_repl_e\()1 - .L\@_repl_s\()1) - (.L\@_orig_e - .L\@_orig_s)) > 0) * ((.L\@_repl_e\()1 - .L\@_repl_s\()1) - (.L\@_orig_e - .L\@_orig_s))) 9.L\@_orig_p: 10 11 .section .discard, "a", @progbits 12 .byte (.L\@_orig_p - .L\@_orig_s) 13 .byte 0xff + (.L\@_repl_e\()1 - .L\@_repl_s\()1) - (.L\@_orig_p - .L\@_orig_s) 14 15 .section .altinstr_replacement, "ax", @progbits 16.L\@_repl_s\()1: 17.L\@_fill_rsb_loop: 18 jnz .L\@_fill_rsb_loop 19 mov %eax, %esp 20.L\@_repl_e\()1: 21.endm 22 23 .text 24_start: 25ALTERNATIVE 26