[PATCH v4 2/5] debug_uart: Replace debug functions with dummies if CONFIG_DEBUG_UART is not set
Quentin Schulz
quentin.schulz at cherry.de
Mon May 19 12:40:08 CEST 2025
Hi Lukasz,
On 5/19/25 12:32 PM, Łukasz Czechowski wrote:
> Hi Quentin,
>
> pt., 16 maj 2025 o 17:27 Quentin Schulz <quentin.schulz at cherry.de> napisał(a):
>>
>> Hi Lukasz,
>>
>> On 5/15/25 5:55 PM, Lukasz Czechowski wrote:
>>> In case DEBUG UART is not used, define dummy macros replacing
>>> the actual function implementations that will not be available.
>>> This allows to compile code and avoid linker errors.
>>> Redefine the DEBUG_UART_FUNCS macro if DEBUG UART is not available,
>>> to avoid compilation errors.
>>>
>>> Signed-off-by: Lukasz Czechowski <lukasz.czechowski at thaumatec.com>
>>> ---
>>> include/debug_uart.h | 15 +++++++++++++++
>>> 1 file changed, 15 insertions(+)
>>>
>>> diff --git a/include/debug_uart.h b/include/debug_uart.h
>>> index 714b369e6fed..4526dca24ac6 100644
>>> --- a/include/debug_uart.h
>>> +++ b/include/debug_uart.h
>>> @@ -128,6 +128,8 @@ void printdec(unsigned int value);
>>> (1 << CONFIG_DEBUG_UART_SHIFT), \
>>> CONFIG_DEBUG_UART_SHIFT)
>>>
>>> +#ifdef CONFIG_DEBUG_UART
>>> +
>>> /*
>>> * Now define some functions - this should be inserted into the serial driver
>>> */
>>> @@ -197,4 +199,17 @@ void printdec(unsigned int value);
>>> _DEBUG_UART_ANNOUNCE \
>>> } \
>>>
>>> +#else
>>> +
>>> +#define DEBUG_UART_FUNCS
>>> +
>>> +#define printch(ch) (void)(ch)
>>> +#define printascii(str) (void)(str)
>>> +#define printhex2(value) (void)(value)
>>> +#define printhex4(value) (void)(value)
>>> +#define printhex8(value) (void)(value)
>>> +#define printdec(value) (void)(value)
>>> +
>>
>> There are a few additional functions that aren't redefined here:
>>
>> _printch
>> printhex1
>> printhex
>> debug_uart_init
>>
>> any particular reason for not having included them?
>
> Looking at the original code, _printch, printhex1 and printhex functions
> seem to be only used internally by other print functions, hence they are
> static (there are also no forward declarations of them in linux_uart,h,
> and I haven't seen any usage in the U-Boot code).
>
If I haven't misunderstood how C header works, I believe the fact that
the functions are static and used only in functions inside the header is
irrelevant. A static function in a header will still be available in the
C files that include it, even if there are no user of the function in
the header file. I believe this means anyone who includes that header
file and use one of those functions will have a build failure when
deselecting CONFIG_DEBUG_UART.
> The debug_uart_init function calls are, in most cases, guarded by
> CONFIG_DEBUG_UART, so it didn't trigger compilation errors for me.
> Do you think it's worth redefining it for consistency?
>
I think it makes sense, maybe Tom or Simon have another opinion on that.
Cheers,
Quentin
More information about the U-Boot
mailing list