<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/lib-src, branch fix/bug-20871</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>maint: shorten https://lists.gnu.org/archive/html/... links</title>
<updated>2017-11-26T06:48:12+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-11-26T06:45:41+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a89f0b6f33f9eb8910a1fceda9028d76ef50b05d'/>
<id>a89f0b6f33f9eb8910a1fceda9028d76ef50b05d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use alignas to fix GCALIGN-related bugs</title>
<updated>2017-11-13T18:16:51+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-11-13T16:51:41+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b1573a97e17b518723ab3f906eb6d521caed196d'/>
<id>b1573a97e17b518723ab3f906eb6d521caed196d</id>
<content type='text'>
Use alignas and unions to specify alignments of objects needing
addresses that are at least a multiple of GCALIGNMENT.  Using
these standard C facilities should be safer than relying on ad hoc
and poorly-understood features like GCC’s __attribute__
((aligned (N))), the root cause for recent porting bugs like
Bug#29040.  The alignas macro was standardized by C11 and Gnulib
supports alignas for pre-C11 platforms.  I have tested this on Sun
Studio 12 sparc (2007) and GCC 4.4.7 x86-64 (2012) as well as on
more recent platforms like GCC 7.2.1 (2017) on Fedora 26 (both
x86-64 and x86).
* lib-src/make-docfile.c (close_emacs_globals): lispsym is now
just an array of struct Lisp_Symbol, since struct Lisp_Symbol is
now properly aligned.  All uses changed.
* src/alloc.c (NEXT_FREE_LISP_STRING): Just use the new u.next
member; this is simpler and safer than casting a pointer that
might not be aligned properly.
(aligned_Lisp_Symbol): Remove.  No longer needed, now that struct
Lisp_Symbol is aligned properly.  All uses replaced with struct
Lisp_Symbol.
* src/lisp.h (GCALIGNED): Remove, as it does not work as expected:
it can cause the natural alignment to be ignored.  All uses
replaced by unions with a ‘char alignas (GCALIGNMENT)’ member as
described below.
(struct Lisp_Symbol, struct Lisp_Cons, struct Lisp_String):
Change definition from ‘struct TAG { MEMBERS };’ to
‘struct TAG { union { struct { MEMBERS } s; char alignas
(GCALIGNMENT) gcaligned; } u; };’.  This guarantees ‘struct TAG’
to have an alignment that at least max (GCALIGNMENT, N) where N is
its old alignment.  All uses like ‘PTR-&gt;MEMBER’ changed to
‘PTR-&gt;u.s.MEMBER’; these uses were supposed to be mostly private
anyway.  Verify that the resulting ‘struct TAG’ is properly
aligned for Emacs.
(union vectorlike_header): New member ‘gcaligned’ to guarantee
that this type, and its containing types like ‘struct Lisp_Subr’,
‘struct buffer’ and ‘struct thread_state’, are all properly
aligned for Emacs.
(struct Lisp_String): New union member ‘next’, for the benefit
of NEXT_FREE_LISP_STRING.
(union Aligned_Cons, union Aligned_String): Remove.  All uses
replaced by struct Lisp_Cons and struct Lisp_String, since they
are now properly aligned.
(USE_STACK_CONS, USE_STACK_STRING): Simplify now that we can
assume struct Lisp_Cons and struct Lisp_String are properly
aligned.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use alignas and unions to specify alignments of objects needing
addresses that are at least a multiple of GCALIGNMENT.  Using
these standard C facilities should be safer than relying on ad hoc
and poorly-understood features like GCC’s __attribute__
((aligned (N))), the root cause for recent porting bugs like
Bug#29040.  The alignas macro was standardized by C11 and Gnulib
supports alignas for pre-C11 platforms.  I have tested this on Sun
Studio 12 sparc (2007) and GCC 4.4.7 x86-64 (2012) as well as on
more recent platforms like GCC 7.2.1 (2017) on Fedora 26 (both
x86-64 and x86).
* lib-src/make-docfile.c (close_emacs_globals): lispsym is now
just an array of struct Lisp_Symbol, since struct Lisp_Symbol is
now properly aligned.  All uses changed.
* src/alloc.c (NEXT_FREE_LISP_STRING): Just use the new u.next
member; this is simpler and safer than casting a pointer that
might not be aligned properly.
(aligned_Lisp_Symbol): Remove.  No longer needed, now that struct
Lisp_Symbol is aligned properly.  All uses replaced with struct
Lisp_Symbol.
* src/lisp.h (GCALIGNED): Remove, as it does not work as expected:
it can cause the natural alignment to be ignored.  All uses
replaced by unions with a ‘char alignas (GCALIGNMENT)’ member as
described below.
(struct Lisp_Symbol, struct Lisp_Cons, struct Lisp_String):
Change definition from ‘struct TAG { MEMBERS };’ to
‘struct TAG { union { struct { MEMBERS } s; char alignas
(GCALIGNMENT) gcaligned; } u; };’.  This guarantees ‘struct TAG’
to have an alignment that at least max (GCALIGNMENT, N) where N is
its old alignment.  All uses like ‘PTR-&gt;MEMBER’ changed to
‘PTR-&gt;u.s.MEMBER’; these uses were supposed to be mostly private
anyway.  Verify that the resulting ‘struct TAG’ is properly
aligned for Emacs.
(union vectorlike_header): New member ‘gcaligned’ to guarantee
that this type, and its containing types like ‘struct Lisp_Subr’,
‘struct buffer’ and ‘struct thread_state’, are all properly
aligned for Emacs.
(struct Lisp_String): New union member ‘next’, for the benefit
of NEXT_FREE_LISP_STRING.
(union Aligned_Cons, union Aligned_String): Remove.  All uses
replaced by struct Lisp_Cons and struct Lisp_String, since they
are now properly aligned.
(USE_STACK_CONS, USE_STACK_STRING): Simplify now that we can
assume struct Lisp_Cons and struct Lisp_String are properly
aligned.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use GCALIGNED properly for GCC</title>
<updated>2017-11-09T03:12:02+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-11-09T03:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9e59de9449b53c3ecd85b624c11360ba9cafee75'/>
<id>9e59de9449b53c3ecd85b624c11360ba9cafee75</id>
<content type='text'>
Apparently GCC requires that ‘__attribute__ ((aligned (8)))’ must
immediately follow the ‘struct’ keyword when aligning a structure.
The attribute silently does not work if it follows a tag after the
‘struct’ keyword.  Who knew?  Anyway, this patch is designed to
fix a SIGSEGV problem reported by John Mastro (Bug#29183).
* lib-src/make-docfile.c (close_emacs_globals):
* src/buffer.c (buffer_defaults, buffer_local_symbols):
* src/lisp.h (DEFUN):
* src/thread.c (main_thread):
Put 'GCALIGNED' immediately after 'struct'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Apparently GCC requires that ‘__attribute__ ((aligned (8)))’ must
immediately follow the ‘struct’ keyword when aligning a structure.
The attribute silently does not work if it follows a tag after the
‘struct’ keyword.  Who knew?  Anyway, this patch is designed to
fix a SIGSEGV problem reported by John Mastro (Bug#29183).
* lib-src/make-docfile.c (close_emacs_globals):
* src/buffer.c (buffer_defaults, buffer_local_symbols):
* src/lisp.h (DEFUN):
* src/thread.c (main_thread):
Put 'GCALIGNED' immediately after 'struct'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix alignment portability problems</title>
<updated>2017-11-02T20:21:33+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-11-02T20:06:38+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=6b08ad5263bc063c79666ffe2bd5ed9ab77a00a0'/>
<id>6b08ad5263bc063c79666ffe2bd5ed9ab77a00a0</id>
<content type='text'>
Do not assume that the natural alignment of Lisp objects is a
multiple of GCALIGNMENT.  This improves on the portability of the
recent fix for Bug#29040.
* lib-src/make-docfile.c (close_emacs_globals):
* src/buffer.c (buffer_defaults, buffer_local_symbols):
* src/lisp.h (DEFUN):
* src/thread.c (main_thread):
Use GCALIGNED, not alignas (GCALIGNMENT).
* src/alloc.c (COMMON_MULTIPLE):
Move back here from lisp.h, since it is no longer used elsewhere.
* src/lisp.h (GCALIGNMENT): No longer a macro, since we need not
worry about MSVC.  Omit no-longer-needed consistency check.
* src/thread.c (THREAD_ALIGNMENT): Remove.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Do not assume that the natural alignment of Lisp objects is a
multiple of GCALIGNMENT.  This improves on the portability of the
recent fix for Bug#29040.
* lib-src/make-docfile.c (close_emacs_globals):
* src/buffer.c (buffer_defaults, buffer_local_symbols):
* src/lisp.h (DEFUN):
* src/thread.c (main_thread):
Use GCALIGNED, not alignas (GCALIGNMENT).
* src/alloc.c (COMMON_MULTIPLE):
Move back here from lisp.h, since it is no longer used elsewhere.
* src/lisp.h (GCALIGNMENT): No longer a macro, since we need not
worry about MSVC.  Omit no-longer-needed consistency check.
* src/thread.c (THREAD_ALIGNMENT): Remove.
</pre>
</div>
</content>
</entry>
<entry>
<title>Spelling fixes</title>
<updated>2017-10-19T01:43:44+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-10-19T01:43:00+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=6f1dea5c74057707bf367f863a8be5750bbb6094'/>
<id>6f1dea5c74057707bf367f863a8be5750bbb6094</id>
<content type='text'>
* lisp/cedet/semantic/analyze/refs.el:
(semantic-analyze-proto-impl-toggle): Fix recently-introduced
misspelling of pop-to-buffer-same-window.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/cedet/semantic/analyze/refs.el:
(semantic-analyze-proto-impl-toggle): Fix recently-introduced
misspelling of pop-to-buffer-same-window.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid compilation warnings in optimized builds</title>
<updated>2017-10-15T16:20:58+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2017-10-15T16:20:58+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=325dfdae13bdc0653fe04b746326a1518ee18ff1'/>
<id>325dfdae13bdc0653fe04b746326a1518ee18ff1</id>
<content type='text'>
* src/process.c (Fmake_network_process):
* src/image.c (xbm_scan, gif_load):
* src/fileio.c (Frename_file):
* src/data.c (Fmake_local_variable):
* src/buffer.c (fix_start_end_in_overlays):
* lib-src/etags.c (process_file_name): Mark variables with UNINIT
to avoid compiler warnings in optimized builds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/process.c (Fmake_network_process):
* src/image.c (xbm_scan, gif_load):
* src/fileio.c (Frename_file):
* src/data.c (Fmake_local_variable):
* src/buffer.c (fix_start_end_in_overlays):
* lib-src/etags.c (process_file_name): Mark variables with UNINIT
to avoid compiler warnings in optimized builds.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prefer HTTPS to HTTP for gnu.org</title>
<updated>2017-10-02T02:59:01+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-10-02T02:53:56+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5172fa02cccaab2500ecf85aaf65b8deed54d42e'/>
<id>5172fa02cccaab2500ecf85aaf65b8deed54d42e</id>
<content type='text'>
This fixes some URLs I omitted from my previous pass,
notably those in lists.gnu.org.  Although lists.gnu.org
does not yet support TLS 1.1, TLS 1.0 is better than nothing.
* lisp/erc/erc.el (erc-official-location):
* lisp/mail/emacsbug.el (report-emacs-bug):
Use https:, not http:.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes some URLs I omitted from my previous pass,
notably those in lists.gnu.org.  Although lists.gnu.org
does not yet support TLS 1.1, TLS 1.0 is better than nothing.
* lisp/erc/erc.el (erc-official-location):
* lisp/mail/emacsbug.el (report-emacs-bug):
Use https:, not http:.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge from Gnulib</title>
<updated>2017-10-02T01:31:10+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-10-02T01:30:44+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=8cdd8b920a80e4c61270b0a90f51fb4c8db85c6e'/>
<id>8cdd8b920a80e4c61270b0a90f51fb4c8db85c6e</id>
<content type='text'>
This is mostly to change http: to https: in licenses.
* COPYING, build-aux/config.guess, build-aux/config.sub:
* doc/emacs/doclicense.texi, doc/emacs/gpl.texi:
* doc/lispintro/doclicense.texi, doc/lispref/doclicense.texi:
* doc/lispref/gpl.texi, doc/misc/doclicense.texi:
* doc/misc/gpl.texi, etc/COPYING, leim/COPYING:
* lib-src/COPYING, lib/COPYING, lisp/COPYING, lwlib/COPYING:
* msdos/COPYING, nt/COPYING, src/COPYING:
Copy from Gnulib.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is mostly to change http: to https: in licenses.
* COPYING, build-aux/config.guess, build-aux/config.sub:
* doc/emacs/doclicense.texi, doc/emacs/gpl.texi:
* doc/lispintro/doclicense.texi, doc/lispref/doclicense.texi:
* doc/lispref/gpl.texi, doc/misc/doclicense.texi:
* doc/misc/gpl.texi, etc/COPYING, leim/COPYING:
* lib-src/COPYING, lib/COPYING, lisp/COPYING, lwlib/COPYING:
* msdos/COPYING, nt/COPYING, src/COPYING:
Copy from Gnulib.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prefer HTTPS to HTTP for gnu.org</title>
<updated>2017-09-30T00:48:22+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2017-09-30T00:44:23+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=cbc832448878f7bc7b226243abb8d8b1ae68a937'/>
<id>cbc832448878f7bc7b226243abb8d8b1ae68a937</id>
<content type='text'>
This catches some URLs I missed in my previous scan,
or perhaps were added after the scan.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This catches some URLs I missed in my previous scan,
or perhaps were added after the scan.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compilation warning in etags.c</title>
<updated>2017-09-16T19:17:55+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2017-09-16T19:17:55+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c3df816585c6b8953fd4075cff894ec2d9ce0596'/>
<id>c3df816585c6b8953fd4075cff894ec2d9ce0596</id>
<content type='text'>
* lib-src/etags.c (etags_mktmp) [DOS_NT]: Don't dereference a NULL
pointer.  Reported by Richard Copley &lt;rcopley@gmail.com&gt;.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lib-src/etags.c (etags_mktmp) [DOS_NT]: Don't dereference a NULL
pointer.  Reported by Richard Copley &lt;rcopley@gmail.com&gt;.
</pre>
</div>
</content>
</entry>
</feed>
