У меня есть ряд функций и соответствующие юнит-тесты.Я хотел бы встроить тесты в саму кодовую базу.Я придумал следующее решение:
void a() {
// this code should be tested
}
__attribute__((section(".tests")))
void a_test() {
// test if a() works
}
Тесты размещены в разделе .tests
, который я могу вырезать для релизных сборок.Я попробовал следующее:
$ gcc -c a.c -o a.orig.o # a.c is shown above
$ objcopy -R.tests a.orig.o a.o
objcopy: a.o: symbol `.tests' required but not present
objcopy:a.o: no symbols
Я нашел этот вопрос , который описывает аналогичную проблему, когда отвечающий сказал, что это из-за перекрестной ссылки откуда-то на раздел.
Я думаю, .eh_frame
этот раздел виноват, так как удаление будет работать:
$ objcopy -R.tests -R.eh_frame a.orig.o a.o
- Можно ли удалить этот раздел без последствий?
- Есть ли лучший способ пойтиоб этом?