[vlc-commits] extra/tools: fix bison for macOS 10.13

Jean-Baptiste Kempf git at videolan.org
Tue Nov 7 16:58:28 CET 2017


vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Tue Nov  7 16:57:01 2017 +0100| [43afed90d9578769126cc27af91c4e245cd21576] | committer: Jean-Baptiste Kempf

extra/tools: fix bison for macOS 10.13

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=43afed90d9578769126cc27af91c4e245cd21576
---

 extras/tools/bison-macOS-7df04f9.patch  | 48 +++++++++++++++++++++++++++++++++
 extras/tools/bison-macOS-c41f233c.patch | 45 +++++++++++++++++++++++++++++++
 extras/tools/tools.mak                  |  2 ++
 3 files changed, 95 insertions(+)

diff --git a/extras/tools/bison-macOS-7df04f9.patch b/extras/tools/bison-macOS-7df04f9.patch
new file mode 100644
index 0000000000..b398dbb7c0
--- /dev/null
+++ b/extras/tools/bison-macOS-7df04f9.patch
@@ -0,0 +1,48 @@
+From 7df04f9b8a0adb1575ca0555775ec10860143cbf Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno at clisp.org>
+Date: Fri, 7 Jul 2017 23:35:32 +0200
+Subject: vasnprintf: port to macOS 10.13
+
+Improve comments in last commit.
+---
+ lib/vasnprintf.c | 17 ++++++++++-------
+ 2 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
+index fecaf27..2e4eb19 100644
+--- a/lib/vasnprintf.c
++++ b/lib/vasnprintf.c
+@@ -4869,10 +4869,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+ #endif
+                   *fbp = dp->conversion;
+ #if USE_SNPRINTF
+-# if ! (((__GLIBC__ > 2                                                 \
+-          || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))                  \
+-         && !defined __UCLIBC__)                                        \
+-        || (defined __APPLE__ && defined __MACH__)                      \
++# if ! (((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))        \
++         && !defined __UCLIBC__)                                            \
++        || (defined __APPLE__ && defined __MACH__)                          \
+         || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+                 fbp[1] = '%';
+                 fbp[2] = 'n';
+@@ -4887,9 +4886,13 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+                    in format strings in writable memory may crash the program
+                    (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
+                    in this situation.  */
+-                /* macOS 10.13 High Sierra behaves like glibc with
+-                   _FORTIFY_SOURCE=2, and older macOS releases
+-                   presumably do not need %n.  */
++                /* On Mac OS X 10.3 or newer, we know that snprintf's return
++                   value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99
++                   and gl_SNPRINTF_TRUNCATION_C99 pass.
++                   Therefore we can avoid using %n in this situation.
++                   On Mac OS X 10.13 or newer, the use of %n in format strings
++                   in writable memory by default crashes the program, so we
++                   should avoid it in this situation.  */
+                 /* On native Windows systems (such as mingw), we can avoid using
+                    %n because:
+                      - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
+-- 
+cgit v1.0-41-gc330
+
diff --git a/extras/tools/bison-macOS-c41f233c.patch b/extras/tools/bison-macOS-c41f233c.patch
new file mode 100644
index 0000000000..08775ac273
--- /dev/null
+++ b/extras/tools/bison-macOS-c41f233c.patch
@@ -0,0 +1,45 @@
+From c41f233c4c38e84023a16339782ee306f03e7f59 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <eggert at cs.ucla.edu>
+Date: Fri, 7 Jul 2017 14:10:20 -0700
+Subject: vasnprintf: port to macOS 10.13
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Problem reported by comex in:
+http://lists.gnu.org/archive/html/bug-gnulib/2017-07/msg00056.html
+* lib/vasnprintf.c (VASNPRINTF): Don’t use %n on macOS.
+---
+ lib/vasnprintf.c | 9 ++++++++-
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
+index 9c2af0e..fecaf27 100644
+--- a/lib/vasnprintf.c
++++ b/lib/vasnprintf.c
+@@ -4869,7 +4869,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+ #endif
+                   *fbp = dp->conversion;
+ #if USE_SNPRINTF
+-# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
++# if ! (((__GLIBC__ > 2                                                 \
++          || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))                  \
++         && !defined __UCLIBC__)                                        \
++        || (defined __APPLE__ && defined __MACH__)                      \
++        || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+                 fbp[1] = '%';
+                 fbp[2] = 'n';
+                 fbp[3] = '\0';
+@@ -4883,6 +4887,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+                    in format strings in writable memory may crash the program
+                    (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
+                    in this situation.  */
++                /* macOS 10.13 High Sierra behaves like glibc with
++                   _FORTIFY_SOURCE=2, and older macOS releases
++                   presumably do not need %n.  */
+                 /* On native Windows systems (such as mingw), we can avoid using
+                    %n because:
+                      - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
+-- 
+cgit v1.0-41-gc330
+
diff --git a/extras/tools/tools.mak b/extras/tools/tools.mak
index 448a3d2ae5..5221a10675 100644
--- a/extras/tools/tools.mak
+++ b/extras/tools/tools.mak
@@ -301,6 +301,8 @@ bison-$(BISON_VERSION).tar.xz:
 
 bison: bison-$(BISON_VERSION).tar.xz
 	$(UNPACK)
+	$(APPLY) bison-macOS-c41f233c.patch
+	$(APPLY) bison-macOS-7df04f9.patch
 	$(MOVE)
 
 .bison: bison



More information about the vlc-commits mailing list