Strcpy-sse2-unaligned.S не найден - программирование
Подтвердить что ты не робот

Strcpy-sse2-unaligned.S не найден

Я компилирую простой код ниже и запускаю его в gdb. Я установил точку прерывания на строку strcpy, как только я запустил ее для ввода, например, abc, а затем нажмите s, я получаю следующую ошибку:

Breakpoint 1, main (argc=2, argv=0x7fffffffdd98) at ExploitMe.c:9
9           strcpy(buffer, argv[1]);
(gdb) s
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:48
48  ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.

Я использую ubuntu 12.04 AMD64 и gcc 2.15. Любая идея?


main(int argc, char *argv[]) {

    char buffer[80];

    strcpy(buffer, argv[1]);

    return 0;
}
4b9b3361

Ответ 1

Абсолютно безвредно игнорировать эти "ошибки" при отладке.

Ошибка просто потому, что GDB ищет источник функции strcpy. Любая функция в libc, для которой у вас нет источника, вы получите аналогичную ошибку, например:

int *p = malloc(sizeof *p);

Тогда...

(gdb) s
5       int *p = malloc(sizeof *p);
(gdb) s
__GI___libc_malloc (bytes=4) at malloc.c:2910
2910    malloc.c: No such file or directory.

Вы всегда можете скачать источник GNU libc и связать его с GDB:

git clone https://github.com/jeremie-koenig/glibc /opt/src/glibc

Тогда...

(gdb) dir /opt/src/glibc/malloc
(gdb) s
5       int *p = malloc(sizeof *p);
(gdb) s
__GI___libc_malloc (bytes=4) at malloc.c:2910
2910              }
(gdb) s
2915          } else if (!in_smallbin_range(size))

..., который позволит вам перейти через исходный код malloc. Это не особенно полезно, но иногда это может пригодиться.