【问题标题】:__strcpy_sse2_unaligned with -fno-builtin__strcpy_sse2_unaligned 与 -fno-builtin
【发布时间】:2018-04-17 13:49:41
【问题描述】:

我正在调试我的程序,然后发生了最后一行,我该如何解决?我使用-fno-builtin 来查看strcpy(),但它显示__strcpy_sse2_unaligned 正在被调用。

root@19:~/booksrc# gcc -fno-builtin -g char_array2.c
root@19:~/booksrc# gdb -q ./a.out
Reading symbols from ./a.out...done.
(gdb) list
1   #include <stdio.h>
2   #include <string.h>
3   
4   int main() {
5      char str_a[20];
6   
7      strcpy(str_a, "Hello World!\n");
8      printf(str_a);
9   }
(gdb) break 6
Breakpoint 1 at 0x708: file char_array2.c, line 6.
(gdb) break strcpy
Breakpoint 2 at 0x5a0
(gdb) break 8
Breakpoint 3 at 0x71b: file char_array2.c, line 8.
(gdb) run
Starting program: /root/booksrc/a.out 

Breakpoint 1, main () at char_array2.c:7
7      strcpy(str_a, "Hello World!\n");
(gdb) cont
Continuing.

Breakpoint 2, __strcpy_sse2_unaligned ()
    at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:47
47  ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.

【问题讨论】:

    标签: c debugging gdb strcpy


    【解决方案1】:

    __strcpy_sse2_unaligned 是在您的机器上使用的strcpy 的实现。 glibc 使用IFUNC resolver 自动根据 CPU 特性选择优化的实现。

    这与 GCC 和 GCC 内置函数无关。 GCC 发出对strcpy 的调用。只是glibc碰巧调用了它__strcpy_sse2_unaligned的函数。

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多