diff --git a/.gitignore b/.gitignore index c54c4eb..f3d212c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,3 @@ libXt-1.0.7.tar.bz2 /libXt-1.1.5.tar.bz2 /libXt-20190424.tar.bz2 /libXt-1.2.0.tar.bz2 -/libXt-1.2.1.tar.bz2 -/libXt-1.3.0.tar.xz -/libXt-1.3.1.tar.xz diff --git a/0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch b/0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch new file mode 100644 index 0000000..ac9295d --- /dev/null +++ b/0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch @@ -0,0 +1,100 @@ +From f3079e509c5cf60042ae2261499ee13b6b02498a Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Thu, 6 Feb 2020 13:45:35 -0500 +Subject: [PATCH] xt: Work around a compiler issue with gcc 10 + +GRABEXT() is used to look up a pointer that sometimes lives just past +the end of an XtServerGrabRec. Whether it's really there or not depends +on XtServerGrabRec::hasExt. In a couple of places, we build those +structs on the stack and pass them to other functions; such structs +always have hasExt == 0, so GRABEXT would never get called in practice. +However, there exists a bug in gcc 10 - more or less difficult to hit, +depending on your compiler options and architecture - where it would not +notice that the dereference after GRABEXT is dead code, at which point +it looks like you're dereferencing one past the end of the array, which +is illegal, and you you get: + + PassivGrab.c:292:35: error: array subscript 0 is outside array bounds + of 'XtServerGrabRec[1]' {aka 'struct _XtServerGrabRec[1]'} + [-Werror=array-bounds] + +As a completely stupid workaround, build those on-stack structs as +arrays of two, so that the (dead) dereference looks like it's pointing +into the dummy member of the array. This is almost certainly a compiler +bug and I don't encourage merging this patch upstream, but if you need +to build libXt with gcc 10 absolutely right this second, here it is. + +For details on the gcc issue, see: + +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93582 +--- + src/PassivGrab.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/src/PassivGrab.c b/src/PassivGrab.c +index bece0d9..b174d40 100644 +--- a/src/PassivGrab.c ++++ b/src/PassivGrab.c +@@ -553,7 +553,7 @@ XtServerGrabPtr _XtCheckServerGrabsOnWidget ( + _XtBoolean isKeyboard) + { + register XtServerGrabPtr grab; +- XtServerGrabRec tempGrab; ++ XtServerGrabRec tempGrab[2]; + XtServerGrabPtr *passiveListPtr; + XtPerWidgetInput pwi; + +@@ -577,13 +577,13 @@ XtServerGrabPtr _XtCheckServerGrabsOnWidget ( + /* Take only the lower thirteen bits as modifier state. The X Keyboard + * Extension may be representing keyboard group state in two upper bits. + */ +- tempGrab.widget = widget; +- tempGrab.keybut = (KeyCode) event->xkey.keycode; /* also xbutton.button */ +- tempGrab.modifiers = event->xkey.state & 0x1FFF; /*also xbutton.state*/ +- tempGrab.hasExt = False; ++ tempGrab[0].widget = widget; ++ tempGrab[0].keybut = (KeyCode) event->xkey.keycode; /* also xbutton.button */ ++ tempGrab[0].modifiers = event->xkey.state & 0x1FFF; /*also xbutton.state*/ ++ tempGrab[0].hasExt = False; + + for (grab = *passiveListPtr; grab; grab = grab->next) { +- if (GrabMatchesSecond(&tempGrab, grab)) ++ if (GrabMatchesSecond(tempGrab, grab)) + return (grab); + } + return (XtServerGrabPtr)NULL; +@@ -775,17 +775,17 @@ void UngrabKeyOrButton ( + Modifiers modifiers, + Boolean isKeyboard) + { +- XtServerGrabRec tempGrab; ++ XtServerGrabRec tempGrab[2]; + XtPerWidgetInput pwi; + + XtCheckSubclass(widget, coreWidgetClass, + "in XtUngrabKey or XtUngrabButton"); + + /* Build a temporary grab list entry */ +- tempGrab.widget = widget; +- tempGrab.modifiers = (unsigned short) modifiers; +- tempGrab.keybut = (KeyCode) keyOrButton; +- tempGrab.hasExt = False; ++ tempGrab[0].widget = widget; ++ tempGrab[0].modifiers = (unsigned short) modifiers; ++ tempGrab[0].keybut = (KeyCode) keyOrButton; ++ tempGrab[0].hasExt = False; + + LOCK_PROCESS; + pwi = _XtGetPerWidgetInput(widget, FALSE); +@@ -817,7 +817,7 @@ void UngrabKeyOrButton ( + + /* Delete all entries which are encompassed by the specified grab. */ + DeleteServerGrabFromList(isKeyboard ? &pwi->keyList : &pwi->ptrList, +- &tempGrab); ++ tempGrab); + } + + void XtGrabKey ( +-- +2.23.0 + diff --git a/libXt.spec b/libXt.spec index f81988c..b373110 100644 --- a/libXt.spec +++ b/libXt.spec @@ -4,19 +4,21 @@ Summary: X.Org X11 libXt runtime library Name: libXt -Version: 1.3.1 -Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} -License: MIT AND HPND-sell-variant AND SMLNJ AND MIT-open-group AND X11 +Version: 1.2.0 +Release: 4%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} +License: MIT URL: https://www.x.org %if 0%{?gitdate} -Source0: %{tarball}-%{gitdate}.tar.xz +Source0: %{tarball}-%{gitdate}.tar.bz2 Source1: make-git-snapshot.sh Source2: commitid %else -Source0: https://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.tar.xz +Source0: https://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.tar.bz2 %endif +Patch0: 0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch + Requires: libX11%{?_isa} >= 1.6 BuildRequires: make @@ -108,48 +110,6 @@ cp -p COPYING ${RPM_BUILD_ROOT}%{_datadir}/doc/%{name}/COPYING %{_mandir}/man3/*.3* %changelog -* Thu Jul 24 2025 Fedora Release Engineering - 1.3.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jan 17 2025 Fedora Release Engineering - 1.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Nov 18 2024 José Expósito - 1.3.1-1 -- libXt 1.3.1 - -* Thu Jul 18 2024 Fedora Release Engineering - 1.3.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jan 25 2024 Fedora Release Engineering - 1.3.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 1.3.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Oct 05 2023 José Expósito - 1.3.0-1 -- libXt 1.3.0 - -* Wed Sep 06 2023 Benjamin Tissoires - 1.2.1-6 -- SPDX migration - -* Thu Jul 20 2023 Fedora Release Engineering - 1.2.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jan 19 2023 Fedora Release Engineering - 1.2.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jul 21 2022 Fedora Release Engineering - 1.2.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jan 20 2022 Fedora Release Engineering - 1.2.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Sep 21 2021 Benjamin Tissoires 1.2.1-1 -- libXt 1.2.1 - -* Thu Jul 22 2021 Fedora Release Engineering - 1.2.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - * Tue Jan 26 2021 Fedora Release Engineering - 1.2.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index ca43748..bfd0e59 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libXt-1.3.1.tar.xz) = c220292f60b0f53134cf9364831a32bbaa9fa6bbb3a7143e917920957b7a48c616e946042747089f29ea9d8a18ecd64de620bcaf56d82462e7107de906f5db38 +SHA512 (libXt-1.2.0.tar.bz2) = 06248508b6fe5dfba8ceb4518475f656162351d78136eeb5d65086d680dabe9aca7bba3c94347f9c13ef03f82dab3ac19d0952ee610bc8c51c14cee7cf65f0b1