Где я могу подать эту ошибку ndk? - PullRequest
0 голосов
/ 19 декабря 2018

Я нашел ошибку в компиляторе 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 голосов
/ 19 декабря 2018

Вы можете сообщить о проблемах в официальном репозитории NDK GitHub :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...