From b298882acccc73a6d803d54da3dda484cbb35c02 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 24 May 2023 21:37:06 +0200 Subject: [PATCH] BUILD: compiler: systematically set USE_OBSOLETE_LINKER with TCC TCC silently ignores the weak and section attributes, which ruins the initcalls. Technically we're exactly in the same situation as with an obsolete linker. Let's just automatically set the flag if TCC is detected, this avoids surprises where the program compiles but does not start. No backport is needed. --- include/haproxy/compiler.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/haproxy/compiler.h b/include/haproxy/compiler.h index 86d4ddf5a..ff93df780 100644 --- a/include/haproxy/compiler.h +++ b/include/haproxy/compiler.h @@ -127,6 +127,13 @@ #define __maybe_unused __attribute__((unused)) #endif +/* TCC doesn't support weak attribute, sections etc and needs the more portable + * obsolete linker model instead. + */ +#if defined(__TINYC__) && !defined(USE_OBSOLETE_LINKER) +#define USE_OBSOLETE_LINKER 1 +#endif + /* These macros are used to declare a section name for a variable. * WARNING: keep section names short, as MacOS limits them to 16 characters. * The _START and _STOP attributes have to be placed after the start and stop