readelf 查看“派生类”的vtable符号

一、查看 .rodata

c 复制代码
ubuntu@aaa $ readelf -x .rodata a.out

Hex dump of section '.rodata':
  0x00002000 01000200 00000000 02000000 00000000 ................
  0x00002010 20204465 72697665 6420636c 61737320   Derived class
  0x00002020 6f626a65 63742069 73206372 65617465 object is create
  0x00002030 6420616e 64206675 6e637469 6f6e2066 d and function f
  0x00002040 28292069 73206361 6c6c6564 2e000000 () is called....
  0x00002050 37446572 69766564 00344261 736500   7Derived.4Base.

ubuntu@aaa $

二、grep vtable没有结果

ubuntu@aaa$ readelf -x .rodata a.out |grep vtalbe

ubuntu@aaa $

三、虚函数除了声明,还需要定义

c 复制代码
ubuntu@aa $ g++ polymorph.cpp
/usr/bin/ld: /tmp/ccstK1jB.o: 
warning: 
relocation against `_ZTV4Base' in read-only section `.text._ZN4BaseC2Ev[_ZN4BaseC5Ev]'

/usr/bin/ld: /tmp/ccstK1jB.o: 
in function `Base::Base()':
polymorph.cpp:
(.text._ZN4BaseC2Ev[_ZN4BaseC5Ev]+0xf): 
undefined reference to `vtable for Base'

/usr/bin/ld: /tmp/ccstK1jB.o: 
in function `Derived::Derived()':
polymorph.cpp:
(.text._ZN7DerivedC2Ev[_ZN7DerivedC5Ev]+0x1f): 
undefined reference to `vtable for Derived'

/usr/bin/ld: warning: 
creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status

ubuntu@aa $
相关推荐
Είναι η κοπέλα11 分钟前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
今夜有雨.14 分钟前
图像运算、掩膜/ROI 与绘制交互
c语言·数据结构·c++·qt·算法·计算机视觉
UIU11415 分钟前
P1028 [NOIP 2001 普及组] 数的计算
c++·算法
大草原的小灰灰1 小时前
Python面向对象编程
开发语言·python
知识分享小能手1 小时前
C学习教程,从入门到精通,C语言概述 —— 知识点详解(1)
c语言·开发语言·学习
垆边人似月.1 小时前
日志时间窗口内的最大并发请求数(100分 / 滑动窗口 + 排序)
数据结构·c++·算法
Chen_harmony1 小时前
一、C++入门基础
开发语言·c++
学逆向的1 小时前
远程线程注入
开发语言·jvm·网络安全·win32
水饺编程2 小时前
第1章,[Win32 章节]:Windows 的方方面面
c语言·c++·windows·visual studio
阡陌数智2 小时前
RAG 系统的召回退化:向量库、分块、重排全链路问题排查与优化实践
开发语言·人工智能·语言模型·自然语言处理·推荐算法