[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