GAS LISTING /tmp/ccaAJODS.s page 1 1 .file "dynamic-cast.cpp" 2 .text 3 .Ltext0: 4 .align 2 5 .globl _ZN9onefield38setFieldEi 7 _ZN9onefield38setFieldEi: 8 .LFB7: 9 .file 1 "dynamic-cast.cpp" 1:dynamic-cast.cpp **** class onefield3 { 2:dynamic-cast.cpp **** private: 3:dynamic-cast.cpp **** int field; 4:dynamic-cast.cpp **** public: 5:dynamic-cast.cpp **** virtual void setField(int f); 6:dynamic-cast.cpp **** virtual int getField() const; 7:dynamic-cast.cpp **** }; 8:dynamic-cast.cpp **** 9:dynamic-cast.cpp **** class onefield3_subclass : public onefield3 { 10:dynamic-cast.cpp **** private: 11:dynamic-cast.cpp **** int otherfield; 12:dynamic-cast.cpp **** public: 13:dynamic-cast.cpp **** // Override setField, but not getField. 14:dynamic-cast.cpp **** virtual void setField(int f); 15:dynamic-cast.cpp **** }; 16:dynamic-cast.cpp **** 17:dynamic-cast.cpp **** int dynamicCast(int argc, const char **argv) { 18:dynamic-cast.cpp **** onefield3 *ofp = new onefield3_subclass; 19:dynamic-cast.cpp **** 20:dynamic-cast.cpp **** onefield3_subclass *ofsp = dynamic_cast<onefield3_subclass *>(ofp); 21:dynamic-cast.cpp **** 22:dynamic-cast.cpp **** delete ofsp; 23:dynamic-cast.cpp **** 24:dynamic-cast.cpp **** return 0; 25:dynamic-cast.cpp **** } 26:dynamic-cast.cpp **** 27:dynamic-cast.cpp **** 28:dynamic-cast.cpp **** void onefield3::setField(int f) { 10 .loc 1 28 0 11 .cfi_startproc 12 .LVL0: 29:dynamic-cast.cpp **** this->field = f; 13 .loc 1 29 0 14 0000 897708 movl %esi, 8(%rdi) 15 0003 C3 ret 16 .cfi_endproc 17 .LFE7: 19 .align 2 20 .globl _ZNK9onefield38getFieldEv 22 _ZNK9onefield38getFieldEv: 23 .LFB8: 30:dynamic-cast.cpp **** } 31:dynamic-cast.cpp **** int onefield3::getField() const { 24 .loc 1 31 0 25 .cfi_startproc 26 .LVL1: 32:dynamic-cast.cpp **** return this->field; 27 .loc 1 32 0 28 0004 8B4708 movl 8(%rdi), %eax GAS LISTING /tmp/ccaAJODS.s page 2 33:dynamic-cast.cpp **** } 29 .loc 1 33 0 30 0007 C3 ret 31 .cfi_endproc 32 .LFE8: 34 .align 2 35 .globl _ZN18onefield3_subclass8setFieldEi 37 _ZN18onefield3_subclass8setFieldEi: 38 .LFB9: 34:dynamic-cast.cpp **** 35:dynamic-cast.cpp **** void onefield3_subclass::setField(int f) { 39 .loc 1 35 0 40 .cfi_startproc 41 .LVL2: 42 0008 55 pushq %rbp 43 .cfi_def_cfa_offset 16 44 .cfi_offset 6, -16 45 0009 53 pushq %rbx 46 .cfi_def_cfa_offset 24 47 .cfi_offset 3, -24 48 000a 4889FB movq %rdi, %rbx 49 000d 89F5 movl %esi, %ebp 36:dynamic-cast.cpp **** onefield3::setField(f); 50 .loc 1 36 0 51 000f E8000000 call _ZN9onefield38setFieldEi 51 00 52 .LVL3: 37:dynamic-cast.cpp **** otherfield = f; 53 .loc 1 37 0 54 0014 896B0C movl %ebp, 12(%rbx) 38:dynamic-cast.cpp **** } 55 .loc 1 38 0 56 0017 5B popq %rbx 57 .cfi_def_cfa_offset 16 58 .LVL4: 59 0018 5D popq %rbp 60 .cfi_def_cfa_offset 8 61 .LVL5: 62 0019 C3 ret 63 .cfi_endproc 64 .LFE9: 66 .section .text._ZN9onefield3C2Ev,"axG",@progbits,_ZN9onefield3C5Ev,comdat 67 .align 2 68 .weak _ZN9onefield3C2Ev 70 _ZN9onefield3C2Ev: 71 .LFB3: 1:dynamic-cast.cpp **** private: 72 .loc 1 1 0 73 .cfi_startproc 74 .LVL6: 75 .LBB2: 1:dynamic-cast.cpp **** private: 76 .loc 1 1 0 77 0000 48C70700 movq $_ZTV9onefield3+16, (%rdi) 77 000000 78 0007 C3 ret 79 .LBE2: GAS LISTING /tmp/ccaAJODS.s page 3 80 .cfi_endproc 81 .LFE3: 83 .weak _ZN9onefield3C1Ev 84 .set _ZN9onefield3C1Ev,_ZN9onefield3C2Ev 85 .section .text._ZN18onefield3_subclassC2Ev,"axG",@progbits,_ZN18onefield3_subclassC5Ev,comdat 86 .align 2 87 .weak _ZN18onefield3_subclassC2Ev 89 _ZN18onefield3_subclassC2Ev: 90 .LFB5: 9:dynamic-cast.cpp **** private: 91 .loc 1 9 0 92 .cfi_startproc 93 .LVL7: 94 0000 53 pushq %rbx 95 .cfi_def_cfa_offset 16 96 .cfi_offset 3, -16 97 0001 4889FB movq %rdi, %rbx 98 .LBB3: 9:dynamic-cast.cpp **** private: 99 .loc 1 9 0 100 0004 E8000000 call _ZN9onefield3C2Ev 100 00 101 .LVL8: 102 0009 48C70300 movq $_ZTV18onefield3_subclass+16, (%rbx) 102 000000 103 .LBE3: 104 0010 5B popq %rbx 105 .cfi_def_cfa_offset 8 106 .LVL9: 107 0011 C3 ret 108 .cfi_endproc 109 .LFE5: 111 .weak _ZN18onefield3_subclassC1Ev 112 .set _ZN18onefield3_subclassC1Ev,_ZN18onefield3_subclassC2Ev 113 .text 114 .globl _Z11dynamicCastiPPKc 116 _Z11dynamicCastiPPKc: 117 .LFB0: 17:dynamic-cast.cpp **** onefield3 *ofp = new onefield3_subclass; 118 .loc 1 17 0 119 .cfi_startproc 120 .LVL10: 121 001a 53 pushq %rbx 122 .cfi_def_cfa_offset 16 123 .cfi_offset 3, -16 124 .LBB4: 18:dynamic-cast.cpp **** 125 .loc 1 18 0 126 001b BF100000 movl $16, %edi 126 00 127 .LVL11: 128 0020 E8000000 call _Znwm 128 00 129 .LVL12: 130 0025 4889C3 movq %rax, %rbx 131 0028 4889C7 movq %rax, %rdi 132 002b E8000000 call _ZN18onefield3_subclassC1Ev GAS LISTING /tmp/ccaAJODS.s page 4 132 00 133 .LVL13: 20:dynamic-cast.cpp **** 134 .loc 1 20 0 135 0030 4885DB testq %rbx, %rbx 136 0033 741C je .L10 20:dynamic-cast.cpp **** 137 .loc 1 20 0 is_stmt 0 discriminator 2 138 0035 B9000000 movl $0, %ecx 138 00 139 003a BA000000 movl $_ZTI18onefield3_subclass, %edx 139 00 140 003f BE000000 movl $_ZTI9onefield3, %esi 140 00 141 0044 4889DF movq %rbx, %rdi 142 0047 E8000000 call __dynamic_cast 142 00 143 .LVL14: 144 004c 4889C7 movq %rax, %rdi 145 004f EB05 jmp .L9 146 .L10: 20:dynamic-cast.cpp **** 147 .loc 1 20 0 148 0051 BF000000 movl $0, %edi 148 00 149 .L9: 150 .LVL15: 22:dynamic-cast.cpp **** 151 .loc 1 22 0 is_stmt 1 discriminator 3 152 0056 E8000000 call _ZdlPv 152 00 153 .LVL16: 154 .LBE4: 25:dynamic-cast.cpp **** 155 .loc 1 25 0 discriminator 3 156 005b B8000000 movl $0, %eax 156 00 157 0060 5B popq %rbx 158 .cfi_def_cfa_offset 8 159 .LVL17: 160 0061 C3 ret 161 .cfi_endproc 162 .LFE0: 164 .weak _ZTS9onefield3 165 .section .rodata._ZTS9onefield3,"aG",@progbits,_ZTS9onefield3,comdat 168 _ZTS9onefield3: 169 0000 396F6E65 .string "9onefield3" 169 6669656C 169 643300 170 .weak _ZTI9onefield3 171 .section .rodata._ZTI9onefield3,"aG",@progbits,_ZTI9onefield3,comdat 172 .align 16 175 _ZTI9onefield3: 176 0000 00000000 .quad _ZTVN10__cxxabiv117__class_type_infoE+16 176 00000000 177 0008 00000000 .quad _ZTS9onefield3 177 00000000 GAS LISTING /tmp/ccaAJODS.s page 5 178 .weak _ZTS18onefield3_subclass 179 .section .rodata._ZTS18onefield3_subclass,"aG",@progbits,_ZTS18onefield3_subclass,comdat 180 .align 16 183 _ZTS18onefield3_subclass: 184 0000 31386F6E .string "18onefield3_subclass" 184 65666965 184 6C64335F 184 73756263 184 6C617373 185 .weak _ZTI18onefield3_subclass 186 .section .rodata._ZTI18onefield3_subclass,"aG",@progbits,_ZTI18onefield3_subclass,comdat 187 .align 16 190 _ZTI18onefield3_subclass: 191 0000 00000000 .quad _ZTVN10__cxxabiv120__si_class_type_infoE+16 191 00000000 192 0008 00000000 .quad _ZTS18onefield3_subclass 192 00000000 193 0010 00000000 .quad _ZTI9onefield3 193 00000000 194 .weak _ZTV9onefield3 195 .section .rodata._ZTV9onefield3,"aG",@progbits,_ZTV9onefield3,comdat 196 .align 32 199 _ZTV9onefield3: 200 0000 00000000 .quad 0 200 00000000 201 0008 00000000 .quad _ZTI9onefield3 201 00000000 202 0010 00000000 .quad _ZN9onefield38setFieldEi 202 00000000 203 0018 00000000 .quad _ZNK9onefield38getFieldEv 203 00000000 204 .weak _ZTV18onefield3_subclass 205 .section .rodata._ZTV18onefield3_subclass,"aG",@progbits,_ZTV18onefield3_subclass,comdat 206 .align 32 209 _ZTV18onefield3_subclass: 210 0000 00000000 .quad 0 210 00000000 211 0008 00000000 .quad _ZTI18onefield3_subclass 211 00000000 212 0010 00000000 .quad _ZN18onefield3_subclass8setFieldEi 212 00000000 213 0018 00000000 .quad _ZNK9onefield38getFieldEv 213 00000000 214 .text 215 .Letext0: 216 .file 2 "<built-in>" GAS LISTING /tmp/ccaAJODS.s page 6 DEFINED SYMBOLS *ABS*:0000000000000000 dynamic-cast.cpp /tmp/ccaAJODS.s:7 .text:0000000000000000 _ZN9onefield38setFieldEi /tmp/ccaAJODS.s:22 .text:0000000000000004 _ZNK9onefield38getFieldEv /tmp/ccaAJODS.s:37 .text:0000000000000008 _ZN18onefield3_subclass8setFieldEi /tmp/ccaAJODS.s:70 .text._ZN9onefield3C2Ev:0000000000000000 _ZN9onefield3C2Ev /tmp/ccaAJODS.s:199 .rodata._ZTV9onefield3:0000000000000000 _ZTV9onefield3 /tmp/ccaAJODS.s:70 .text._ZN9onefield3C2Ev:0000000000000000 _ZN9onefield3C1Ev /tmp/ccaAJODS.s:89 .text._ZN18onefield3_subclassC2Ev:0000000000000000 _ZN18onefield3_subclassC2Ev /tmp/ccaAJODS.s:209 .rodata._ZTV18onefield3_subclass:0000000000000000 _ZTV18onefield3_subclass /tmp/ccaAJODS.s:89 .text._ZN18onefield3_subclassC2Ev:0000000000000000 _ZN18onefield3_subclassC1Ev /tmp/ccaAJODS.s:116 .text:000000000000001a _Z11dynamicCastiPPKc /tmp/ccaAJODS.s:190 .rodata._ZTI18onefield3_subclass:0000000000000000 _ZTI18onefield3_subclass /tmp/ccaAJODS.s:175 .rodata._ZTI9onefield3:0000000000000000 _ZTI9onefield3 /tmp/ccaAJODS.s:168 .rodata._ZTS9onefield3:0000000000000000 _ZTS9onefield3 /tmp/ccaAJODS.s:183 .rodata._ZTS18onefield3_subclass:0000000000000000 _ZTS18onefield3_subclass .group:0000000000000000 _ZN9onefield3C5Ev .group:0000000000000000 _ZN18onefield3_subclassC5Ev UNDEFINED SYMBOLS _Znwm __dynamic_cast _ZdlPv _ZTVN10__cxxabiv117__class_type_infoE _ZTVN10__cxxabiv120__si_class_type_infoE