27 lines
1.4 KiB
C
27 lines
1.4 KiB
C
/* 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
|