[PATCH] conformtest.py: Pass -dD to compiler
H.J. Lu
hjl.tools@gmail.com
Fri Dec 20 20:45:00 GMT 2024
On Tue, Dec 17, 2024 at 7:22 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> Since Clang doesn't support -dN, pass -dD to compiler. Split and
> reconstruct #define directives to "#define MACRO".
>
> Tested with GCC 14.2 and Clang 19.1.5.
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> ---
> conform/conformtest.py | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/conform/conformtest.py b/conform/conformtest.py
> index 8337afcdad..f3cd648ef8 100644
> --- a/conform/conformtest.py
> +++ b/conform/conformtest.py
> @@ -620,7 +620,8 @@ class HeaderTests(object):
> out_file = os.path.join(self.temp_dir, 'namespace-out')
> with open(c_file, 'w') as c_file_out:
> c_file_out.write('#include <%s>\n' % self.header)
> - cmd = ('%s %s -E %s -P -Wp,-dN > %s'
> + # NB: Use -dD, instead of -dN, since Clang doesn't support -dN.
> + cmd = ('%s %s -E %s -P -Wp,-dD > %s'
> % (self.cc, self.cflags_namespace, c_file, out_file))
> subprocess.check_call(cmd, shell=True)
> bad_tokens = set()
> @@ -629,6 +630,21 @@ class HeaderTests(object):
> line = line.strip()
> if not line:
> continue
> + if line.startswith('#define'):
> + # -dD outputs of #define directives are
> + # #define MACRO expression
> + # #define MACRO(arg...) expression
> + # Split them to
> + # ['#define', 'MACRO', 'expression']
> + # ['#define', 'MACRO(arg...)', 'expression']
> + line = line.split()
> + # Split the second element to
> + # ['MACRO']
> + # ['MACRO', 'arg...)']
> + macro = line[1].split("(")
> + # Reconstruct the line to
> + # #define MACRO
> + line = line[0] + ' ' + macro[0]
> if re.match(r'# [1-9]', line):
> continue
> if line.startswith('#pragma GCC '):
> --
> 2.47.1
>
I am dropping this and will use this
https://sourceware.org/git/?p=glibc.git;a=commit;h=aec36af87b9c87a1402e4326d5ead9f9f46b97f4
instead.
--
H.J.
More information about the Libc-alpha
mailing list