我在哪里提交此ndk错误?

时间:2018-12-18 21:06:13

标签: android ndk-build

我在Android NDK编译器(r16b)中发现了一个错误。代码段如下所示:

 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>

int frameWidth = 208;

int main(int argc, char* argv[])
{
    int32_t count = (argc > 1) ? atoi(argv[1]) : -1;
    int width = frameWidth;
    int rows = count / (width * sizeof(int16_t));
    if (rows >= 3) {
        printf("rows=%u\n", rows);
    } else {
        printf("count=%d rows=%d\n", count, rows);
    }
}

问题是gcc / llvm编译器将除法视为无符号除法。您可以通过将代码编译为cmdline可执行文件并在不带参数或负数的情况下运行和/或生成汇编代码并查看arm源代码来查看这一点:

@DEBUG_VALUE: main:count <- %R4
        .loc    1 11 22 is_stmt 0       @ ./main.c:11:22
        mov     r0, r4
.Ltmp8:
        bl      __aeabi_uidiv
        mov     r2, r0
.Ltmp9:
        @DEBUG_VALUE: main:rows <- %R2
        .loc    1 12 9 is_stmt 1        @ ./main.c:12:9
        cmp     r2, #3
        blt     .LBB0_5

我在哪里报告此错误,以便可以对其进行修复?我可以想象我们的代码中还有其他地方应该有一个符号分隔。

1 个答案:

答案 0 :(得分:0)

您可以在官方的NDK GitHub repository中报告问题:

https://github.com/android-ndk/ndk/issues