大多数成熟的编译器似乎都对堆栈变量修饰符有很好的支持。

  • GCC:-fstack-protector
  • xlC:-qstackprotect
  • intel:-fstackprotector
  • Windows:/ RTC

  • 对于clang,我发现了-fsanitize=safe-stack,但是它不支持共享库,这对我来说几乎没有用。

    看来消毒剂是作为附加组件实现的?是否有人知道clang是否具有不受共享库限制的任何替代(内置?)反堆栈粉碎支持,或者是否计划推广现有的有限安全堆栈实现以赶上所有其他编译器?

    最佳答案

    clang支持gcc的-fstack-protector选项:

    :: clang --help | grep stack-protector
    -fno-stack-protector    Disable the use of stack protectors
    -fstack-protector-all   Force the usage of stack protectors for all functions
    -fstack-protector-strong
    -fstack-protector       Enable stack protectors for functions potentially vulnerable to stack smashing
    

    我相信它遵循GCC在这里所做的。

    关于clang - clang编译器中的堆栈保护等效项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39371514/

    10-09 05:28