/* sdbg.h — авторские точки журналирования source debugger. * * Текст и подстановки обрабатываются на хосте: код Sprinter не вызывает * ESTEX/BIOS и не хранит строку в EXE. В обычной сборке макросы пустые. * В --src-debug выбранный TU получает нулевой по размеру asm-якорь. * tag — уникальный C-идентификатор внутри единицы трансляции. */ #ifndef SPRINTER_SDBG_H #define SPRINTER_SDBG_H #if defined(SPRINTER_SDBG_METADATA) /* Только проход препроцессора сборщика: сохраняем описание для пакета. */ #define SDBG_LOG(tag, message) SDBG_METADATA_LOG(tag, message) #define SDBG_LOGIF(tag, condition, message) SDBG_METADATA_LOGIF(tag, condition, message) #elif defined(SPRINTER_SDBG_ANCHORS) /* Символ привязан к текущему счётчику адреса, но не добавляет инструкцию. */ #define SDBG_LOG(tag, message) __asm \ .globl _spr_sdbg_log_##tag \ _spr_sdbg_log_##tag = . \ __endasm #define SDBG_LOGIF(tag, condition, message) SDBG_LOG(tag, message) #else #define SDBG_LOG(tag, message) ((void)0) #define SDBG_LOGIF(tag, condition, message) ((void)0) #endif #endif