Merge branch 'savannah/master' into feature/igc3

This commit is contained in:
Pip Cet 2026-05-28 05:32:03 +00:00
commit 69ca5bc8f4
9 changed files with 72 additions and 41 deletions

View file

@ -292,6 +292,7 @@ If Exist limits.in.h update limits.in.h limits.in-h
If Exist signal.in.h update signal.in.h signal.in-h
If Exist signal.in.h update signal.in.h signal.in-h
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h
If Exist stdcountof.in.h update stdcountof.in.h stdcountof.in-h
If Exist stddef.in.h update stddef.in.h stddef.in-h
If Exist stdint.in.h update stdint.in.h stdint.in-h
If Exist stdio.in.h update stdio.in.h stdio.in-h

View file

@ -28,7 +28,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <stdcountof.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
@ -1539,6 +1538,9 @@ static int interesting_syscalls[] =
READLINKAT_SYSCALL,
};
/* Number of elements in an array. */
#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0])
/* Install a secure computing filter that will notify attached tracers
when a system call of interest to this module is received. Value is
0 if successful, 1 otherwise. */
@ -1546,7 +1548,7 @@ static int interesting_syscalls[] =
static int
establish_seccomp_filter (void)
{
struct sock_filter statements[1 + countof (interesting_syscalls) + 2];
struct sock_filter statements[1 + ARRAYELTS (interesting_syscalls) + 2];
struct sock_fprog program;
int index, rc;
@ -1565,27 +1567,27 @@ establish_seccomp_filter (void)
statements[index]
= ((struct sock_filter)
BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, EXEC_SYSCALL,
countof (interesting_syscalls), 0)); index++;
ARRAYELTS (interesting_syscalls), 0)); index++;
#ifdef OPEN_SYSCALL
statements[index]
= ((struct sock_filter)
BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, OPEN_SYSCALL,
countof (interesting_syscalls) - index + 1, 0)); index++;
ARRAYELTS (interesting_syscalls) - index + 1, 0)); index++;
#endif /* OPEN_SYSCALL */
statements[index]
= ((struct sock_filter)
BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, OPENAT_SYSCALL,
countof (interesting_syscalls) - index + 1, 0)); index++;
ARRAYELTS (interesting_syscalls) - index + 1, 0)); index++;
#ifdef READLINK_SYSCALL
statements[index]
= ((struct sock_filter)
BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, READLINK_SYSCALL,
countof (interesting_syscalls) - index + 1, 0)); index++;
ARRAYELTS (interesting_syscalls) - index + 1, 0)); index++;
#endif /* READLINK_SYSCALL */
statements[index]
= ((struct sock_filter)
BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, READLINKAT_SYSCALL,
countof (interesting_syscalls) - index + 1, 0)); index++;
ARRAYELTS (interesting_syscalls) - index + 1, 0)); index++;
/* If not intercepted above, permit this system call to execute as
normal. */
@ -1598,7 +1600,7 @@ establish_seccomp_filter (void)
if (rc)
return 1;
program.len = countof (statements);
program.len = ARRAYELTS (statements);
program.filter = statements;
rc = prctl (PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &program);
if (rc)

View file

@ -50,6 +50,14 @@
# s/^@GL_GENERATE_STDBOOL_H@/1/
# s/^@GL_GENERATE_STDINT_H@//
#
# . Functions defined in these headers may also be conditional upon
# variables substituted into the generated products bearing the
# prefix GL_GNULIB_. Be certain to examine updates to gnulib.mk for
# any variables of this description, and edit them to 1 if the
# functions they control must be defined, e.g.:
#
# /^GL_GNULIB_STREQ *=/s/@GL_GNULIB_STREQ@/1/
#
# . Also edit the NEXT_foo_H and NEXT_AS_FIRST_DIRECTIVE_foo_H
# variables as appropriately: to an empty value if the gnulib
# header is not used, and to the corresponding DJGPP header name
@ -170,6 +178,7 @@ s/@PACKAGE@/emacs/
/^BITSIZEOF_WCHAR_T *=/s/@BITSIZEOF_WCHAR_T@/16/
/^BITSIZEOF_WINT_T *=/s/@BITSIZEOF_WINT_T@/32/
/^APPLE_UNIVERSAL_BUILD *=/s/@APPLE_UNIVERSAL_BUILD@/0/
/^CXX_HAVE_STDCOUNTOF_H *=/s/@CXX_HAVE_STDCOUNTOF_H@/0/
# Most GL_GNULIB_* are replaced with zero even though DJGPP does not
# have these features. That's because the gnulib replacements cannot
# possibly work for DJGPP, so we prefer to fail the link than have a
@ -186,10 +195,12 @@ s/@PACKAGE@/emacs/
/^GL_GNULIB_MEMMEM *=/s/@GL_GNULIB_MEMMEM@/1/
/^GL_GNULIB_MEMRCHR *=/s/@GL_GNULIB_MEMRCHR@/1/
/^GL_GNULIB_MEMPCPY *=/s/@GL_GNULIB_MEMPCPY@/1/
/^GL_GNULIB_MEMEQ *=/s/@GL_GNULIB_MEMEQ@/1/
/^GL_GNULIB_MKOSTEMP *=/s/@GL_GNULIB_MKOSTEMP@/1/
/^GL_GNULIB_MKTIME *=/s/@GL_GNULIB_MKTIME@/1/
/^GL_GNULIB_SIGDESCR_NP *=/s/@GL_GNULIB_SIGDESCR_NP@/1/
/^GL_GNULIB_STRINGEQ *=/s/@GL_GNULIB_STRINGEQ@/1/
/^GL_GNULIB_STREQ *=/s/@GL_GNULIB_STREQ@/1/
/^GL_GNULIB_STRNUL *=/s/@GL_GNULIB_STRNUL@/1/
/^GL_GNULIB_TIME_R *=/s/@GL_GNULIB_TIME_R@/1/
/^GL_GNULIB_TIMEGM *=/s/@GL_GNULIB_TIMEGM@/1/
/^GL_GNULIB_TIME_RZ *=/s/@GL_GNULIB_TIME_RZ@/1/
@ -197,10 +208,10 @@ s/@PACKAGE@/emacs/
# Apparently without this `rawmemchr' isn't declared, so
# we get warnings building canonicalize-lgpl.o
/^GL_GNULIB_RAWMEMCHR *=/s/@GL_GNULIB_RAWMEMCHR@/1/
/^GL_GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/
# These variables control whether ISO C23 features are generated,
# e.g. those in stdbit.h.
/^GL_STDC_[^ =]* *= *@/s/@[^@\n]*@/1/
/^GL_GNULIB_STDC_[^ =]* *= *@/s/@[^@\n]*@/1/
/^GL_GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/
/^GL_GSETTINGS_CFLAGS *=/s/@[^@\n]*@//
/^GL_GSETTINGS_LIBS *=/s/@[^@\n]*@//
# Miscellaneous variables.
@ -288,13 +299,15 @@ s/@PACKAGE@/emacs/
# are created in config.bat!)
/^MKDIR_P *=/s/@MKDIR_P@/echo/
/^NEXT_AS_FIRST_DIRECTIVE_DIRENT_H *=/s/@[^@\n]*@/<dirent.h>/
/^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@//
/^NEXT_AS_FIRST_DIRECTIVE_ENDIAN_H *=/s|@[^@\n]*@|<machine/endian.h>|
/^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@//
/^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
/^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
/^NEXT_AS_FIRST_DIRECTIVE_LIMITS_H *=/s/@[^@\n]*@/<limits.h>/
/^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDBIT_H *=/s/@[^@\n]*@/<stdbit.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDCKDINT_H *=/s/@[^@\n]*@/<stdckdint.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDCOUNTOF_H *=/s/@[^@\n]*@/<stdcountof.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@/<stddef.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
/^NEXT_AS_FIRST_DIRECTIVE_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
@ -359,6 +372,7 @@ s/@PACKAGE@/emacs/
/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
/^STDBIT_H *=/s/@[^@\n]*@/stdbit.h/
/^STDCKDINT_H *=/s/@[^@\n]*@/stdckdint.h/
/^STDCOUNTOF_H *=/s/@[^@\n]*@/stdcountof.h/
/^STDDEF_H *=/s/@[^@\n]*@/stddef.h/
/^STDDEF_NOT_IDEMPOTENT *=/s/@[^@\n]*@/1/
/^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@ -448,6 +462,7 @@ s/= @GL_GENERATE_ENDIAN_H_CONDITION@/= 1/
s/= @GL_GENERATE_EXECINFO_H_CONDITION@/= 1/
s/= @GL_GENERATE_IEEE754_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDALIGN_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDCOUNTOF_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDDEF_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDINT_H_CONDITION@/= 1/
s/= @GL_GENERATE_LIMITS_H_CONDITION@/= 1/
@ -458,7 +473,7 @@ s/= @GL_GENERATE_GMP_H_CONDITION@/= 1/
s/= @GL_GENERATE_GMP_GMP_H_CONDITION@/= /
s/= @GL_GENERATE_MINI_GMP_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDCKDINT_H_CONDITION@/= 1/
s/= @GL_GENERATE_STDBIT_H_CONDITION@/= 1/
s/= @GL_HAVE_STDBIT_H_CONDITION@/= 0/
s/= @GL_COND_OBJ_STDIO_READ_CONDITION@/= /
s/= @GL_COND_OBJ_STDIO_WRITE_CONDITION@/= /
s/= @GL_COND_OBJ_STPNCPY_CONDITION@/= /

View file

@ -386,6 +386,10 @@ extern int emacs_setenv_TZ (char const *);
: S_ISLNK (mode) ? DT_LNK : S_ISBLK (mode) ? DT_BLK \
: S_ISCHR (mode) ? DT_CHR : S_ISFIFO (mode) ? DT_FIFO \
: S_ISSOCK (mode) ? DT_SOCK : DT_UNKNOWN)
/* DJGPP doesn't provide uchar.h and Emacs doesn't import Gnulib's
replacement either. */
#define _REGEX_AVOID_UCHAR_H 1
#endif /* MSDOS */
#if defined WINDOWSNT && !(defined OMIT_CONSOLESAFE && OMIT_CONSOLESAFE == 1)
@ -402,28 +406,28 @@ extern int emacs_setenv_TZ (char const *);
Gnulib stdio-h module, which does the below in Gnulib's stdio.h
file, which is not used by the MS-Windows build. */
extern size_t gl_consolesafe_fwrite (const void *ptr, size_t size,
size_t nmemb, FILE *fp)
extern size_t _gl_consolesafe_fwrite (const void *ptr, size_t size,
size_t nmemb, FILE *fp)
ARG_NONNULL ((1, 4));
extern int gl_consolesafe_fprintf (FILE *restrict fp,
const char *restrict format, ...)
extern int _gl_consolesafe_fprintf (FILE *restrict fp,
const char *restrict format, ...)
ATTRIBUTE_FORMAT_PRINTF (2, 3)
ARG_NONNULL ((1, 2));
extern int gl_consolesafe_printf (const char *restrict format, ...)
extern int _gl_consolesafe_printf (const char *restrict format, ...)
ATTRIBUTE_FORMAT_PRINTF (1, 2)
ARG_NONNULL ((1));
extern int gl_consolesafe_vfprintf (FILE *restrict fp,
const char *restrict format, va_list args)
extern int _gl_consolesafe_vfprintf (FILE *restrict fp,
const char *restrict format, va_list args)
ATTRIBUTE_FORMAT_PRINTF (2, 0)
ARG_NONNULL ((1, 2));
extern int gl_consolesafe_vprintf (const char *restrict format, va_list args)
extern int _gl_consolesafe_vprintf (const char *restrict format, va_list args)
ATTRIBUTE_FORMAT_PRINTF (1, 0)
ARG_NONNULL ((1));
# define fwrite gl_consolesafe_fwrite
# define fprintf gl_consolesafe_fprintf
# define printf gl_consolesafe_printf
# define vfprintf gl_consolesafe_vfprintf
# define vprintf gl_consolesafe_vprintf
# define fwrite _gl_consolesafe_fwrite
# define fprintf _gl_consolesafe_fprintf
# define printf _gl_consolesafe_printf
# define vfprintf _gl_consolesafe_vfprintf
# define vprintf _gl_consolesafe_vprintf
# endif /* !_UCRT */
# if !HAVE_DECL_GETDELIM

View file

@ -115,7 +115,6 @@ xstrcasecmp (char const *a, char const *b)
typedef struct x_display_info Display_Info;
#ifndef USE_CAIRO
typedef XImage *Emacs_Pix_Container;
typedef XImage *Emacs_Pix_Context;
#endif /* !USE_CAIRO */
#define NativeRectangle XRectangle
#endif
@ -130,7 +129,6 @@ typedef struct
int bits_per_pixel; /* bits per pixel (ZPixmap) */
} *Emacs_Pix_Container;
typedef Emacs_Pix_Container Emacs_Pixmap;
typedef Emacs_Pix_Container Emacs_Pix_Context;
#endif
#ifdef HAVE_NTGUI
@ -138,6 +136,7 @@ typedef Emacs_Pix_Container Emacs_Pix_Context;
typedef struct w32_display_info Display_Info;
typedef XImage *Emacs_Pix_Container;
typedef HDC Emacs_Pix_Context;
# define PIX_CONTAINER_TO_CONTEXT(c) ((Emacs_Pix_Context) (c))
#endif
#ifdef HAVE_NS
@ -145,7 +144,6 @@ typedef HDC Emacs_Pix_Context;
/* Following typedef needed to accommodate the MSDOS port, believe it or not. */
typedef struct ns_display_info Display_Info;
typedef Emacs_Pixmap Emacs_Pix_Container;
typedef Emacs_Pixmap Emacs_Pix_Context;
#endif
#ifdef HAVE_PGTK
@ -160,14 +158,12 @@ typedef XImagePtr XImagePtr_or_DC;
#include "haikugui.h"
typedef struct haiku_display_info Display_Info;
typedef Emacs_Pixmap Emacs_Pix_Container;
typedef Emacs_Pixmap Emacs_Pix_Context;
#endif
#ifdef HAVE_ANDROID
#include "androidgui.h"
typedef struct android_display_info Display_Info;
typedef struct android_image *Emacs_Pix_Container;
typedef struct android_image *Emacs_Pix_Context;
#endif
#ifdef HAVE_WINDOW_SYSTEM
@ -193,6 +189,14 @@ typedef void *Emacs_Cursor;
# define WINDOW_HANDLE_UINTPTR(h) ((uintptr_t) {(h)})
# endif
/* Ordinarily an Emacs_Pix_Context is just an Emacs_Pix_Container;
platforms can override this by defining the latter type
and defining the conversion macro PIX_CONTAINER_TO_CONTEXT. */
# ifndef PIX_CONTAINER_TO_CONTEXT
typedef Emacs_Pix_Container Emacs_Pix_Context;
# define PIX_CONTAINER_TO_CONTEXT(c) (c)
# endif
/* ``box'' structure similar to that found in the X sample server,
meaning that X2 and Y2 are not actually the end of the box, but one
pixel past the end of the box, which makes checking for overlaps

View file

@ -7887,7 +7887,8 @@ pbm_load (struct frame *f, struct image *img)
/* Maybe fill in the background field while we have ximg handy. */
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
IMAGE_BACKGROUND (img, f, ximg);
/* Casting avoids a GCC warning. */
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);
@ -8633,7 +8634,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
img->height = height;
/* Maybe fill in the background field while we have ximg handy. */
IMAGE_BACKGROUND (img, f, ximg);
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);
@ -8642,8 +8643,8 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
if (mask_img)
{
/* Fill in the background_transparent field while we have the
mask handy. */
image_background_transparent (img, f, mask_img);
mask handy. Casting avoids a GCC warning. */
image_background_transparent (img, f, PIX_CONTAINER_TO_CONTEXT (mask_img));
image_put_x_image (f, img, mask_img, 1);
}
@ -9210,7 +9211,7 @@ jpeg_load_body (struct frame *f, struct image *img,
/* Maybe fill in the background field while we have ximg handy. */
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
IMAGE_BACKGROUND (img, f, ximg);
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);
@ -9650,7 +9651,7 @@ tiff_load (struct frame *f, struct image *img)
/* Maybe fill in the background field while we have ximg handy. */
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
IMAGE_BACKGROUND (img, f, ximg);
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);
@ -10372,7 +10373,7 @@ gif_load (struct frame *f, struct image *img)
/* Maybe fill in the background field while we have ximg handy. */
if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
IMAGE_BACKGROUND (img, f, ximg);
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);
@ -12554,8 +12555,9 @@ svg_load_image (struct frame *f, struct image *img, char *contents,
img->width = width;
img->height = height;
/* Maybe fill in the background field while we have ximg handy. */
IMAGE_BACKGROUND (img, f, ximg);
/* Maybe fill in the background field while we have ximg handy.
Casting avoids a GCC warning. */
IMAGE_BACKGROUND (img, f, PIX_CONTAINER_TO_CONTEXT (ximg));
/* Put ximg into the image. */
image_put_x_image (f, img, ximg, 0);

View file

@ -439,7 +439,7 @@ typedef EMACS_INT Lisp_Word;
#endif
#if USE_LSB_TAG
# define lisp_h_make_fixnum_wrap(n) \
XIL ((EMACS_INT) (((EMACS_UINT) {(n)} << INTTYPEBITS) + Lisp_Int0))
XIL ((EMACS_INT) (((EMACS_UINT) {(n)} << INTTYPEBITS) + Lisp_Int0))
# if defined HAVE_STATEMENT_EXPRESSIONS && defined HAVE_TYPEOF
# define lisp_h_make_fixnum(n) \
({ typeof (+(n)) lisp_h_make_fixnum_n = n; \

View file

@ -49,6 +49,8 @@ typedef void *Color;
typedef int Window;
typedef struct _GdkDisplay Display;
#define WINDOW_HANDLE_UINTPTR(h) ((uintptr_t) (h))
/* Xism */
typedef void *XrmDatabase;

View file

@ -4769,6 +4769,7 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\
FrameCols (tty) = width;
FrameRows (tty) = height;
tty->char_ins_del_ok = 0;
tty->TN_max_colors = 16; /* Must be non-zero for tty-display-color-p. */
init_baud_rate (fileno (tty->input));
}
#endif /* MSDOS */