我可以使用PIMAGE_DOS_HEADER API(example)从Windows中的可执行文件中获取导出的函数名称和指针列表.
什么是Linux的等效API?
对于上下文我正在创建单元测试可执行文件,我正在导出以名称“test_”开头的函数,我希望可执行文件只是在运行时旋转并执行所有测试函数.
示例伪代码:
int main(int argc,char** argv)
{
auto run = new_trun();
auto module = dlopen(NULL);
auto exports = get_exports(module); //
编辑:
另外,我必须使用Nominal Animal的答案中的gnu_hashtab_symbol_count函数来处理DT_GNU_HASH而不是DT_HASH.
我的最终测试主要功能如下所示:
int main(int argc,char** argv)
{
vector
然后我在程序集中定义测试,如:
// test.h
#define START_TEST(name) extern "C" EXPORT TResult test_##name () {
#define END_TEST return tresult_success(); }
// foo.cc
START_TEST(foo_bar)
{
assert_pending();
}
END_TEST
这会产生如下所示的输出:
test_foo_bar: pending
1 pending
0 succeeded
1 total