[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#870773: motif: flex now has yyleng as an int again



Source: motif
Version: 2.3.4-13
Severity: important
Tags: patch
User: debian-sparc@lists.debian.org
Usertags: sparc64
X-Debbugs-Cc: debian-sparc@lists.debian.org

Hi,
Currently src:motif FTBFS on sparc64 due to wml crashing with SIGBUS (no
build logs available, as libfl-dev was broken on sparc64 until just
recently, masking the issue). This is because wml.c has yyleng defined
as a size_t, which was correct for versions of flex between 2.5.36 and
2.6.1, but this violated POSIX[0] and so yyleng was reverted back to an
int in 2.6.1[1]. When building on sparc64, yyleng just happens to be
aligned to a 4-byte boundary but not an 8-byte boundary, so doing an
8-byte store to it is unaligned and traps, but on other architectures
this will silently zero out the next 4 bytes in memory.

Please apply the attached debdiff to revert wml.c back to defining
yyleng as an external int, and also add a version constraint to
libfl-dev to ensure motif is not accidentally built with an older
version of flex without reinstating the hunk. With it I can successfully
build motif on sparc64.

Regards,
James

[0] http://pubs.opengroup.org/onlinepubs/7908799/xcu/lex.html
[1] https://github.com/westes/flex/commit/7a7c3dfe1bcb8230447ba1656f926b4b4cdfc457
diff -Nru motif-2.3.7/debian/control motif-2.3.7/debian/control
--- motif-2.3.7/debian/control	2017-08-03 11:21:00.000000000 +0100
+++ motif-2.3.7/debian/control	2017-08-04 22:36:10.000000000 +0100
@@ -5,7 +5,7 @@
                debhelper (>= 10),
                dh-exec,
                flex (>= 2.5.36),
-               libfl-dev,
+               libfl-dev (>= 2.6.1),
                libfontconfig1-dev,
                libjpeg-dev,
                libpng-dev,
diff -Nru motif-2.3.7/debian/patches/fix-type-inconsistencies.patch motif-2.3.7/debian/patches/fix-type-inconsistencies.patch
--- motif-2.3.7/debian/patches/fix-type-inconsistencies.patch	2017-08-03 10:54:00.000000000 +0100
+++ motif-2.3.7/debian/patches/fix-type-inconsistencies.patch	2017-08-04 22:36:10.000000000 +0100
@@ -1,12 +1,10 @@
 Description: Fix type inconsistencies
  This patch fixes various type inconsistencies reported by goto-cc
  from the cbmc package.
- .
- The yyleng fix in tools/wml/wml.c requires flex >= 2.5.36.
 Author: Graham Inggs <ginggs@debian.org>
 Forwarded: http://bugs.motifzone.net/show_bug.cgi?id=1641
 Bug-Debian: http://bugs.debian.org/749417
-Last-Update: 2017-08-03
+Last-Update: 2017-08-04
 --- a/lib/Xm/EditresComI.h
 +++ b/lib/Xm/EditresComI.h
 @@ -8,7 +8,7 @@
@@ -49,17 +47,6 @@
  extern int _XmTabbedStackListCount _ARGS((XmTabbedStackList));
  
  #ifndef _NO_PROTO
---- a/tools/wml/wml.c
-+++ b/tools/wml/wml.c
-@@ -153,7 +153,7 @@
- /*
-  * External variables
-  */
--extern	int	yyleng;
-+extern	size_t	yyleng;
- extern  int yyparse();
- 
- 
 --- a/demos/lib/Xmd/RegEdit.c
 +++ b/demos/lib/Xmd/RegEdit.c
 @@ -252,7 +252,7 @@

Reply to: