В Птн, 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]