PLCrashReporter не компилируется в Xcode 10 beta 5
PLCrashReporter не компилируется в бета-версии Xcode 10. Похоже, проблема размера регистра.
ошибка: неверный операнд для команды movq %cs, 160(%rsp);
ошибка: неверный операнд для команды movq %fs, 168(%rsp);
ошибка: неверный операнд для инструкции movq %gs, 176(%rsp);
Я перешел по этой ссылке https://github.com/plausiblelabs/plcrashreporter/pull/12/files после внесения изменений в код, другие инструкции получают ошибку.
ошибка: неверный операнд для инструкции movl %cs, 16 +56(%esp);
ошибка: неверный операнд для инструкции movl %ds, 16 +60(%esp);
ошибка: неверный операнд для инструкции movl %es, 16 +64(%esp);
Буду признателен за любую оказанную помощь.
1 ответ
Кажется, в бета-5 есть много ошибок.
Мой ln
ошибка
бета 1~4 все отлично работает. плюс Xcode 9
Попробуйте изменить MOVQ
к movw
от строки 96 до строки 98 в PLCrashAsyncThread_current.S
,нравится:
movw %cs, 160(%rsp);
movw %fs, 168(%rsp);
movw %gs, 176(%rsp);
больше информации проверьте здесь
ps, в файле есть еще одна ошибка, вы можете проверить решение здесь, о котором упоминал yumoji.
С наилучшими пожеланиями!
Используйте эту версию, которая исправляет некоторые проблемы из репозитория автора
https://github.com/Microsoft/PLCrashReporter
Если вы хотите использовать оригинальную версию, замените следующую в PLCrashAsyncThread_current.S
файл (около строки № 149), как указано здесь
#if 0
MOVL (cs, 56);
MOVL (ds, 60);
MOVL (es, 64);
MOVL (fs, 68);
MOVL (gs, 72);
#undef MOVL
#else
movl $0, 56(%esp);
movw %cs, 56+OFF(%esp);
movl $0, 60(%esp);
movw %ds, 60+OFF(%esp);
movl $0, 64(%esp);
movw %es, 64+OFF(%esp);
movl $0, 68(%esp);
movw %fs, 68+OFF(%esp);
movl $0, 72(%esp);
movw %gs, 72+OFF(%esp);
#endif
Обратите внимание, что это разрешит только частично. PLCR по-прежнему использует некоторые устаревшие функции для спин-блокировки и барьера памяти, которые необходимо исправить.