【问题标题】:Clang error: Cannot compile builtin functionClang 错误:无法编译内置函数
【发布时间】:2019-07-31 10:37:47
【问题描述】:

我正在编译一个单独添加了 GCC 库的代码。编译时出现clang错误

cannot compile

正在显示

我尝试过添加标志。 -std=89gnu 不适用于铿锵声。经过一番检查,在编译器文件中发现了相同的函数。

BUILTIN(__builtin_init_dwarf_reg_size_table, "vv*", "n")

错误:

gcc/unwind-dw2.c:1336:3: error: cannot compile this __builtin_init_dwarf_reg_size_table

【问题讨论】:

    标签: c++ gcc linux-kernel llvm-clang llvm-gcc


    【解决方案1】:

    这是一个非常奇怪的错误消息,你能把完整的放在这里吗?另外,我很惊讶你想用 clang 编译 libgcc,我认为以前没有人真正尝试过。一些更好的复制说明会有所帮助,因为这似乎可行:

    echristo@jhereg ~/tmp> cat foo.c

    char x[16]; void a() { __builtin_init_dwarf_reg_size_table(x); }
    

    echristo@jhereg ~/tmp> clang -S -o - foo.c --target=x86_64-linux-gnu

        .text
        .file   "foo.c"
        .globl  a                       # -- Begin function a
        .p2align    4, 0x90
        .type   a,@function
    a:                                      # @a
        .cfi_startproc
    # %bb.0:
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset %rbp, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register %rbp
        movb    $8, x
        movb    $8, x+1
        movb    $8, x+2
        movb    $8, x+3
        movb    $8, x+4
        movb    $8, x+5
        movb    $8, x+6
        movb    $8, x+7
        movb    $8, x+8
        movb    $8, x+9
        movb    $8, x+10
        movb    $8, x+11
        movb    $8, x+12
        movb    $8, x+13
        movb    $8, x+14
        movb    $8, x+15
        movb    $8, x+16
        popq    %rbp
        .cfi_def_cfa %rsp, 8
        retq
    .Lfunc_end0:
        .size   a, .Lfunc_end0-a
        .cfi_endproc
                                            # -- End function
        .type   x,@object               # @x
        .comm   x,16,16
    
        .ident  "clang version 9.0.0 (https://github.com/llvm/llvm-project.git b669fea42f5c2a5b203c3f0da2a6b04b90bfd5a7)"
        .section    ".note.GNU-stack","",@progbits
        .addrsig
        .addrsig_sym x
    

    【讨论】:

    • 我认为这是特定于目标的我尝试过的 aarch64 错误是相同的 ./clang -S -o - foo.c --target=aarch64-linux-android foo.c:11:9: error: cannot compile this __builtin_init_dwarf_reg_size_table yet __builtin_init_dwarf_reg_size_table(x); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. 并且对于 arm32 工作 ./clang -S -o - foo.c --target=arm-linux-androideabi androideabi
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2012-10-21
    相关资源
    最近更新 更多