Files
llvm-tms34010/lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
T
Charles Zablit 2384d2872b [lldb][windows] remove mandatory ordering of the lldb-python.h header (#197298)
`PosixApi.h` typedef'd `pid_t` as `uint32_t`, while Python's
`pyconfig.h` on Windows typedef's it as `int`. C++ forbids redeclaring a
typedef with a different type, so the two headers cannot coexist. The
`NO_PID_T` macro in `lldb-python.h` suppressed LLDB's typedef, but only
if `lldb-python.h` got included before `PosixApi.h`.

`pid_t` on Windows was originally defined in d87fc157d2. At this time,
there was no Python support for LLDB on Windows and `uint32_t` matches
the `DWORD` type used by the Win32 API for process IDs.

This patch matches the Python type in `PosixApi.h`, removing the need
for the include ordering.

This is a follow up to https://github.com/llvm/llvm-project/pull/197048.
2026-05-13 11:18:28 +02:00

58 lines
2.1 KiB
C++

//===-- lldb-python.h -------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SOURCE_PLUGINS_SCRIPTINTERPRETER_PYTHON_LLDB_PYTHON_H
#define LLDB_SOURCE_PLUGINS_SCRIPTINTERPRETER_PYTHON_LLDB_PYTHON_H
// BEGIN FIXME
// This declaration works around a clang module build failure.
// It should be deleted ASAP.
#include "llvm/Support/Error.h"
static llvm::Expected<bool> *g_fcxx_modules_workaround [[maybe_unused]];
// END
#include "llvm/Support/Compiler.h"
#if defined(__linux__)
// features.h will define _POSIX_C_SOURCE if _GNU_SOURCE is defined. This value
// may be different from the value that Python defines it to be which results
// in a warning. Undefine _POSIX_C_SOURCE before including Python.h The same
// holds for _XOPEN_SOURCE.
#undef _POSIX_C_SOURCE
#undef _XOPEN_SOURCE
#endif
// Include locale before Python so _PY_PORT_CTYPE_UTF8_ISSUE doesn't cause
// macro redefinitions.
#if defined(__APPLE__)
#include <locale>
#endif
#define LLDB_MINIMUM_PYTHON_VERSION 0x03080000
#if LLDB_ENABLE_PYTHON_LIMITED_API
// If defined, LLDB will be ABI-compatible with all Python 3 releases from the
// specified one onward, and can use Limited API introduced up to that version.
#define Py_LIMITED_API LLDB_MINIMUM_PYTHON_VERSION
#endif
// Include python for non windows machines
#include <Python.h>
// Provide a meaningful diagnostic error if someone tries to compile this file
// with a version of Python we don't support.
static_assert(PY_VERSION_HEX >= LLDB_MINIMUM_PYTHON_VERSION,
"LLDB requires at least Python 3.8");
// PyMemoryView_FromMemory is part of stable ABI but the flag constants are not.
// See https://github.com/python/cpython/issues/98680
#ifndef PyBUF_READ
#define PyBUF_READ 0x100
#endif
#endif // LLDB_SOURCE_PLUGINS_SCRIPTINTERPRETER_PYTHON_LLDB_PYTHON_H