-
-
Save scottt/4089283 to your computer and use it in GitHub Desktop.
C++ abstract base class and destructors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "b.cpp" | |
.section .text._ZN1BD2Ev,"axG",@progbits,B::~B(),comdat | |
.align 2 | |
.weak B::~B() | |
.type B::~B(), @function | |
B::~B(): | |
.LFB9: | |
.cfi_startproc | |
movq vtable for B+16, (%rdi) | |
jmp A::~A() | |
.cfi_endproc | |
.LFE9: | |
.size B::~B(), .-B::~B() | |
.weak B::~B() | |
.set B::~B(),B::~B() | |
.section .text._ZN1BD0Ev,"axG",@progbits,B::~B(),comdat | |
.align 2 | |
.weak B::~B() | |
.type B::~B(), @function | |
B::~B(): | |
.LFB11: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq %rdi, %rbx | |
call B::~B() | |
movq %rbx, %rdi | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
jmp operator delete(void*) | |
.cfi_endproc | |
.LFE11: | |
.size B::~B(), .-B::~B() | |
.text | |
.align 2 | |
.globl B::Create() | |
.type B::Create(), @function | |
B::Create(): | |
.LFB0: | |
.cfi_startproc | |
pushq %rax | |
.cfi_def_cfa_offset 16 | |
movl $8, %edi | |
call operator new(unsigned long) | |
movq vtable for B+16, (%rax) | |
popq %rdx | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE0: | |
.size B::Create(), .-B::Create() | |
.section .text.startup,"ax",@progbits | |
.globl main | |
.type main, @function | |
main: | |
.LFB7: | |
.cfi_startproc | |
pushq %rcx | |
.cfi_def_cfa_offset 16 | |
call B::Create() | |
xorl %eax, %eax | |
popq %rsi | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE7: | |
.size main, .-main | |
.weak vtable for A | |
.section .rodata._ZTV1A,"aG",@progbits,vtable for A,comdat | |
.align 16 | |
.type vtable for A, @object | |
.size vtable for A, 32 | |
vtable for A: | |
.quad 0 | |
.quad typeinfo for A | |
.quad __cxa_pure_virtual | |
.quad __cxa_pure_virtual | |
.weak vtable for B | |
.section .rodata._ZTV1B,"aG",@progbits,vtable for B,comdat | |
.align 16 | |
.type vtable for B, @object | |
.size vtable for B, 32 | |
vtable for B: | |
.quad 0 | |
.quad typeinfo for B | |
.quad B::~B() | |
.quad B::~B() | |
.weak typeinfo for A | |
.section .rodata._ZTI1A,"aG",@progbits,typeinfo for A,comdat | |
.align 16 | |
.type typeinfo for A, @object | |
.size typeinfo for A, 16 | |
typeinfo for A: | |
.quad vtable for __cxxabiv1::__class_type_info+16 | |
.quad typeinfo name for A | |
.weak typeinfo for B | |
.section .rodata._ZTI1B,"aG",@progbits,typeinfo for B,comdat | |
.align 16 | |
.type typeinfo for B, @object | |
.size typeinfo for B, 24 | |
typeinfo for B: | |
.quad vtable for __cxxabiv1::__si_class_type_info+16 | |
.quad typeinfo name for B | |
.quad typeinfo for A | |
.weak typeinfo name for A | |
.section .rodata._ZTS1A,"aG",@progbits,typeinfo name for A,comdat | |
.type typeinfo name for A, @object | |
.size typeinfo name for A, 3 | |
typeinfo name for A: | |
.string "1A" | |
.weak typeinfo name for B | |
.section .rodata._ZTS1B,"aG",@progbits,typeinfo name for B,comdat | |
.type typeinfo name for B, @object | |
.size typeinfo name for B, 3 | |
typeinfo name for B: | |
.string "1B" | |
.ident "GCC: (GNU) 4.7.2 20120921 (Red Hat 4.7.2-2)" | |
.section .note.GNU-stack,"",@progbits |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment