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

Ответить