analizer 23.09.2011 16:43 mcabber

Как? Как оно определяет когда нужно юзать глибцшный, а когда мою реализацию fopen?
user@host $ cat main.c
#include <stdio.h>
int main() {
printf("%p\n", fopen("",""));
return 0;
}
user@host $ gcc main.c
user@host $ ./a.out
(nil)
user@host $ cat fopen.c
#include <stdio.h>
FILE* fopen(const char* path, const char* mode) {
puts("hello");
return (void*)0xface8d;
}
user@host $ gcc main.c fopen.c
user@host $ ./a.out
hello
0xface8d

2. analizerlHooFool /1 23.09.2011 16:56 mcabber

и чем же это они отличаются?

4. analizerlHooFool /3 23.09.2011 17:01 mcabber

а если подключить мозг?

5. DZhon 23.09.2011 17:04

libc же цепляется динамически ? Я так понимаю, что приоритет у реализованных внутри твоего кода, будет выше. Хотя объяснить это не могу :(

6. analizerDZhon /5 23.09.2011 17:09 mcabber

попробовал добавить к гцц флаг -static — монопенисуально (если не считать того что он вырос ровно в сто раз и ldd стал говорить «not a dynamic executable»)

7. DZhonanalizer /6 23.09.2011 17:11 DZhon-ПК

блин, я уж даже не знаю о_О Я ожидал увидеть symbol redefinition в static сборке. Кекеке.

8. analizerDZhon /7 23.09.2011 17:11 mcabber

я ожидал его увидеть просто на «gcc main.c fopen.c»

9. DZhonanalizer /8 23.09.2011 17:12 DZhon-ПК

А зделой g++ main.c fopen.c , например. Хочу разогнать демонов.

10. analizerDZhon /9 23.09.2011 17:19 mcabber

тащем-та в самой первой версии это оно у меня и было http://ideone.com/5fSEs

11. analizeranalizer /10 23.09.2011 17:24 mcabber

единственный способ вывернуться из такого капкана — грузить напрямую из glibc при помощи dlsym

Do you really want to delete ?