Возникла проблема: в целях отладки мне нужно подменить некоторые символы в Libc таким образом, чтобы вместо оригинальной функции вызвалась моя, что-то напечатала, а затем вызывала "настоящую" функцию. Я делаю это посредством LD_PRELOAD. Но это получается, если только у символа есть синоним. Вопрос такой: как подменить символы, у которых нет синонимов? Ну например, я пишу маленькую библиотеку mysocks.so: #include <stdio.h> int accept (int __fd, void *__addr, int *__addr_len) { printf("mysocks::accept(fd=%d, addr=%X, addr_len=%X, *addr_len=%X)\n", __fd, __addr, __addr_len, *__addr_len); int r = __libc_accept(__fd, __addr, __addr_len); printf("mysocks::accept(fd=%d, addr=%X, addr_len=%X) returned %d\n", __fd, __addr, __addr_len, r); return r; } int bind (int __fd, void *__addr, int __len) { printf("mysocks::bind(__fd=%d, __addr=%X, __len=%X)\n", __fd, __addr, __len); int r = __libc_bind(__fd, __addr, __len); printf("mysocks::bind(__fd=%d, __addr=%X, __len=%X)=%d\n", __fd, __addr, __len, r); return r; } У accept() есть синоним __libc_accept(), а у bind() - нет! Так что загрузка этой библиотеки с LD_PRELOADК не работает. Как же мне поступить с bind()?
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум accept() не прерывается сигналом (2010)
- Форум Сокеты в Си (продолжене) (2005)
- Форум Клиент, сервер и их правильная работа. (2005)
- Форум сваливается send (сокет) (2008)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум Консольный обмен сообщениями (2017)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум компилятор дает ошибку undefined reference (2015)
- Форум Соединится с сервером по сокету? (2020)
- Форум socket error (2009)