mirror of
https://github.com/python/cpython.git
synced 2025-09-01 06:28:36 +00:00
gh-108220: Internal header files require Py_BUILD_CORE to be defined (#108221)
* pycore_intrinsics.h does nothing if included twice (add #ifndef and #define). * Update Tools/cases_generator/generate_cases.py to generate the Py_BUILD_CORE test. * _bz2, _lzma, _opcode and zlib extensions now define the Py_BUILD_CORE_MODULE macro to use internal headers (pycore_code.h, pycore_intrinsics.h and pycore_blocks_output_buffer.h).
This commit is contained in:
parent
db55383829
commit
21c0844742
16 changed files with 65 additions and 4 deletions
|
@ -40,6 +40,10 @@ extern "C" {
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
// List of bytes objects
|
// List of bytes objects
|
||||||
PyObject *list;
|
PyObject *list;
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CODE_MAX_WATCHERS 8
|
#define CODE_MAX_WATCHERS 8
|
||||||
|
|
||||||
/* PEP 659
|
/* PEP 659
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
extern PyObject* _PyCodec_Lookup(const char *encoding);
|
extern PyObject* _PyCodec_Lookup(const char *encoding);
|
||||||
|
|
||||||
/* Text codec specific encoding and decoding API.
|
/* Text codec specific encoding and decoding API.
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__)
|
#if defined(__EMSCRIPTEN__)
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
_Py_CheckEmscriptenSignals(void);
|
_Py_CheckEmscriptenSignals(void);
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef Py_BUILD_CORE
|
#ifndef Py_BUILD_CORE
|
||||||
# error "Py_BUILD_CORE must be defined to include this header"
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <locale.h> /* struct lconv */
|
#include <locale.h> /* struct lconv */
|
||||||
|
|
|
@ -5,7 +5,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef Py_BUILD_CORE
|
#ifndef Py_BUILD_CORE
|
||||||
# error "Py_BUILD_CORE must be defined to include this header"
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stddef.h> // offsetof()
|
#include <stddef.h> // offsetof()
|
||||||
#include "pycore_code.h" // STATS
|
#include "pycore_code.h" // STATS
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "pycore_hashtable.h" // _Py_hashtable_t
|
#include "pycore_hashtable.h" // _Py_hashtable_t
|
||||||
#include "pycore_time.h" // _PyTime_t
|
#include "pycore_time.h" // _PyTime_t
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
|
||||||
#ifndef Py_INTERNAL_INSTRUMENT_H
|
#ifndef Py_INTERNAL_INSTRUMENT_H
|
||||||
#define Py_INTERNAL_INSTRUMENT_H
|
#define Py_INTERNAL_INSTRUMENT_H
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "pycore_bitutils.h" // _Py_popcount32
|
#include "pycore_bitutils.h" // _Py_popcount32
|
||||||
#include "pycore_frame.h"
|
#include "pycore_frame.h"
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
#ifndef Py_INTERNAL_INTRINSIC_H
|
||||||
|
#define Py_INTERNAL_INTRINSIC_H
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Unary Functions: */
|
/* Unary Functions: */
|
||||||
#define INTRINSIC_1_INVALID 0
|
#define INTRINSIC_1_INVALID 0
|
||||||
|
@ -40,3 +46,5 @@ typedef struct {
|
||||||
|
|
||||||
extern const intrinsic_func1_info _PyIntrinsics_UnaryFunctions[];
|
extern const intrinsic_func1_info _PyIntrinsics_UnaryFunctions[];
|
||||||
extern const intrinsic_func2_info _PyIntrinsics_BinaryFunctions[];
|
extern const intrinsic_func2_info _PyIntrinsics_BinaryFunctions[];
|
||||||
|
|
||||||
|
#endif // !Py_INTERNAL_INTRINSIC_H
|
||||||
|
|
4
Include/internal/pycore_opcode_metadata.h
generated
4
Include/internal/pycore_opcode_metadata.h
generated
|
@ -3,6 +3,10 @@
|
||||||
// Python/bytecodes.c
|
// Python/bytecodes.c
|
||||||
// Do not edit!
|
// Do not edit!
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
/* _bz2 - Low-level Python interface to libbzip2. */
|
/* _bz2 - Low-level Python interface to libbzip2. */
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
|
||||||
#include <bzlib.h>
|
#include <bzlib.h>
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "compile.h"
|
#include "compile.h"
|
||||||
#include "opcode.h"
|
#include "opcode.h"
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
|
|
||||||
/* Windows users: read Python's PCbuild\readme.txt */
|
/* Windows users: read Python's PCbuild\readme.txt */
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
|
@ -9,6 +9,7 @@ import itertools
|
||||||
import os
|
import os
|
||||||
import posixpath
|
import posixpath
|
||||||
import sys
|
import sys
|
||||||
|
import textwrap
|
||||||
import typing
|
import typing
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
@ -403,6 +404,12 @@ class Generator(Analyzer):
|
||||||
|
|
||||||
self.write_provenance_header()
|
self.write_provenance_header()
|
||||||
|
|
||||||
|
self.out.emit("\n" + textwrap.dedent("""
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
""").strip())
|
||||||
|
|
||||||
self.out.emit("\n#include <stdbool.h>")
|
self.out.emit("\n#include <stdbool.h>")
|
||||||
|
|
||||||
self.write_pseudo_instrs()
|
self.write_pseudo_instrs()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue