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. analizer → lHooFool /1 23.09.2011 16:56 mcabber

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

4. analizer → lHooFool /3 23.09.2011 17:01 mcabber

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

5. DZhon 23.09.2011 17:04

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

6. analizer → DZhon /5 23.09.2011 17:09 mcabber

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

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

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

8. analizer → DZhon /7 23.09.2011 17:11 mcabber

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

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

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

10. analizer → DZhon /9 23.09.2011 17:19 mcabber

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

11. analizer → analizer /10 23.09.2011 17:24 mcabber

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

Do you really want to delete ?