From facc883af874c9c841432a4ea5f1eda884c20a38 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 21 Sep 2021 12:12:35 +0200 Subject: [PATCH] libXt 1.2.1 --- .gitignore | 1 + ...-around-a-compiler-issue-with-gcc-10.patch | 100 ------------------ libXt.spec | 9 +- sources | 2 +- 4 files changed, 7 insertions(+), 105 deletions(-) delete mode 100644 0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch diff --git a/.gitignore b/.gitignore index f3d212c..e0868f8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ 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 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 deleted file mode 100644 index ac9295d..0000000 --- a/0001-xt-Work-around-a-compiler-issue-with-gcc-10.patch +++ /dev/null @@ -1,100 +0,0 @@ -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 0ba3ff4..e051fc2 100644 --- a/libXt.spec +++ b/libXt.spec @@ -4,8 +4,8 @@ Summary: X.Org X11 libXt runtime library Name: libXt -Version: 1.2.0 -Release: 5%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} +Version: 1.2.1 +Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} License: MIT URL: https://www.x.org @@ -17,8 +17,6 @@ Source2: commitid 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 @@ -110,6 +108,9 @@ cp -p COPYING ${RPM_BUILD_ROOT}%{_datadir}/doc/%{name}/COPYING %{_mandir}/man3/*.3* %changelog +* 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 diff --git a/sources b/sources index bfd0e59..14003d2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libXt-1.2.0.tar.bz2) = 06248508b6fe5dfba8ceb4518475f656162351d78136eeb5d65086d680dabe9aca7bba3c94347f9c13ef03f82dab3ac19d0952ee610bc8c51c14cee7cf65f0b1 +SHA512 (libXt-1.2.1.tar.bz2) = 6877af61ba91eeed6b6f80471b84f354ad0ec0827249c7ee0a00c13508063fe8d2696dd400a4bdbc6ca2ff67cbe1317ad5ac24522fd96099dc56535e33ca052c