В Птн, 09/11/2007 в 16:38 +0300, Dmitry E. Oboukhov пишет: > >> как адрес функции который выдает gdb преобразовать в смещение от начала > >> elf-файла? > > > Судя по всему никак. То ж адрес в памяти, который зависим от состояния > > памяти на момент выделения. Может капнуть в сторону man dlopen: > насколько я понимаю все программы с одного адреса и грузятся? > > то есть если взять и сделать что-то вроде > > #include <stdio.h> > void foo(void) > { > } > > void main(void) > { > printf("%d\n", (int)&foo); > } > > то как ни вызывай всегда вернет одно и тоже число
На сколько я знаю это не правда. Тот эффект, который вы наблюдаете - это либо между вызовами Вашей программы состояние памяти не сильно меняется и Ваша программа грузится в одно и то же место, либо это результат работы файлового кэша. Попробуйте запомнить адрес, перегрузиться, запустить несколько ресурсоёмких программ и повторить попытку. > соответственно существует прямая зависимость - смещение от начала elf и > адрес в памяти. На сколько я знаю такой зависимости не существует. -- Покотиленко Костик <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]