Clang或LLVM中的`-Wa,-divide`选项

时间:2016-11-28 02:37:10

标签: assembly clang llvm xv6

我正在将xv6从GCC移植到Clang,并遇到以下错误消息:

clang -m32 -gdwarf-2 -Wa,-divide   -c -o swtch.o swtch.S
clang-3.8: error: unsupported argument '-divide' to option 'Wa,'

请注意,-Wa用于将参数传递给汇编程序,我无法弄清楚-divide选项是什么。

作为修复,目前我通过将no-integrated-as选项传递给Clang来关闭集成的汇编程序。但我想使用Clang的综合声明。忽略此选项是否安全?或者是否有另一种方法可以为Clang提供该选项?

1 个答案:

答案 0 :(得分:2)

气体手册documentation for --divide说:

  

在SVR4派生的平台上,字符/被视为注释字符,这意味着它不能在表达式中使用。 --divide选项将/变为普通字符。这不会在开始评论的行的开头禁用/,或者使用“#”来启动评论。

在我的Linux桌面上,--divide不执行任何操作:as组合mov $(15/2), %eax只需使用或不使用--divide即可。

所以你应该把它拿出去。如果这是一个问题并且clang确实在某些平台上将/视为注释字符,那么它通常应该导致构建时失败,而不是带有隐藏错误的二进制文件。

是的,-divide显然与--divide做同样的事情。但是如果clang的汇编程序只支持更标准的double - --divide形式,你可能想尝试-