diff --git a/bench/bench-comment.txt b/bench/bench-comment.txt new file mode 100644 index 0000000..6691c09 --- /dev/null +++ b/bench/bench-comment.txt @@ -0,0 +1,9 @@ + +-因为不论是PAX_RAP还是hl-cfi都是针对linux kernel而设计的,所以这两个plugin挂在 + gcc上测试bench很多测试程序不能运行,hash计算就assert过了只能是function_type的 + tree. + +-对比的具体过程是只是采用了PAX_RAP的call检测,也就是forward cfi,而hl-cfi只有 + forward cfi所以检测结果应该是可以作为一个性能比较参考的。 + +-intspeed的结果和fpspeed的结果差不多。 diff --git a/bench/spec_bench_fp_cfi.pdf b/bench/spec_bench_fp_cfi.pdf new file mode 100644 index 0000000..fc502e6 Binary files /dev/null and b/bench/spec_bench_fp_cfi.pdf differ diff --git a/bench/spec_bench_fp_rap.pdf b/bench/spec_bench_fp_rap.pdf new file mode 100644 index 0000000..77388e4 Binary files /dev/null and b/bench/spec_bench_fp_rap.pdf differ diff --git a/src/rap_plugin/dis.txt b/src/rap_plugin/dis.txt new file mode 100644 index 0000000..9a099d6 --- /dev/null +++ b/src/rap_plugin/dis.txt @@ -0,0 +1,1113 @@ + +a.out: file format elf64-x86-64 + + +Disassembly of section .interp: + +0000000000400200 <.interp>: + 400200: 2f (bad) + 400201: 6c insb (%dx),%es:(%rdi) + 400202: 69 62 36 34 2f 6c 64 imul $0x646c2f34,0x36(%rdx),%esp + 400209: 2d 6c 69 6e 75 sub $0x756e696c,%eax + 40020e: 78 2d js 40023d <_init-0x29b> + 400210: 78 38 js 40024a <_init-0x28e> + 400212: 36 2d 36 34 2e 73 ss sub $0x732e3436,%eax + 400218: 6f outsl %ds:(%rsi),(%dx) + 400219: 2e 32 00 xor %cs:(%rax),%al + +Disassembly of section .note.ABI-tag: + +000000000040021c <.note.ABI-tag>: + 40021c: 04 00 add $0x0,%al + 40021e: 00 00 add %al,(%rax) + 400220: 10 00 adc %al,(%rax) + 400222: 00 00 add %al,(%rax) + 400224: 01 00 add %eax,(%rax) + 400226: 00 00 add %al,(%rax) + 400228: 47 rex.RXB + 400229: 4e 55 rex.WRX push %rbp + 40022b: 00 00 add %al,(%rax) + 40022d: 00 00 add %al,(%rax) + 40022f: 00 02 add %al,(%rdx) + 400231: 00 00 add %al,(%rax) + 400233: 00 06 add %al,(%rsi) + 400235: 00 00 add %al,(%rax) + 400237: 00 20 add %ah,(%rax) + 400239: 00 00 add %al,(%rax) + ... + +Disassembly of section .note.gnu.build-id: + +000000000040023c <.note.gnu.build-id>: + 40023c: 04 00 add $0x0,%al + 40023e: 00 00 add %al,(%rax) + 400240: 14 00 adc $0x0,%al + 400242: 00 00 add %al,(%rax) + 400244: 03 00 add (%rax),%eax + 400246: 00 00 add %al,(%rax) + 400248: 47 rex.RXB + 400249: 4e 55 rex.WRX push %rbp + 40024b: 00 f9 add %bh,%cl + 40024d: 73 48 jae 400297 <_init-0x241> + 40024f: 47 d2 01 rex.RXB rolb %cl,(%r9) + 400252: fc cld + 400253: 5b pop %rbx + 400254: 13 67 5f adc 0x5f(%rdi),%esp + 400257: 75 b9 jne 400212 <_init-0x2c6> + 400259: f2 3a 23 repnz cmp (%rbx),%ah + 40025c: db f6 fcomi %st(6),%st + 40025e: 4a rex.WX + 40025f: b7 .byte 0xb7 + +Disassembly of section .dynsym: + +0000000000400260 <.dynsym>: + ... + 400278: 01 00 add %eax,(%rax) + 40027a: 00 00 add %al,(%rax) + 40027c: 12 00 adc (%rax),%al + ... + 40028e: 00 00 add %al,(%rax) + 400290: 29 00 sub %eax,(%rax) + 400292: 00 00 add %al,(%rax) + 400294: 20 00 and %al,(%rax) + ... + 4002a6: 00 00 add %al,(%rax) + 4002a8: 38 00 cmp %al,(%rax) + 4002aa: 00 00 add %al,(%rax) + 4002ac: 20 00 and %al,(%rax) + ... + 4002be: 00 00 add %al,(%rax) + 4002c0: 54 push %rsp + 4002c1: 00 00 add %al,(%rax) + 4002c3: 00 20 add %ah,(%rax) + ... + 4002d5: 00 00 add %al,(%rax) + 4002d7: 00 6e 00 add %ch,0x0(%rsi) + 4002da: 00 00 add %al,(%rax) + 4002dc: 20 00 and %al,(%rax) + ... + 4002ee: 00 00 add %al,(%rax) + 4002f0: 82 (bad) + 4002f1: 00 00 add %al,(%rax) + 4002f3: 00 12 add %dl,(%rdx) + ... + 400305: 00 00 add %al,(%rax) + 400307: 00 87 00 00 00 12 add %al,0x12000000(%rdi) + ... + 40031d: 00 00 add %al,(%rax) + 40031f: 00 95 00 00 00 12 add %dl,0x12000000(%rbp) + ... + +Disassembly of section .dynstr: + +0000000000400338 <.dynstr>: + 400338: 00 5f 5f add %bl,0x5f(%rdi) + 40033b: 6c insb (%dx),%es:(%rdi) + 40033c: 69 62 63 5f 73 74 61 imul $0x6174735f,0x63(%rdx),%esp + 400343: 72 74 jb 4003b9 <_init-0x11f> + 400345: 5f pop %rdi + 400346: 6d insl (%dx),%es:(%rdi) + 400347: 61 (bad) + 400348: 69 6e 00 47 4c 49 42 imul $0x42494c47,0x0(%rsi),%ebp + 40034f: 43 5f rex.XB pop %r15 + 400351: 32 2e xor (%rsi),%ch + 400353: 32 2e xor (%rsi),%ch + 400355: 35 00 6c 69 62 xor $0x62696c00,%eax + 40035a: 63 2e movslq (%rsi),%ebp + 40035c: 73 6f jae 4003cd <_init-0x10b> + 40035e: 2e 36 00 5f 5f cs add %bl,%ss:0x5f(%rdi) + 400363: 67 6d insl (%dx),%es:(%edi) + 400365: 6f outsl %ds:(%rsi),(%dx) + 400366: 6e outsb %ds:(%rsi),(%dx) + 400367: 5f pop %rdi + 400368: 73 74 jae 4003de <_init-0xfa> + 40036a: 61 (bad) + 40036b: 72 74 jb 4003e1 <_init-0xf7> + 40036d: 5f pop %rdi + 40036e: 5f pop %rdi + 40036f: 00 5f 49 add %bl,0x49(%rdi) + 400372: 54 push %rsp + 400373: 4d 5f rex.WRB pop %r15 + 400375: 64 65 72 65 fs gs jb 4003de <_init-0xfa> + 400379: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi + 400380: 4d + 400381: 43 6c rex.XB insb (%dx),%es:(%rdi) + 400383: 6f outsl %ds:(%rsi),(%dx) + 400384: 6e outsb %ds:(%rsi),(%dx) + 400385: 65 54 gs push %rsp + 400387: 61 (bad) + 400388: 62 (bad) + 400389: 6c insb (%dx),%es:(%rdi) + 40038a: 65 00 5f 49 add %bl,%gs:0x49(%rdi) + 40038e: 54 push %rsp + 40038f: 4d 5f rex.WRB pop %r15 + 400391: 72 65 jb 4003f8 <_init-0xe0> + 400393: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi + 40039a: 4d + 40039b: 43 6c rex.XB insb (%dx),%es:(%rdi) + 40039d: 6f outsl %ds:(%rsi),(%dx) + 40039e: 6e outsb %ds:(%rsi),(%dx) + 40039f: 65 54 gs push %rsp + 4003a1: 61 (bad) + 4003a2: 62 (bad) + 4003a3: 6c insb (%dx),%es:(%rdi) + 4003a4: 65 00 5f 4a add %bl,%gs:0x4a(%rdi) + 4003a8: 76 5f jbe 400409 <_init-0xcf> + 4003aa: 52 push %rdx + 4003ab: 65 67 69 73 74 65 72 imul $0x6c437265,%gs:0x74(%ebx),%esi + 4003b2: 43 6c + 4003b4: 61 (bad) + 4003b5: 73 73 jae 40042a <_init-0xae> + 4003b7: 65 73 00 gs jae 4003ba <_init-0x11e> + 4003ba: 70 75 jo 400431 <_init-0xa7> + 4003bc: 74 73 je 400431 <_init-0xa7> + 4003be: 00 5f 5f add %bl,0x5f(%rdi) + 4003c1: 61 (bad) + 4003c2: 73 73 jae 400437 <_init-0xa1> + 4003c4: 65 72 74 gs jb 40043b <_init-0x9d> + 4003c7: 5f pop %rdi + 4003c8: 66 61 data16 (bad) + 4003ca: 69 6c 00 70 72 69 6e imul $0x746e6972,0x70(%rax,%rax,1),%ebp + 4003d1: 74 + 4003d2: 66 data16 + ... + +Disassembly of section .hash: + +00000000004003d8 <.hash>: + 4003d8: 03 00 add (%rax),%eax + 4003da: 00 00 add %al,(%rax) + 4003dc: 09 00 or %eax,(%rax) + 4003de: 00 00 add %al,(%rax) + 4003e0: 07 (bad) + 4003e1: 00 00 add %al,(%rax) + 4003e3: 00 06 add %al,(%rsi) + 4003e5: 00 00 add %al,(%rax) + 4003e7: 00 08 add %cl,(%rax) + ... + 4003f5: 00 00 add %al,(%rax) + 4003f7: 00 01 add %al,(%rcx) + 4003f9: 00 00 add %al,(%rax) + 4003fb: 00 03 add %al,(%rbx) + 4003fd: 00 00 add %al,(%rax) + 4003ff: 00 02 add %al,(%rdx) + 400401: 00 00 add %al,(%rax) + 400403: 00 04 00 add %al,(%rax,%rax,1) + 400406: 00 00 add %al,(%rax) + 400408: 05 00 00 00 00 add $0x0,%eax + 40040d: 00 00 add %al,(%rax) + ... + +Disassembly of section .gnu.version: + +0000000000400410 <.gnu.version>: + 400410: 00 00 add %al,(%rax) + 400412: 02 00 add (%rax),%al + ... + 40041c: 02 00 add (%rax),%al + 40041e: 02 00 add (%rax),%al + 400420: 02 00 add (%rax),%al + +Disassembly of section .gnu.version_r: + +0000000000400424 <.gnu.version_r>: + 400424: 01 00 add %eax,(%rax) + 400426: 01 00 add %eax,(%rax) + 400428: 1f (bad) + 400429: 00 00 add %al,(%rax) + 40042b: 00 10 add %dl,(%rax) + 40042d: 00 00 add %al,(%rax) + 40042f: 00 00 add %al,(%rax) + 400431: 00 00 add %al,(%rax) + 400433: 00 75 1a add %dh,0x1a(%rbp) + 400436: 69 09 00 00 02 00 imul $0x20000,(%rcx),%ecx + 40043c: 13 00 adc (%rax),%eax + 40043e: 00 00 add %al,(%rax) + 400440: 00 00 add %al,(%rax) + ... + +Disassembly of section .rela.dyn: + +0000000000400448 <.rela.dyn>: + 400448: a8 1c test $0x1c,%al + 40044a: 40 00 00 add %al,(%rax) + 40044d: 00 00 add %al,(%rax) + 40044f: 00 06 add %al,(%rsi) + 400451: 00 00 add %al,(%rax) + 400453: 00 02 add %al,(%rdx) + ... + +Disassembly of section .rela.plt: + +0000000000400460 <.rela.plt>: + 400460: c8 1c 40 00 enterq $0x401c,$0x0 + 400464: 00 00 add %al,(%rax) + 400466: 00 00 add %al,(%rax) + 400468: 07 (bad) + 400469: 00 00 add %al,(%rax) + 40046b: 00 01 add %al,(%rcx) + ... + 400475: 00 00 add %al,(%rax) + 400477: 00 d0 add %dl,%al + 400479: 1c 40 sbb $0x40,%al + 40047b: 00 00 add %al,(%rax) + 40047d: 00 00 add %al,(%rax) + 40047f: 00 07 add %al,(%rdi) + 400481: 00 00 add %al,(%rax) + 400483: 00 02 add %al,(%rdx) + ... + 40048d: 00 00 add %al,(%rax) + 40048f: 00 d8 add %bl,%al + 400491: 1c 40 sbb $0x40,%al + 400493: 00 00 add %al,(%rax) + 400495: 00 00 add %al,(%rax) + 400497: 00 07 add %al,(%rdi) + 400499: 00 00 add %al,(%rax) + 40049b: 00 06 add %al,(%rsi) + ... + 4004a5: 00 00 add %al,(%rax) + 4004a7: 00 e0 add %ah,%al + 4004a9: 1c 40 sbb $0x40,%al + 4004ab: 00 00 add %al,(%rax) + 4004ad: 00 00 add %al,(%rax) + 4004af: 00 07 add %al,(%rdi) + 4004b1: 00 00 add %al,(%rax) + 4004b3: 00 07 add %al,(%rdi) + ... + 4004bd: 00 00 add %al,(%rax) + 4004bf: 00 e8 add %ch,%al + 4004c1: 1c 40 sbb $0x40,%al + 4004c3: 00 00 add %al,(%rax) + 4004c5: 00 00 add %al,(%rax) + 4004c7: 00 07 add %al,(%rdi) + 4004c9: 00 00 add %al,(%rax) + 4004cb: 00 08 add %cl,(%rax) + ... + +Disassembly of section .init: + +00000000004004d8 <_init>: + 4004d8: 48 83 ec 08 sub $0x8,%rsp + 4004dc: 48 8b 05 c5 17 00 00 mov 0x17c5(%rip),%rax # 401ca8 <_DYNAMIC+0x1d0> + 4004e3: 48 85 c0 test %rax,%rax + 4004e6: 74 05 je 4004ed <_init+0x15> + 4004e8: e8 33 00 00 00 callq 400520 <__gmon_start__@plt> + 4004ed: 48 83 c4 08 add $0x8,%rsp + 4004f1: c3 retq + +Disassembly of section .plt: + +0000000000400500 <__libc_start_main@plt-0x10>: + 400500: ff 35 b2 17 00 00 pushq 0x17b2(%rip) # 401cb8 <_GLOBAL_OFFSET_TABLE_+0x8> + 400506: ff 25 b4 17 00 00 jmpq *0x17b4(%rip) # 401cc0 <_GLOBAL_OFFSET_TABLE_+0x10> + 40050c: 90 nop + 40050d: 90 nop + 40050e: 90 nop + 40050f: 90 nop + +0000000000400510 <__libc_start_main@plt>: + 400510: ff 25 b2 17 00 00 jmpq *0x17b2(%rip) # 401cc8 <_GLOBAL_OFFSET_TABLE_+0x18> + 400516: 68 00 00 00 00 pushq $0x0 + 40051b: e9 e0 ff ff ff jmpq 400500 <_init+0x28> + +0000000000400520 <__gmon_start__@plt>: + 400520: ff 25 aa 17 00 00 jmpq *0x17aa(%rip) # 401cd0 <_GLOBAL_OFFSET_TABLE_+0x20> + 400526: 68 01 00 00 00 pushq $0x1 + 40052b: e9 d0 ff ff ff jmpq 400500 <_init+0x28> + +0000000000400530 : + 400530: ff 25 a2 17 00 00 jmpq *0x17a2(%rip) # 401cd8 <_GLOBAL_OFFSET_TABLE_+0x28> + 400536: 68 02 00 00 00 pushq $0x2 + 40053b: e9 c0 ff ff ff jmpq 400500 <_init+0x28> + +0000000000400540 <__assert_fail@plt>: + 400540: ff 25 9a 17 00 00 jmpq *0x179a(%rip) # 401ce0 <_GLOBAL_OFFSET_TABLE_+0x30> + 400546: 68 03 00 00 00 pushq $0x3 + 40054b: e9 b0 ff ff ff jmpq 400500 <_init+0x28> + +0000000000400550 : + 400550: ff 25 92 17 00 00 jmpq *0x1792(%rip) # 401ce8 <_GLOBAL_OFFSET_TABLE_+0x38> + 400556: 68 04 00 00 00 pushq $0x4 + 40055b: e9 a0 ff ff ff jmpq 400500 <_init+0x28> + +Disassembly of section .text: + +0000000000400560 <_start>: + 400560: 31 ed xor %ebp,%ebp + 400562: 49 89 d1 mov %rdx,%r9 + 400565: 5e pop %rsi + 400566: 48 89 e2 mov %rsp,%rdx + 400569: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp + 40056d: 50 push %rax + 40056e: 54 push %rsp + 40056f: 49 c7 c0 f0 08 40 00 mov $0x4008f0,%r8 + 400576: 48 c7 c1 80 08 40 00 mov $0x400880,%rcx + 40057d: 48 c7 c7 55 06 40 00 mov $0x400655,%rdi + 400584: e8 87 ff ff ff callq 400510 <__libc_start_main@plt> + 400589: f4 hlt + 40058a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) + +0000000000400590 : + 400590: b8 17 1d 40 00 mov $0x401d17,%eax + 400595: 55 push %rbp + 400596: 48 2d 10 1d 40 00 sub $0x401d10,%rax + 40059c: 48 83 f8 0e cmp $0xe,%rax + 4005a0: 48 89 e5 mov %rsp,%rbp + 4005a3: 77 02 ja 4005a7 + 4005a5: 5d pop %rbp + 4005a6: c3 retq + 4005a7: b8 00 00 00 00 mov $0x0,%eax + 4005ac: 48 85 c0 test %rax,%rax + 4005af: 74 f4 je 4005a5 + 4005b1: 5d pop %rbp + 4005b2: bf 10 1d 40 00 mov $0x401d10,%edi + 4005b7: ff e0 jmpq *%rax + 4005b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) + +00000000004005c0 : + 4005c0: b8 10 1d 40 00 mov $0x401d10,%eax + 4005c5: 55 push %rbp + 4005c6: 48 2d 10 1d 40 00 sub $0x401d10,%rax + 4005cc: 48 c1 f8 03 sar $0x3,%rax + 4005d0: 48 89 e5 mov %rsp,%rbp + 4005d3: 48 89 c2 mov %rax,%rdx + 4005d6: 48 c1 ea 3f shr $0x3f,%rdx + 4005da: 48 01 d0 add %rdx,%rax + 4005dd: 48 d1 f8 sar %rax + 4005e0: 75 02 jne 4005e4 + 4005e2: 5d pop %rbp + 4005e3: c3 retq + 4005e4: ba 00 00 00 00 mov $0x0,%edx + 4005e9: 48 85 d2 test %rdx,%rdx + 4005ec: 74 f4 je 4005e2 + 4005ee: 5d pop %rbp + 4005ef: 48 89 c6 mov %rax,%rsi + 4005f2: bf 10 1d 40 00 mov $0x401d10,%edi + 4005f7: ff e2 jmpq *%rdx + 4005f9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) + +0000000000400600 <__do_global_dtors_aux>: + 400600: 80 3d 19 17 00 00 00 cmpb $0x0,0x1719(%rip) # 401d20 <__bss_start> + 400607: 75 11 jne 40061a <__do_global_dtors_aux+0x1a> + 400609: 55 push %rbp + 40060a: 48 89 e5 mov %rsp,%rbp + 40060d: e8 7e ff ff ff callq 400590 + 400612: 5d pop %rbp + 400613: c6 05 06 17 00 00 01 movb $0x1,0x1706(%rip) # 401d20 <__bss_start> + 40061a: f3 c3 repz retq + 40061c: 0f 1f 40 00 nopl 0x0(%rax) + +0000000000400620 : + 400620: 48 83 3d e0 16 00 00 cmpq $0x0,0x16e0(%rip) # 401d08 <__JCR_END__> + 400627: 00 + 400628: 74 1e je 400648 + 40062a: b8 00 00 00 00 mov $0x0,%eax + 40062f: 48 85 c0 test %rax,%rax + 400632: 74 14 je 400648 + 400634: 55 push %rbp + 400635: bf 08 1d 40 00 mov $0x401d08,%edi + 40063a: 48 89 e5 mov %rsp,%rbp + 40063d: ff d0 callq *%rax + 40063f: 5d pop %rbp + 400640: e9 7b ff ff ff jmpq 4005c0 + 400645: 0f 1f 00 nopl (%rax) + 400648: e9 73 ff ff ff jmpq 4005c0 + 40064d: 48 cd 5d rex.W int $0x5d + 400650: 65 00 00 add %al,%gs:(%rax) + ... + +0000000000400655
: + 400655: 55 push %rbp + 400656: 48 89 e5 mov %rsp,%rbp + 400659: 48 83 ec 20 sub $0x20,%rsp + 40065d: b8 01 00 00 00 mov $0x1,%eax + 400662: 89 05 d8 16 00 00 mov %eax,0x16d8(%rip) # 401d40 + 400668: 89 45 fc mov %eax,-0x4(%rbp) + 40066b: b8 02 00 00 00 mov $0x2,%eax + 400670: 89 05 ce 16 00 00 mov %eax,0x16ce(%rip) # 401d44 + 400676: 89 45 f8 mov %eax,-0x8(%rbp) + 400679: c7 45 f4 0a 00 00 00 movl $0xa,-0xc(%rbp) + 400680: 8b 45 f4 mov -0xc(%rbp),%eax + 400683: 89 45 f0 mov %eax,-0x10(%rbp) + 400686: 48 c7 45 e0 7f 07 40 movq $0x40077f,-0x20(%rbp) + 40068d: 00 + 40068e: 48 8b 45 e0 mov -0x20(%rbp),%rax + 400692: 48 89 05 97 16 00 00 mov %rax,0x1697(%rip) # 401d30 + 400699: 48 8b 05 90 16 00 00 mov 0x1690(%rip),%rax # 401d30 + 4006a0: 8b 15 9a 16 00 00 mov 0x169a(%rip),%edx # 401d40 + 4006a6: f2 0f 2a c2 cvtsi2sd %edx,%xmm0 + 4006aa: 48 8b 50 f8 mov -0x8(%rax),%rdx + 4006ae: 48 81 fa f3 3c 02 7f cmp $0x7f023cf3,%rdx + 4006b5: 74 02 je 4006b9 + 4006b7: 0f 0b ud2 + 4006b9: ff d0 callq *%rax + 4006bb: 01 45 f0 add %eax,-0x10(%rbp) + 4006be: 48 8b 45 e0 mov -0x20(%rbp),%rax + 4006c2: f2 0f 2a 45 fc cvtsi2sdl -0x4(%rbp),%xmm0 + 4006c7: 48 8b 50 f8 mov -0x8(%rax),%rdx + 4006cb: 48 81 fa f3 3c 02 7f cmp $0x7f023cf3,%rdx + 4006d2: 74 02 je 4006d6 + 4006d4: 0f 0b ud2 + 4006d6: ff d0 callq *%rax + 4006d8: 01 45 f4 add %eax,-0xc(%rbp) + 4006db: 48 c7 45 e8 fe 07 40 movq $0x4007fe,-0x18(%rbp) + 4006e2: 00 + 4006e3: 48 8b 45 e8 mov -0x18(%rbp),%rax + 4006e7: 48 89 05 4a 16 00 00 mov %rax,0x164a(%rip) # 401d38 + 4006ee: 48 8b 05 43 16 00 00 mov 0x1643(%rip),%rax # 401d38 + 4006f5: 8b 15 49 16 00 00 mov 0x1649(%rip),%edx # 401d44 + 4006fb: f2 0f 2a c2 cvtsi2sd %edx,%xmm0 + 4006ff: 48 8b 50 f8 mov -0x8(%rax),%rdx + 400703: 48 81 fa f3 3c 02 7f cmp $0x7f023cf3,%rdx + 40070a: 74 02 je 40070e + 40070c: 0f 0b ud2 + 40070e: ff d0 callq *%rax + 400710: 01 45 f0 add %eax,-0x10(%rbp) + 400713: 48 8b 45 e8 mov -0x18(%rbp),%rax + 400717: f2 0f 2a 45 f8 cvtsi2sdl -0x8(%rbp),%xmm0 + 40071c: 48 8b 50 f8 mov -0x8(%rax),%rdx + 400720: 48 81 fa f3 3c 02 7f cmp $0x7f023cf3,%rdx + 400727: 74 02 je 40072b + 400729: 0f 0b ud2 + 40072b: ff d0 callq *%rax + 40072d: 01 45 f4 add %eax,-0xc(%rbp) + 400730: 8b 45 f0 mov -0x10(%rbp),%eax + 400733: 3b 45 f4 cmp -0xc(%rbp),%eax + 400736: 75 0c jne 400744 + 400738: bf 04 09 40 00 mov $0x400904,%edi + 40073d: e8 ee fd ff ff callq 400530 + 400742: eb 19 jmp 40075d + 400744: b9 28 09 40 00 mov $0x400928,%ecx + 400749: ba 1e 00 00 00 mov $0x1e,%edx + 40074e: be 08 09 40 00 mov $0x400908,%esi + 400753: bf 1e 09 40 00 mov $0x40091e,%edi + 400758: e8 e3 fd ff ff callq 400540 <__assert_fail@plt> + 40075d: b8 00 00 00 00 mov $0x0,%eax + 400762: c9 leaveq + 400763: c3 retq + 400764: 48 cd 5d rex.W int $0x5d + 400767: 65 00 00 add %al,%gs:(%rax) + ... + +000000000040076c : + 40076c: 55 push %rbp + 40076d: 48 89 e5 mov %rsp,%rbp + 400770: b8 2a 00 00 00 mov $0x2a,%eax + 400775: 5d pop %rbp + 400776: c3 retq + 400777: f3 3c 02 repz cmp $0x2,%al + 40077a: 7f 00 jg 40077c + 40077c: 00 00 add %al,(%rax) + ... + +000000000040077f : + 40077f: 55 push %rbp + 400780: 48 89 e5 mov %rsp,%rbp + 400783: 48 83 ec 10 sub $0x10,%rsp + 400787: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) + 40078c: 48 8b 15 6d 15 00 00 mov 0x156d(%rip),%rdx # 401d00 + 400793: 48 8b 42 f8 mov -0x8(%rdx),%rax + 400797: 48 3d 48 cd 5d 65 cmp $0x655dcd48,%rax + 40079d: 74 02 je 4007a1 + 40079f: 0f 0b ud2 + 4007a1: b8 00 00 00 00 mov $0x0,%eax + 4007a6: ff d2 callq *%rdx + 4007a8: 8b 15 76 15 00 00 mov 0x1576(%rip),%edx # 401d24 + 4007ae: 01 d0 add %edx,%eax + 4007b0: 89 05 6e 15 00 00 mov %eax,0x156e(%rip) # 401d24 + 4007b6: 8b 05 68 15 00 00 mov 0x1568(%rip),%eax # 401d24 + 4007bc: 89 c6 mov %eax,%esi + 4007be: bf 2d 09 40 00 mov $0x40092d,%edi + 4007c3: b8 00 00 00 00 mov $0x0,%eax + 4007c8: e8 83 fd ff ff callq 400550 + 4007cd: 48 8b 15 2c 15 00 00 mov 0x152c(%rip),%rdx # 401d00 + 4007d4: 48 8b 42 f8 mov -0x8(%rdx),%rax + 4007d8: 48 3d 48 cd 5d 65 cmp $0x655dcd48,%rax + 4007de: 74 02 je 4007e2 + 4007e0: 0f 0b ud2 + 4007e2: b8 00 00 00 00 mov $0x0,%eax + 4007e7: ff d2 callq *%rdx + 4007e9: f2 0f 10 45 f8 movsd -0x8(%rbp),%xmm0 + 4007ee: f2 0f 2c d0 cvttsd2si %xmm0,%edx + 4007f2: 01 d0 add %edx,%eax + 4007f4: c9 leaveq + 4007f5: c3 retq + 4007f6: f3 3c 02 repz cmp $0x2,%al + 4007f9: 7f 00 jg 4007fb + 4007fb: 00 00 add %al,(%rax) + ... + +00000000004007fe : + 4007fe: 55 push %rbp + 4007ff: 48 89 e5 mov %rsp,%rbp + 400802: 48 83 ec 10 sub $0x10,%rsp + 400806: f2 0f 11 45 f8 movsd %xmm0,-0x8(%rbp) + 40080b: 48 8b 15 ee 14 00 00 mov 0x14ee(%rip),%rdx # 401d00 + 400812: 48 8b 42 f8 mov -0x8(%rdx),%rax + 400816: 48 3d 48 cd 5d 65 cmp $0x655dcd48,%rax + 40081c: 74 02 je 400820 + 40081e: 0f 0b ud2 + 400820: b8 00 00 00 00 mov $0x0,%eax + 400825: ff d2 callq *%rdx + 400827: 8b 15 f7 14 00 00 mov 0x14f7(%rip),%edx # 401d24 + 40082d: 01 d0 add %edx,%eax + 40082f: 89 05 ef 14 00 00 mov %eax,0x14ef(%rip) # 401d24 + 400835: 8b 05 e9 14 00 00 mov 0x14e9(%rip),%eax # 401d24 + 40083b: 89 c6 mov %eax,%esi + 40083d: bf 2d 09 40 00 mov $0x40092d,%edi + 400842: b8 00 00 00 00 mov $0x0,%eax + 400847: e8 04 fd ff ff callq 400550 + 40084c: 48 8b 15 ad 14 00 00 mov 0x14ad(%rip),%rdx # 401d00 + 400853: 48 8b 42 f8 mov -0x8(%rdx),%rax + 400857: 48 3d 48 cd 5d 65 cmp $0x655dcd48,%rax + 40085d: 74 02 je 400861 + 40085f: 0f 0b ud2 + 400861: b8 00 00 00 00 mov $0x0,%eax + 400866: ff d2 callq *%rdx + 400868: f2 0f 10 45 f8 movsd -0x8(%rbp),%xmm0 + 40086d: f2 0f 2c d0 cvttsd2si %xmm0,%edx + 400871: 29 d0 sub %edx,%eax + 400873: c9 leaveq + 400874: c3 retq + 400875: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1) + 40087c: 00 00 00 00 + +0000000000400880 <__libc_csu_init>: + 400880: 41 57 push %r15 + 400882: 41 56 push %r14 + 400884: 41 89 ff mov %edi,%r15d + 400887: 41 55 push %r13 + 400889: 41 54 push %r12 + 40088b: 4c 8d 25 86 14 00 00 lea 0x1486(%rip),%r12 # 401d18 <__frame_dummy_init_array_entry> + 400892: 55 push %rbp + 400893: 48 8d 2d 86 14 00 00 lea 0x1486(%rip),%rbp # 401d20 <__bss_start> + 40089a: 53 push %rbx + 40089b: 49 89 f6 mov %rsi,%r14 + 40089e: 49 89 d5 mov %rdx,%r13 + 4008a1: 4c 29 e5 sub %r12,%rbp + 4008a4: 48 83 ec 08 sub $0x8,%rsp + 4008a8: 48 c1 fd 03 sar $0x3,%rbp + 4008ac: e8 27 fc ff ff callq 4004d8 <_init> + 4008b1: 48 85 ed test %rbp,%rbp + 4008b4: 74 20 je 4008d6 <__libc_csu_init+0x56> + 4008b6: 31 db xor %ebx,%ebx + 4008b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) + 4008bf: 00 + 4008c0: 4c 89 ea mov %r13,%rdx + 4008c3: 4c 89 f6 mov %r14,%rsi + 4008c6: 44 89 ff mov %r15d,%edi + 4008c9: 41 ff 14 dc callq *(%r12,%rbx,8) + 4008cd: 48 83 c3 01 add $0x1,%rbx + 4008d1: 48 39 eb cmp %rbp,%rbx + 4008d4: 75 ea jne 4008c0 <__libc_csu_init+0x40> + 4008d6: 48 83 c4 08 add $0x8,%rsp + 4008da: 5b pop %rbx + 4008db: 5d pop %rbp + 4008dc: 41 5c pop %r12 + 4008de: 41 5d pop %r13 + 4008e0: 41 5e pop %r14 + 4008e2: 41 5f pop %r15 + 4008e4: c3 retq + 4008e5: 90 nop + 4008e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) + 4008ed: 00 00 00 + +00000000004008f0 <__libc_csu_fini>: + 4008f0: f3 c3 repz retq + +Disassembly of section .fini: + +00000000004008f4 <_fini>: + 4008f4: 48 83 ec 08 sub $0x8,%rsp + 4008f8: 48 83 c4 08 add $0x8,%rsp + 4008fc: c3 retq + +Disassembly of section .rodata: + +0000000000400900 <_IO_stdin_used>: + 400900: 01 00 add %eax,(%rax) + 400902: 02 00 add (%rax),%al + 400904: 79 65 jns 40096b <__PRETTY_FUNCTION__.2206+0x43> + 400906: 73 00 jae 400908 <_IO_stdin_used+0x8> + 400908: 2e 2e 2f cs cs (bad) + 40090b: 2e 2e 2f cs cs (bad) + 40090e: 74 65 je 400975 <__PRETTY_FUNCTION__.2206+0x4d> + 400910: 73 74 jae 400986 <__PRETTY_FUNCTION__.2206+0x5e> + 400912: 63 61 73 movslq 0x73(%rcx),%esp + 400915: 65 2f gs (bad) + 400917: 63 66 69 movslq 0x69(%rsi),%esp + 40091a: 31 2e xor %ebp,(%rsi) + 40091c: 63 00 movslq (%rax),%eax + 40091e: 21 20 and %esp,(%rax) + 400920: 22 65 72 and 0x72(%rbp),%ah + 400923: 72 6f jb 400994 <__PRETTY_FUNCTION__.2206+0x6c> + 400925: 72 22 jb 400949 <__PRETTY_FUNCTION__.2206+0x21> + ... + +0000000000400928 <__PRETTY_FUNCTION__.2206>: + 400928: 6d insl (%dx),%es:(%rdi) + 400929: 61 (bad) + 40092a: 69 6e 00 25 64 0a 00 imul $0xa6425,0x0(%rsi),%ebp + +Disassembly of section .eh_frame: + +0000000000400938 <__FRAME_END__-0x150>: + 400938: 14 00 adc $0x0,%al + 40093a: 00 00 add %al,(%rax) + 40093c: 00 00 add %al,(%rax) + 40093e: 00 00 add %al,(%rax) + 400940: 01 7a 52 add %edi,0x52(%rdx) + 400943: 00 01 add %al,(%rcx) + 400945: 78 10 js 400957 <__PRETTY_FUNCTION__.2206+0x2f> + 400947: 01 1b add %ebx,(%rbx) + 400949: 0c 07 or $0x7,%al + 40094b: 08 90 01 00 00 1c or %dl,0x1c000001(%rax) + 400951: 00 00 add %al,(%rax) + 400953: 00 1c 00 add %bl,(%rax,%rax,1) + 400956: 00 00 add %al,(%rax) + 400958: fd std + 400959: fc cld + 40095a: ff (bad) + 40095b: ff 0f decl (%rdi) + 40095d: 01 00 add %eax,(%rax) + 40095f: 00 00 add %al,(%rax) + 400961: 41 0e rex.B (bad) + 400963: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) + 400969: 03 0a add (%rdx),%ecx + 40096b: 01 0c 07 add %ecx,(%rdi,%rax,1) + 40096e: 08 00 or %al,(%rax) + 400970: 1c 00 sbb $0x0,%al + 400972: 00 00 add %al,(%rax) + 400974: 3c 00 cmp $0x0,%al + 400976: 00 00 add %al,(%rax) + 400978: f4 hlt + 400979: fd std + 40097a: ff (bad) + 40097b: ff 0b decl (%rbx) + 40097d: 00 00 add %al,(%rax) + 40097f: 00 00 add %al,(%rax) + 400981: 41 0e rex.B (bad) + 400983: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) + 400989: 46 0c 07 rex.RX or $0x7,%al + 40098c: 08 00 or %al,(%rax) + 40098e: 00 00 add %al,(%rax) + 400990: 1c 00 sbb $0x0,%al + 400992: 00 00 add %al,(%rax) + 400994: 5c pop %rsp + 400995: 00 00 add %al,(%rax) + 400997: 00 e7 add %ah,%bh + 400999: fd std + 40099a: ff (bad) + 40099b: ff 77 00 pushq 0x0(%rdi) + 40099e: 00 00 add %al,(%rax) + 4009a0: 00 41 0e add %al,0xe(%rcx) + 4009a3: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) + 4009a9: 02 72 0c add 0xc(%rdx),%dh + 4009ac: 07 (bad) + 4009ad: 08 00 or %al,(%rax) + 4009af: 00 1c 00 add %bl,(%rax,%rax,1) + 4009b2: 00 00 add %al,(%rax) + 4009b4: 7c 00 jl 4009b6 <__PRETTY_FUNCTION__.2206+0x8e> + 4009b6: 00 00 add %al,(%rax) + 4009b8: 46 fe rex.RX (bad) + 4009ba: ff (bad) + 4009bb: ff 77 00 pushq 0x0(%rdi) + 4009be: 00 00 add %al,(%rax) + 4009c0: 00 41 0e add %al,0xe(%rcx) + 4009c3: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) + 4009c9: 02 72 0c add 0xc(%rdx),%dh + 4009cc: 07 (bad) + 4009cd: 08 00 or %al,(%rax) + 4009cf: 00 44 00 00 add %al,0x0(%rax,%rax,1) + 4009d3: 00 9c 00 00 00 a8 fe add %bl,-0x1580000(%rax,%rax,1) + 4009da: ff (bad) + 4009db: ff 65 00 jmpq *0x0(%rbp) + 4009de: 00 00 add %al,(%rax) + 4009e0: 00 42 0e add %al,0xe(%rdx) + 4009e3: 10 8f 02 42 0e 18 adc %cl,0x180e4202(%rdi) + 4009e9: 8e 03 mov (%rbx),%es + 4009eb: 45 0e rex.RB (bad) + 4009ed: 20 8d 04 42 0e 28 and %cl,0x280e4204(%rbp) + 4009f3: 8c 05 48 0e 30 86 mov %es,-0x79cff1b8(%rip) # ffffffff86701841 <_end+0xffffffff862ffaf9> + 4009f9: 06 (bad) + 4009fa: 48 0e rex.W (bad) + 4009fc: 38 83 07 4d 0e 40 cmp %al,0x400e4d07(%rbx) + 400a02: 72 0e jb 400a12 <__PRETTY_FUNCTION__.2206+0xea> + 400a04: 38 41 0e cmp %al,0xe(%rcx) + 400a07: 30 41 0e xor %al,0xe(%rcx) + 400a0a: 28 42 0e sub %al,0xe(%rdx) + 400a0d: 20 42 0e and %al,0xe(%rdx) + 400a10: 18 42 0e sbb %al,0xe(%rdx) + 400a13: 10 42 0e adc %al,0xe(%rdx) + 400a16: 08 00 or %al,(%rax) + 400a18: 14 00 adc $0x0,%al + 400a1a: 00 00 add %al,(%rax) + 400a1c: e4 00 in $0x0,%al + 400a1e: 00 00 add %al,(%rax) + 400a20: d0 fe sar %dh + 400a22: ff (bad) + 400a23: ff 02 incl (%rdx) + ... + 400a2d: 00 00 add %al,(%rax) + 400a2f: 00 24 00 add %ah,(%rax,%rax,1) + 400a32: 00 00 add %al,(%rax) + 400a34: fc cld + 400a35: 00 00 add %al,(%rax) + 400a37: 00 c8 add %cl,%al + 400a39: fa cli + 400a3a: ff (bad) + 400a3b: ff 60 00 jmpq *0x0(%rax) + 400a3e: 00 00 add %al,(%rax) + 400a40: 00 0e add %cl,(%rsi) + 400a42: 10 46 0e adc %al,0xe(%rsi) + 400a45: 18 4a 0f sbb %cl,0xf(%rdx) + 400a48: 0b 77 08 or 0x8(%rdi),%esi + 400a4b: 80 00 3f addb $0x3f,(%rax) + 400a4e: 1a 3b sbb (%rbx),%bh + 400a50: 2a 33 sub (%rbx),%dh + 400a52: 24 22 and $0x22,%al + 400a54: 00 00 add %al,(%rax) + 400a56: 00 00 add %al,(%rax) + 400a58: 14 00 adc $0x0,%al + 400a5a: 00 00 add %al,(%rax) + 400a5c: 00 00 add %al,(%rax) + 400a5e: 00 00 add %al,(%rax) + 400a60: 01 7a 52 add %edi,0x52(%rdx) + 400a63: 00 01 add %al,(%rcx) + 400a65: 78 10 js 400a77 <__PRETTY_FUNCTION__.2206+0x14f> + 400a67: 01 1b add %ebx,(%rbx) + 400a69: 0c 07 or $0x7,%al + 400a6b: 08 90 01 07 10 14 or %dl,0x14100701(%rax) + 400a71: 00 00 add %al,(%rax) + 400a73: 00 1c 00 add %bl,(%rax,%rax,1) + 400a76: 00 00 add %al,(%rax) + 400a78: e8 fa ff ff 2a callq 2b400a77 <_end+0x2affed2f> + ... + +0000000000400a88 <__FRAME_END__>: + 400a88: 00 00 add %al,(%rax) + ... + +Disassembly of section .eh_frame_hdr: + +0000000000400a8c <.eh_frame_hdr>: + 400a8c: 01 1b add %ebx,(%rbx) + 400a8e: 03 3b add (%rbx),%edi + 400a90: a8 fe test $0xfe,%al + 400a92: ff (bad) + 400a93: ff 08 decl (%rax) + 400a95: 00 00 add %al,(%rax) + 400a97: 00 74 fa ff add %dh,-0x1(%rdx,%rdi,8) + 400a9b: ff a4 ff ff ff d4 fa jmpq *-0x52b0001(%rdi,%rdi,8) + 400aa2: ff (bad) + 400aa3: ff e4 jmpq *%rsp + 400aa5: ff (bad) + 400aa6: ff (bad) + 400aa7: ff c9 dec %ecx + 400aa9: fb sti + 400aaa: ff (bad) + 400aab: ff c4 inc %esp + 400aad: fe (bad) + 400aae: ff (bad) + 400aaf: ff e0 jmpq *%rax + 400ab1: fc cld + 400ab2: ff (bad) + 400ab3: ff e4 jmpq *%rsp + 400ab5: fe (bad) + 400ab6: ff (bad) + 400ab7: ff f3 push %rbx + 400ab9: fc cld + 400aba: ff (bad) + 400abb: ff 04 ff incl (%rdi,%rdi,8) + 400abe: ff (bad) + 400abf: ff 72 fd pushq -0x3(%rdx) + 400ac2: ff (bad) + 400ac3: ff 24 ff jmpq *(%rdi,%rdi,8) + 400ac6: ff (bad) + 400ac7: ff f4 push %rsp + 400ac9: fd std + 400aca: ff (bad) + 400acb: ff 44 ff ff incl -0x1(%rdi,%rdi,8) + 400acf: ff 64 fe ff jmpq *-0x1(%rsi,%rdi,8) + 400ad3: ff .byte 0xff + 400ad4: 8c ff mov %?,%edi + 400ad6: ff (bad) + 400ad7: ff .byte 0xff + +Disassembly of section .dynamic: + +0000000000401ad8 <_DYNAMIC>: + 401ad8: 03 00 add (%rax),%eax + 401ada: 00 00 add %al,(%rax) + 401adc: 00 00 add %al,(%rax) + 401ade: 00 00 add %al,(%rax) + 401ae0: b0 1c mov $0x1c,%al + 401ae2: 40 00 00 add %al,(%rax) + 401ae5: 00 00 add %al,(%rax) + 401ae7: 00 02 add %al,(%rdx) + 401ae9: 00 00 add %al,(%rax) + 401aeb: 00 00 add %al,(%rax) + 401aed: 00 00 add %al,(%rax) + 401aef: 00 78 00 add %bh,0x0(%rax) + 401af2: 00 00 add %al,(%rax) + 401af4: 00 00 add %al,(%rax) + 401af6: 00 00 add %al,(%rax) + 401af8: 17 (bad) + 401af9: 00 00 add %al,(%rax) + 401afb: 00 00 add %al,(%rax) + 401afd: 00 00 add %al,(%rax) + 401aff: 00 60 04 add %ah,0x4(%rax) + 401b02: 40 00 00 add %al,(%rax) + 401b05: 00 00 add %al,(%rax) + 401b07: 00 14 00 add %dl,(%rax,%rax,1) + 401b0a: 00 00 add %al,(%rax) + 401b0c: 00 00 add %al,(%rax) + 401b0e: 00 00 add %al,(%rax) + 401b10: 07 (bad) + 401b11: 00 00 add %al,(%rax) + 401b13: 00 00 add %al,(%rax) + 401b15: 00 00 add %al,(%rax) + 401b17: 00 07 add %al,(%rdi) + 401b19: 00 00 add %al,(%rax) + 401b1b: 00 00 add %al,(%rax) + 401b1d: 00 00 add %al,(%rax) + 401b1f: 00 48 04 add %cl,0x4(%rax) + 401b22: 40 00 00 add %al,(%rax) + 401b25: 00 00 add %al,(%rax) + 401b27: 00 08 add %cl,(%rax) + 401b29: 00 00 add %al,(%rax) + 401b2b: 00 00 add %al,(%rax) + 401b2d: 00 00 add %al,(%rax) + 401b2f: 00 18 add %bl,(%rax) + 401b31: 00 00 add %al,(%rax) + 401b33: 00 00 add %al,(%rax) + 401b35: 00 00 add %al,(%rax) + 401b37: 00 09 add %cl,(%rcx) + 401b39: 00 00 add %al,(%rax) + 401b3b: 00 00 add %al,(%rax) + 401b3d: 00 00 add %al,(%rax) + 401b3f: 00 18 add %bl,(%rax) + 401b41: 00 00 add %al,(%rax) + 401b43: 00 00 add %al,(%rax) + 401b45: 00 00 add %al,(%rax) + 401b47: 00 15 00 00 00 00 add %dl,0x0(%rip) # 401b4d <_DYNAMIC+0x75> + ... + 401b55: 00 00 add %al,(%rax) + 401b57: 00 06 add %al,(%rsi) + 401b59: 00 00 add %al,(%rax) + 401b5b: 00 00 add %al,(%rax) + 401b5d: 00 00 add %al,(%rax) + 401b5f: 00 60 02 add %ah,0x2(%rax) + 401b62: 40 00 00 add %al,(%rax) + 401b65: 00 00 add %al,(%rax) + 401b67: 00 0b add %cl,(%rbx) + 401b69: 00 00 add %al,(%rax) + 401b6b: 00 00 add %al,(%rax) + 401b6d: 00 00 add %al,(%rax) + 401b6f: 00 18 add %bl,(%rax) + 401b71: 00 00 add %al,(%rax) + 401b73: 00 00 add %al,(%rax) + 401b75: 00 00 add %al,(%rax) + 401b77: 00 05 00 00 00 00 add %al,0x0(%rip) # 401b7d <_DYNAMIC+0xa5> + 401b7d: 00 00 add %al,(%rax) + 401b7f: 00 38 add %bh,(%rax) + 401b81: 03 40 00 add 0x0(%rax),%eax + 401b84: 00 00 add %al,(%rax) + 401b86: 00 00 add %al,(%rax) + 401b88: 0a 00 or (%rax),%al + 401b8a: 00 00 add %al,(%rax) + 401b8c: 00 00 add %al,(%rax) + 401b8e: 00 00 add %al,(%rax) + 401b90: 9c pushfq + 401b91: 00 00 add %al,(%rax) + 401b93: 00 00 add %al,(%rax) + 401b95: 00 00 add %al,(%rax) + 401b97: 00 04 00 add %al,(%rax,%rax,1) + 401b9a: 00 00 add %al,(%rax) + 401b9c: 00 00 add %al,(%rax) + 401b9e: 00 00 add %al,(%rax) + 401ba0: d8 03 fadds (%rbx) + 401ba2: 40 00 00 add %al,(%rax) + 401ba5: 00 00 add %al,(%rax) + 401ba7: 00 01 add %al,(%rcx) + 401ba9: 00 00 add %al,(%rax) + 401bab: 00 00 add %al,(%rax) + 401bad: 00 00 add %al,(%rax) + 401baf: 00 1f add %bl,(%rdi) + 401bb1: 00 00 add %al,(%rax) + 401bb3: 00 00 add %al,(%rax) + 401bb5: 00 00 add %al,(%rax) + 401bb7: 00 0c 00 add %cl,(%rax,%rax,1) + 401bba: 00 00 add %al,(%rax) + 401bbc: 00 00 add %al,(%rax) + 401bbe: 00 00 add %al,(%rax) + 401bc0: d8 04 40 fadds (%rax,%rax,2) + 401bc3: 00 00 add %al,(%rax) + 401bc5: 00 00 add %al,(%rax) + 401bc7: 00 0d 00 00 00 00 add %cl,0x0(%rip) # 401bcd <_DYNAMIC+0xf5> + 401bcd: 00 00 add %al,(%rax) + 401bcf: 00 f4 add %dh,%ah + 401bd1: 08 40 00 or %al,0x0(%rax) + 401bd4: 00 00 add %al,(%rax) + 401bd6: 00 00 add %al,(%rax) + 401bd8: 1a 00 sbb (%rax),%al + 401bda: 00 00 add %al,(%rax) + 401bdc: 00 00 add %al,(%rax) + 401bde: 00 00 add %al,(%rax) + 401be0: 10 1d 40 00 00 00 adc %bl,0x40(%rip) # 401c26 <_DYNAMIC+0x14e> + 401be6: 00 00 add %al,(%rax) + 401be8: 1c 00 sbb $0x0,%al + 401bea: 00 00 add %al,(%rax) + 401bec: 00 00 add %al,(%rax) + 401bee: 00 00 add %al,(%rax) + 401bf0: 08 00 or %al,(%rax) + 401bf2: 00 00 add %al,(%rax) + 401bf4: 00 00 add %al,(%rax) + 401bf6: 00 00 add %al,(%rax) + 401bf8: 19 00 sbb %eax,(%rax) + 401bfa: 00 00 add %al,(%rax) + 401bfc: 00 00 add %al,(%rax) + 401bfe: 00 00 add %al,(%rax) + 401c00: 18 1d 40 00 00 00 sbb %bl,0x40(%rip) # 401c46 <_DYNAMIC+0x16e> + 401c06: 00 00 add %al,(%rax) + 401c08: 1b 00 sbb (%rax),%eax + 401c0a: 00 00 add %al,(%rax) + 401c0c: 00 00 add %al,(%rax) + 401c0e: 00 00 add %al,(%rax) + 401c10: 08 00 or %al,(%rax) + 401c12: 00 00 add %al,(%rax) + 401c14: 00 00 add %al,(%rax) + 401c16: 00 00 add %al,(%rax) + 401c18: f0 ff lock (bad) + 401c1a: ff 6f 00 ljmp *0x0(%rdi) + 401c1d: 00 00 add %al,(%rax) + 401c1f: 00 10 add %dl,(%rax) + 401c21: 04 40 add $0x40,%al + 401c23: 00 00 add %al,(%rax) + 401c25: 00 00 add %al,(%rax) + 401c27: 00 fe add %bh,%dh + 401c29: ff (bad) + 401c2a: ff 6f 00 ljmp *0x0(%rdi) + 401c2d: 00 00 add %al,(%rax) + 401c2f: 00 24 04 add %ah,(%rsp,%rax,1) + 401c32: 40 00 00 add %al,(%rax) + 401c35: 00 00 add %al,(%rax) + 401c37: 00 ff add %bh,%bh + 401c39: ff (bad) + 401c3a: ff 6f 00 ljmp *0x0(%rdi) + 401c3d: 00 00 add %al,(%rax) + 401c3f: 00 01 add %al,(%rcx) + ... + +Disassembly of section .got: + +0000000000401ca8 <.got>: + ... + +Disassembly of section .got.plt: + +0000000000401cb0 <_GLOBAL_OFFSET_TABLE_>: + 401cb0: d8 1a fcomps (%rdx) + 401cb2: 40 00 00 add %al,(%rax) + ... + 401cc5: 00 00 add %al,(%rax) + 401cc7: 00 16 add %dl,(%rsi) + 401cc9: 05 40 00 00 00 add $0x40,%eax + 401cce: 00 00 add %al,(%rax) + 401cd0: 26 05 40 00 00 00 es add $0x40,%eax + 401cd6: 00 00 add %al,(%rax) + 401cd8: 36 05 40 00 00 00 ss add $0x40,%eax + 401cde: 00 00 add %al,(%rax) + 401ce0: 46 05 40 00 00 00 rex.RX add $0x40,%eax + 401ce6: 00 00 add %al,(%rax) + 401ce8: 56 push %rsi + 401ce9: 05 40 00 00 00 add $0x40,%eax + ... + +Disassembly of section .data: + +0000000000401cf0 <__data_start>: + ... + +0000000000401cf8 <__dso_handle>: + ... + +0000000000401d00 : + 401d00: 6c insb (%dx),%es:(%rdi) + 401d01: 07 (bad) + 401d02: 40 00 00 add %al,(%rax) + 401d05: 00 00 add %al,(%rax) + ... + +Disassembly of section .jcr: + +0000000000401d08 <__JCR_END__>: + ... + +Disassembly of section .fini_array: + +0000000000401d10 <__do_global_dtors_aux_fini_array_entry>: + 401d10: 00 06 add %al,(%rsi) + 401d12: 40 00 00 add %al,(%rax) + 401d15: 00 00 add %al,(%rax) + ... + +Disassembly of section .init_array: + +0000000000401d18 <__frame_dummy_init_array_entry>: + 401d18: 20 06 and %al,(%rsi) + 401d1a: 40 00 00 add %al,(%rax) + 401d1d: 00 00 add %al,(%rax) + ... + +Disassembly of section .bss: + +0000000000401d20 : + 401d20: 00 00 add %al,(%rax) + ... + +0000000000401d24 : + ... + +0000000000401d30 : + ... + +0000000000401d40 : + 401d40: 00 00 add %al,(%rax) + ... + +0000000000401d44 : + 401d44: 00 00 add %al,(%rax) + ... + +Disassembly of section .comment: + +0000000000000000 <.comment>: + 0: 00 47 43 add %al,0x43(%rdi) + 3: 43 3a 20 rex.XB cmp (%r8),%spl + 6: 28 47 4e sub %al,0x4e(%rdi) + 9: 55 push %rbp + a: 29 20 sub %esp,(%rax) + c: 34 2e xor $0x2e,%al + e: 38 2e cmp %ch,(%rsi) + 10: 35 .byte 0x35 + ... + +Disassembly of section .note.gnu.gold-version: + +0000000000000000 <.note.gnu.gold-version>: + 0: 04 00 add $0x0,%al + 2: 00 00 add %al,(%rax) + 4: 09 00 or %eax,(%rax) + 6: 00 00 add %al,(%rax) + 8: 04 00 add $0x0,%al + a: 00 00 add %al,(%rax) + c: 47 rex.RXB + d: 4e 55 rex.WRX push %rbp + f: 00 67 6f add %ah,0x6f(%rdi) + 12: 6c insb (%dx),%es:(%rdi) + 13: 64 20 31 and %dh,%fs:(%rcx) + 16: 2e 31 31 xor %esi,%cs:(%rcx) + 19: 00 00 add %al,(%rax) + ... diff --git a/src/rap_plugin/hl-cfi.c b/src/rap_plugin/hl-cfi.c index e1c2810..3052500 100644 --- a/src/rap_plugin/hl-cfi.c +++ b/src/rap_plugin/hl-cfi.c @@ -814,8 +814,14 @@ build_cfi (gimple_stmt_iterator *labile_gsi_addr, basic_block* labile_bb_addr) gcc_assert (is_gimple_call (cs)); decl = gimple_call_fn (cs); /* We must be indirect call */ - gcc_assert (TREE_CODE (decl) == SSA_NAME); - gcc_assert (TREE_TYPE (TREE_TYPE (decl)) == cs->gimple_call.u.fntype); + /* If wwe set this assert ,will cause a kenerl compile internal bug. + it's looks like a compiler bug, because gcc will generate a + gimple_call(int_cst(0)) gimple code. */ + //gcc_assert (TREE_CODE (decl) == SSA_NAME); + if (tree_code (decl) != ssa_name) + return; + gcc_assert (types_compatible_p (tree_type (tree_type (decl)), + cs->gimple_call.u.fntype)); /* build source hash tree */ sh = build_cfi_hash_tree (cs, BUILD_SOURCE_HASH_TREE, NULL);