Псевдоним и символ сборки - PullRequest
2 голосов
/ 03 марта 2020

1. cpp:

int meth() {
    return 0;
}
__asm__(".global  meth_alias \n meth_alias  = meth");
__asm__(".global  meth_alias2 \n meth_alias2  = meth");

2. cpp:

int meth_alias();
int meth_alias2();
int test()
{
    return meth_alias()+ meth_alias2();
}

сборка:

g++ -c -fPIC 1.cpp
g++ -c -fPIC 2.cpp
g++ -o 12.so --shared 1.o 2.o

Там должны быть символы "meth_alias "и" meth_alias2 "в 1.o, но как напечатать эти символы с помощью nm / objdump / readelf? Флаги существующих команд отображают псевдоним только как ОДИН неопределенный символ, называемый исходным именем «мет». Разве не должно быть одной записи для каждого псевдонима?

Является ли псевдоним обычными символами в таблице символов, то есть имя + адрес и адрес совпадают с исходным методом?

...