Изменение имен символов после ссылки - PullRequest
3 голосов
/ 25 августа 2011

Можно ли взять статический объект и переименовать символы таким образом, чтобы он не прерывал вызовы функций?

Например, если у нас есть статический объект, содержащий две функции:

void A()
{
  //Do stuff
}

и

void B()
{
  A();
}

Если предположить, что это объявленные извне функции C, тогда .so будет содержать два символа - A и B. Есть ли способ переименовать A -> funcA и B -> funcB?

(Вторая часть вопроса, касающегося вызовов функций, основана на моей наивности в отношении ссылок, если вы просто измените имя, вызовет ли функция вызовы или нет?)

P.S. Платформа - это linux, вероятно, скомпилированная с gcc, но если будет кросс-компилятор, я был бы рад за это!

1 Ответ

6 голосов
/ 25 августа 2011

См. Справочную страницу утилиты objcopy, в частности, параметр --redefine-syms.

...