Re: two patches

Paul Eggert <[email protected]> Wed, 11 Oct 2017 14:36:41 -0700
Newsgroups gmane.comp.version-control.rcs.bugs,gmane.comp.lib.gnulib.bugs
Organization UCLA Computer Science Department
Message-ID <[email protected]>
In <https://lists.gnu.org/archive/html/bug-rcs/2017-10/msg00000.html>=20
Steven Pelletier wrote:
> Below are two patch specific to Apple/macOS versions of rcs.
>
> With the release of macOS High Sierra (10.13), Apple is enforcing that=20
> printf (and related) format strings that contain a %n specifier must=20
> be in write-protected memory. =C2=A0This causes rcsdiff to take an ille=
gal=20
> instruction trap shortly after startup. =C2=A0Running rcsdiff without=20
> arguments will reproduce the issue. =C2=A0The=20
> patch,=C2=A0rcs-apple_snprintf.patch, fixes that problem. =C2=A0This fi=
x is=20
> limited to a one line change to=C2=A0lib/vasnprintf.c =C2=A0It is worth=
 noting=20
> that old binaries will no longer function after the OS upgrade.

It is annoying that Apple does not care about backward compatibility,=20
even for old binaries. Anyway, this problem came from Gnulib and was=20
fixed here:

http://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=3Dc41f233c4c38e840=
23a16339782ee306f03e7f59
http://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=3D7df04f9b8a0adb15=
75ca0555775ec10860143cbf

and this fix should appear in the next RCS release.

> The second patch is for an old compile error where _Noreturn isn=E2=80=99=
t=20
> properly defined on Apple platforms. =C2=A0rcs-apple_noreturn.patch, fi=
xes=20
> that. =C2=A0This fix is a one line change to=C2=A0lib/config.h.in

This is another Gnulib issue. What's wrong with the definition? What=20
symptoms do you observe? I thought that Apple uses Clang, and Clang=20
#defines __GNUC__ to be at least 3 and supports __attribute__=20
((__noreturn__)), so the definition should work as-is.

What is the output of the command "clang --version", assuming you're=20
using Clang?

I'll CC: this to bug-gnulib to give Gnulib people a heads-up.