GNU bug report logs - #9772
<stdalign.h>, USE_LSB_TAG, and MSVC

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Mon, 17 Oct 2011 03:26:01 UTC

Severity: minor

Tags: patch

Found in version 24.0.90

Fixed in version 24.3

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 9772 in the body.
You can then email your comments to 9772 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 03:26:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Paul Eggert <eggert <at> cs.ucla.edu>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 17 Oct 2011 03:26:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: bug-gnu-emacs <at> gnu.org
Cc: Eli Zaretskii <eliz <at> gnu.org>
Subject: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Sun, 16 Oct 2011 20:24:31 -0700
Package: Emacs
Version: 24.0.90
Tags: patch

Here's a patch to the Emacs trunk (bzr 106094) to cause it to use
<stdalign.h> if available, falling back on a Gnulib replacement
otherwise.  This simplifies Emacs proper, and should future-proof it
for C1X compilers.

Although this patch is mostly just a cleanup patch for GNU and POSIX
platforms, it may improve performance on some Microsoft hosts, as it
contains code for supporting <stdalign.h> under MSVC.  As far as I can
see, USE_LSB_TAG currently doesn't work with MSVC, so if this patch
works it should increase the maximum Emacs buffer size in that
environment.  I haven't tested it under Windows, though, and quite
possibly further work will be needed in that area.

Since this is Microsoft-build relevant, I'll CC: this bug report to Eli.


=== modified file '.bzrignore'
--- .bzrignore	2011-09-29 14:19:11 +0000
+++ .bzrignore	2011-10-17 01:22:19 +0000
@@ -53,6 +53,7 @@
 lib/c++defs.h
 lib/getopt.h
 lib/inttypes.h
+lib/stdalign.h
 lib/stdbool.h
 lib/stdio.h
 lib/stdint.h

=== modified file 'ChangeLog'
--- ChangeLog	2011-10-13 02:16:59 +0000
+++ ChangeLog	2011-10-17 01:22:19 +0000
@@ -1,3 +1,18 @@
+2011-10-17  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module.
+	This should improve portability of macros like alignof and DECL_ALIGN.
+	* lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
+	* .bzrignore: Add lib/stdalign.h.
+	* Makefile.in (GNULIB_MODULES): Add stdalign.
+	* config.bat: Set HAVE_ATTRIBUTE_ALIGNED in lib/stdalign.h,
+	instead of NO_DECL_ALIGN in config.h.  Copy lib/stdalign.in.h to
+	lib/stdalign.in-h as needed.
+	* configure.in (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
+	fiddles with this, as gnulib now does this for us.
+	* lib/gnulib.mk, lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+	* m4/gl-comp.m4, m4/pthread_sigmask.m4: Merge from gnulib.
+
 2011-10-13  Glenn Morris  <rgm <at> gnu.org>
 
 	* configure.in: Also look for tputs in libcurses.  (Bug#9736)

=== modified file 'Makefile.in'
--- Makefile.in	2011-09-26 21:30:18 +0000
+++ Makefile.in	2011-10-17 01:22:19 +0000
@@ -337,7 +337,7 @@
   dup2 \
   filemode getloadavg getopt-gnu ignore-value intprops lstat \
   mktime pthread_sigmask readlink \
-  socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+  socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 GNULIB_TOOL_FLAGS = \
  --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax \
  --avoid=raise --avoid=threadlib \

=== modified file 'config.bat'
--- config.bat	2011-09-29 12:08:36 +0000
+++ config.bat	2011-10-17 01:22:19 +0000
@@ -161,7 +161,8 @@
 sed -f ../msdos/sed2x.inp < ..\autogen\config.in > config.tmp

 :src4

 sed -f ../msdos/sed2v2.inp <config.tmp >config.h2

-Rem See if DECL_ALIGN can be supported with this GCC

+Rem See if alignas can be supported with this GCC

+set HAVE_ATTRIBUTE_ALIGNED=1

 rm -f junk.c junk.o junk junk.exe

 echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c

 rem Two percent signs because it is a special character for COMMAND.COM/CMD

@@ -173,9 +174,9 @@
 If Not ErrorLevel 1 Goto alignOk

 Echo WARNING: Your GCC does not support 8-byte aligned variables.

 Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.

-rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG

+rem The following line disables alignas which in turn disables USE_LSB_TAG

 rem For details see lisp.h where it defines USE_LSB_TAG

-echo #define NO_DECL_ALIGN >>config.h2

+set HAVE_ATTRIBUTE_ALIGNED=0

 :alignOk

 Rem See if they have libxml2 later than v2.2.0 installed

 Echo Checking whether libxml2 v2.2.1 or later is installed ...

@@ -281,6 +282,7 @@
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h

 If Exist alloca.in.h update alloca.in.h alloca.in-h

 If Exist getopt.in.h update getopt.in.h getopt.in-h

+If Exist stdalign.in.h update stdalign.in.h stdalign.in-h

 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h

 If Exist signal.in.h update signal.in.h signal.in-h

 If Exist stddef.in.h update stddef.in.h  stddef.in-h

@@ -290,7 +292,7 @@
 If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h

 If Exist time.in.h update time.in.h time.in-h

 If Exist unistd.in.h update unistd.in.h unistd.in-h

-sed -f ../msdos/sedlibcf.inp < ..\autogen\Makefile.in > makefile.tmp

+sed -e "s/@HAVE_ATTRIBUTE_ALIGNED@/%HAVE_ATTRIBUTE_ALIGNED%/g" -f ../msdos/sedlibcf.inp < ..\autogen\Makefile.in > makefile.tmp

 sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile

 rm -f makefile.tmp

 Rem Create .Po files for new files in lib/

@@ -343,4 +345,3 @@
 set djgpp_ver=

 set sys_malloc=

 set libxml=

-


=== modified file 'configure.in'
--- configure.in	2011-10-13 02:16:59 +0000
+++ configure.in	2011-10-17 01:22:19 +0000
@@ -1357,19 +1357,6 @@
 dnl Check for endianess
 AC_C_BIGENDIAN
 
-AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
-  [emacs_cv_attribute_aligned],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM(
-	[[char __attribute__ ((__aligned__ (1 << 3))) c;]],
-	[[]])],
-     [emacs_cv_attribute_aligned=yes],
-     [emacs_cv_attribute_aligned=no])])
-if test $emacs_cv_attribute_aligned = yes; then
-  AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
-    [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
-fi
-
 dnl check for Make feature
 AC_PROG_MAKE_SET
 

=== modified file 'lib/gnulib.mk'
--- lib/gnulib.mk	2011-09-26 21:30:18 +0000
+++ lib/gnulib.mk	2011-10-17 01:22:19 +0000
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -421,6 +421,29 @@
 
 ## end   gnulib module stat
 
+## begin gnulib module stdalign
+
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  sed -e 's/@''HAVE_ATTRIBUTE_ALIGNED''@/$(HAVE_ATTRIBUTE_ALIGNED)/g' < $(srcdir)/stdalign.in.h; \
+	} > $@-t && \
+	mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+	rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+EXTRA_DIST += stdalign.in.h
+
+## end   gnulib module stdalign
+
 ## begin gnulib module stdarg
 
 BUILT_SOURCES += $(STDARG_H)

=== modified file 'lib/md5.c'
--- lib/md5.c	2011-02-19 07:28:29 +0000
+++ lib/md5.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "md5.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -254,8 +255,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha1.c'
--- lib/sha1.c	2011-05-24 08:12:52 +0000
+++ lib/sha1.c	2011-10-17 01:22:19 +0000
@@ -26,7 +26,8 @@
 
 #include "sha1.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -241,8 +242,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha256.c'
--- lib/sha256.c	2011-06-21 08:45:39 +0000
+++ lib/sha256.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha256.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -373,8 +374,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha512.c'
--- lib/sha512.c	2011-06-21 08:45:39 +0000
+++ lib/sha512.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha512.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -381,8 +382,7 @@
   if (len >= 128)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 128)
           {

=== added file 'lib/stdalign.in.h'
--- lib/stdalign.in.h	1970-01-01 00:00:00 +0000
+++ lib/stdalign.in.h	2011-10-17 01:22:19 +0000
@@ -0,0 +1,61 @@
+/* A substitute for ISO C 1x <stdalign.h>.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Paul Eggert and Bruno Haible.  */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+   References:
+   ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+   sections 6.5.3.4, 6.7.5, 7.15.
+   C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+   section 18.10. */
+
+/* Return the alignment of a structure slot (field) of TYPE,
+   as an integer constant expression.  The result cannot be used as a
+   value for an 'enum' constant, if you want to be portable to HP-UX
+   10.20 cc and AIX 3.2.5 xlc.
+
+   This is not the same as GCC's __alignof__ operator; for example, on
+   x86 with GCC, _Alignof (long long) is typically 4 whereas
+   __alignof__ (long long) is 8.  */
+#include <stddef.h>
+#if defined __cplusplus
+   template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* Align a type or variable to the alignment A.  */
+#if @HAVE_ATTRIBUTE_ALIGNED@ && !defined __cplusplus
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec ((align (a)))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */

=== modified file 'm4/gl-comp.m4'
--- m4/gl-comp.m4	2011-10-07 21:15:00 +0000
+++ m4/gl-comp.m4	2011-10-17 01:22:19 +0000
@@ -76,6 +76,7 @@
   # Code from module socklen:
   # Code from module ssize_t:
   # Code from module stat:
+  # Code from module stdalign:
   # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
@@ -180,6 +181,7 @@
 gl_SIGNAL_H
 gl_TYPE_SOCKLEN_T
 gt_TYPE_SSIZE_T
+gl_STDALIGN_H
 gl_STDARG_H
 AM_STDBOOL_H
 gl_STDDEF_H
@@ -311,18 +313,18 @@
   if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
     func_gl_gnulib_m4code_stat
   fi
-  if test $ac_cv_func_strtoimax = no; then
-    func_gl_gnulib_m4code_verify
-  fi
   if test $ac_cv_func_strtoimax = no && test $ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
-  if test $ac_cv_func_strtoumax = no; then
+  if test $ac_cv_func_strtoimax = no; then
     func_gl_gnulib_m4code_verify
   fi
   if test $ac_cv_func_strtoumax = no && test $ac_cv_type_unsigned_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoull
   fi
+  if test $ac_cv_func_strtoumax = no; then
+    func_gl_gnulib_m4code_verify
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
@@ -513,6 +515,7 @@
   lib/signal.in.h
   lib/sigprocmask.c
   lib/stat.c
+  lib/stdalign.in.h
   lib/stdarg.in.h
   lib/stdbool.in.h
   lib/stddef.in.h
@@ -563,6 +566,7 @@
   m4/ssize_t.m4
   m4/st_dm_mode.m4
   m4/stat.m4
+  m4/stdalign.m4
   m4/stdarg.m4
   m4/stdbool.m4
   m4/stddef_h.m4

=== modified file 'm4/pthread_sigmask.m4'
--- m4/pthread_sigmask.m4	2011-09-03 23:08:32 +0000
+++ m4/pthread_sigmask.m4	2011-10-17 01:22:19 +0000
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,6 +6,8 @@
 
 AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
 [
+  AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
   AC_CHECK_FUNCS_ONCE([pthread_sigmask])
   LIB_PTHREAD_SIGMASK=
 

=== added file 'm4/stdalign.m4'
--- m4/stdalign.m4	1970-01-01 00:00:00 +0000
+++ m4/stdalign.m4	2011-10-17 01:22:19 +0000
@@ -0,0 +1,37 @@
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+  AC_CHECK_HEADERS_ONCE([stdalign.h])
+  HAVE_ATTRIBUTE_ALIGNED='?'
+
+  if test "$ac_cv_header_stdalign_h" = yes; then
+    STDALIGN_H=''
+  else
+    STDALIGN_H='stdalign.h'
+    AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
+      [gl_cv_attribute_aligned],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[char __attribute__ ((__aligned__ (1 << 3))) c;]],
+            [[]])],
+         [gl_cv_attribute_aligned=yes],
+         [gl_cv_attribute_aligned=no])])
+    if test $gl_cv_attribute_aligned = yes; then
+      HAVE_ATTRIBUTE_ALIGNED=1
+    else
+      HAVE_ATTRIBUTE_ALIGNED=0
+    fi
+  fi
+
+  AC_SUBST([HAVE_ATTRIBUTE_ALIGNED])
+  AC_SUBST([STDALIGN_H])
+  AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])

=== modified file 'msdos/ChangeLog'
--- msdos/ChangeLog	2011-09-29 12:00:18 +0000
+++ msdos/ChangeLog	2011-10-17 01:22:19 +0000
@@ -1,3 +1,10 @@
+2011-10-17  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module.
+	* sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
+	* sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
+	(GL_GENERATE_STDALIGN_H_FALSE): New edits.
+
 2011-09-29  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* mainmake.v2 (boot): Condition the value on the existence of

=== modified file 'msdos/sed2v2.inp'
--- msdos/sed2v2.inp	2011-09-29 12:00:18 +0000
+++ msdos/sed2v2.inp	2011-10-17 01:22:19 +0000
@@ -35,7 +35,6 @@
 /^#undef HAVE_FREXP *$/s/^.*$/#define HAVE_FREXP 1/
 /^#undef HAVE_FMOD *$/s/^.*$/#define HAVE_FMOD 1/
 /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/
-/^#undef HAVE_ATTRIBUTE_ALIGNED *$/s/^.*$/#define HAVE_ATTRIBUTE_ALIGNED 1/
 /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/
 /^#undef HAVE_CBRT *$/s/^.*$/#define HAVE_CBRT 1/
 /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/
@@ -119,4 +118,3 @@
 # might be defined in sys/config.h we include at the top of config.h.
 /^#undef BSTRING/s|#undef|# undef|
 /^#undef .*$/s|^.*$|/* & */|
-

=== modified file 'msdos/sedlibmk.inp'
--- msdos/sedlibmk.inp	2011-09-29 12:00:18 +0000
+++ msdos/sedlibmk.inp	2011-10-17 01:22:19 +0000
@@ -27,7 +27,7 @@
 #    otherwise edit them to zero:
 #
 #     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-# 
+#
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #    Examples:
@@ -547,6 +547,7 @@
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^STDBOOL_H *=/s/@[^@\n]*@//
+/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@@ -600,6 +601,8 @@
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_FALSE@//
+s/^@GL_GENERATE_STDALIGN_H_TRUE@//
+s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
 s/^@GL_GENERATE_STDARG_H_TRUE@/\#/
 s/^@GL_GENERATE_STDARG_H_FALSE@/\#/
 s/^@GL_GENERATE_STDDEF_H_TRUE@/\#/

=== modified file 'nt/ChangeLog'
--- nt/ChangeLog	2011-09-04 21:52:59 +0000
+++ nt/ChangeLog	2011-10-17 01:22:19 +0000
@@ -1,3 +1,8 @@
+2011-10-17  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module.
+	* config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
+
 2011-09-04  Paul Eggert  <eggert <at> cs.ucla.edu>
 
 	* config.nt (HAVE_SNPRINTF): New macro.

=== modified file 'nt/config.nt'
--- nt/config.nt	2011-09-26 03:20:03 +0000
+++ nt/config.nt	2011-10-17 01:22:19 +0000
@@ -271,13 +271,6 @@
 
 /* Preprocessor macros needed for gnulib imports.  */
 
-/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
-#ifdef __GNUC__
-#define HAVE_ATTRIBUTE_ALIGNED 1
-#else
-#undef HAVE_ATTRIBUTE_ALIGNED
-#endif
-
 /* Define to 1 if strtold conforms to C99. */
 #ifdef __GNUC__
 #define HAVE_C99_STRTOLD 1

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-10-15 10:12:00 +0000
+++ src/ChangeLog	2011-10-17 01:22:19 +0000
@@ -1,3 +1,12 @@
+2011-10-17  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module.
+	* alloc.c (XMALLOC_BASE_ALIGNMENT, GC_LISP_OBJECT_ALIGNMENT)
+	(GC_POINTER_ALIGNMENT, pure_alloc): Simplify by using alignof.
+	(pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
+	* lisp.h: Include <stdalign.h>.
+	(DECL_ALIGN): Simplify by using alignas.
+
 2011-10-15  Martin Rudalics  <rudalics <at> gmx.at>
 
 	* window.c (coordinates_in_window): Rewrite and delabelize

=== modified file 'src/alloc.c'
--- src/alloc.c	2011-10-12 06:09:40 +0000
+++ src/alloc.c	2011-10-17 01:22:19 +0000
@@ -507,12 +507,7 @@
    hold a size_t value and (2) the header size is a multiple of the
    alignment that Emacs needs for C types and for USE_LSB_TAG.  */
 #define XMALLOC_BASE_ALIGNMENT				\
-  offsetof (						\
-    struct {						\
-      union { long double d; intmax_t i; void *p; } u;	\
-      char c;						\
-    },							\
-    c)
+  alignof (union { long double d; intmax_t i; void *p; })
 #ifdef USE_LSB_TAG
 /* A common multiple of the positive integers A and B.  Ideally this
    would be the least common multiple, but there's no way to do that
@@ -4235,15 +4230,15 @@
 }
 
 
-/* Alignment of Lisp_Object and pointer values.  Use offsetof, as it
+/* Alignment of Lisp_Object and pointer values.  Use alignof, as it
    sometimes returns a smaller alignment than GCC's __alignof__ and
    mark_memory might miss objects if __alignof__ were used.  For
    example, on x86 with WIDE_EMACS_INT, __alignof__ (Lisp_Object) is 8
    but GC_LISP_OBJECT_ALIGNMENT should be 4.  */
 #ifndef GC_LISP_OBJECT_ALIGNMENT
-# define GC_LISP_OBJECT_ALIGNMENT offsetof (struct {char a; Lisp_Object b;}, b)
+# define GC_LISP_OBJECT_ALIGNMENT alignof (Lisp_Object)
 #endif
-#define GC_POINTER_ALIGNMENT offsetof (struct {char a; void *b;}, b)
+#define GC_POINTER_ALIGNMENT alignof (void *)
 
 /* Mark Lisp objects referenced from the address range START+OFFSET..END
    or END+OFFSET..START. */
@@ -4662,17 +4657,11 @@
 #ifdef USE_LSB_TAG
   size_t alignment = (1 << GCTYPEBITS);
 #else
-  size_t alignment = sizeof (EMACS_INT);
+  size_t alignment = alignof (EMACS_INT);
 
   /* Give Lisp_Floats an extra alignment.  */
   if (type == Lisp_Float)
-    {
-#if defined __GNUC__ && __GNUC__ >= 2
-      alignment = __alignof (struct Lisp_Float);
-#else
-      alignment = sizeof (struct Lisp_Float);
-#endif
-    }
+    alignment = alignof (struct Lisp_Float);
 #endif
 
  again:

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-10-11 17:35:16 +0000
+++ src/lisp.h	2011-10-17 01:22:19 +0000
@@ -20,6 +20,7 @@
 #ifndef EMACS_LISP_H
 #define EMACS_LISP_H
 
+#include <stdalign.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <inttypes.h>
@@ -163,15 +164,8 @@
 /* First, try and define DECL_ALIGN(type,var) which declares a static
    variable VAR of type TYPE with the added requirement that it be
    TYPEBITS-aligned. */
-#ifndef NO_DECL_ALIGN
-# ifndef DECL_ALIGN
-#  if HAVE_ATTRIBUTE_ALIGNED
-#   define DECL_ALIGN(type, var) \
-     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-#  else
-     /* What directives do other compilers use?  */
-#  endif
-# endif
+#ifdef alignas
+# define DECL_ALIGN(type, var) type alignas (1 << GCTYPEBITS) var
 #endif
 
 /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8.  */




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 04:06:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Mon, 17 Oct 2011 06:04:57 +0200
> Date: Sun, 16 Oct 2011 20:24:31 -0700
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> CC: Eli Zaretskii <eliz <at> gnu.org>
> 
> Here's a patch to the Emacs trunk (bzr 106094) to cause it to use
> <stdalign.h> if available, falling back on a Gnulib replacement
> otherwise.  This simplifies Emacs proper, and should future-proof it
> for C1X compilers.

Do we need to install this before the release?  What bug(s) does it
fix?

> Although this patch is mostly just a cleanup patch for GNU and POSIX
> platforms, it may improve performance on some Microsoft hosts, as it
> contains code for supporting <stdalign.h> under MSVC.  As far as I can
> see, USE_LSB_TAG currently doesn't work with MSVC, so if this patch
> works it should increase the maximum Emacs buffer size in that
> environment.

The MSVC build is currently partially broken.  A user submitted
patches a few months ago, but they are not yet installed; they need
some work before they can be.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 05:20:01 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Sun, 16 Oct 2011 22:18:40 -0700
On 10/16/11 21:04, Eli Zaretskii wrote:
> Do we need to install this before the release?  What bug(s) does it
> fix?

This patch is a cleaner fix for the garbage-collector
core dump that I fixed on 2011-10-07 with bzr 106013.
The fix in 106013 is a bit hacky, and it would be nice
to have a cleaner fix for it, but it's not essential,
particularly now that I know that the MSVC build is
partly broken anyway.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 13:24:01 GMT) Full text and rfc822 format available.

Message #14 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 9772 <at> debbugs.gnu.org
Subject: Re: bug#9772: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Mon, 17 Oct 2011 09:22:44 -0400
> Here's a patch to the Emacs trunk (bzr 106094) to cause it to use
> <stdalign.h> if available, falling back on a Gnulib replacement
> otherwise.  This simplifies Emacs proper, and should future-proof it
> for C1X compilers.

I like this change, but I hope we can postpone it to after Emacs-24.1.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 14:04:01 GMT) Full text and rfc822 format available.

Message #17 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: eggert <at> cs.ucla.edu, 9772 <at> debbugs.gnu.org
Subject: Re: bug#9772: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Mon, 17 Oct 2011 10:02:59 -0400
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Date: Mon, 17 Oct 2011 09:22:44 -0400
> Cc: 9772 <at> debbugs.gnu.org
> 
> > Here's a patch to the Emacs trunk (bzr 106094) to cause it to use
> > <stdalign.h> if available, falling back on a Gnulib replacement
> > otherwise.  This simplifies Emacs proper, and should future-proof it
> > for C1X compilers.
> 
> I like this change

Agreed.  If my response sounded as if I didn't like it, I'm sorry for
the confusion.

> but I hope we can postpone it to after Emacs-24.1.

If the only reason is to make the Windows and DOS ports cleaner, then
I'd definitely suggest to postpone.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Mon, 17 Oct 2011 17:48:01 GMT) Full text and rfc822 format available.

Message #20 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 9772 <at> debbugs.gnu.org
Subject: Re: bug#9772: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Mon, 17 Oct 2011 10:46:09 -0700
On 10/17/11 07:02, Eli Zaretskii wrote:
>> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
>> but I hope we can postpone it to after Emacs-24.1.
> 
> If the only reason is to make the Windows and DOS ports cleaner, then
> I'd definitely suggest to postpone.

Yes, that makes sense for now.

There may be an issue before 24.1 comes out.  If Gnulib is later updated,
with a fix that Emacs needs before 24.1, and we then merge from the
updated Gnulib, the merge will contain code that assumes <stdalign.h>.
We'd need to either merge the Gnulib part of the postponed patch,
or edit the Gnulib code by hand after importing it, to undo its
assumption of <stdalign.h>.

We can cross this bridge if we come to it, which I hope we don't....




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Thu, 27 Oct 2011 20:22:01 GMT) Full text and rfc822 format available.

Message #23 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 9772 <at> debbugs.gnu.org
Subject: stdalign status report
Date: Thu, 27 Oct 2011 13:19:47 -0700
I merged the latest gnulib with the latest Emacs and came up with the
following revised patch.  I don't plan to install this now; I'm just
emailing this as a status report in case I get hit by a bus or something.

From the Windows point of view I expect that the only thing that's changed
is that config.bat got simpler this time around.

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: eggert <at> cs.ucla.edu-20111027195126-qw6zih99i6st851q
# target_branch: bzr+ssh://eggert <at> bzr.savannah.gnu.org/emacs/trunk
# testament_sha1: 1f0df71b36800072c576416777f6b87d893824c0
# timestamp: 2011-10-27 13:16:35 -0700
# base_revision_id: rgm <at> gnu.org-20111027193835-trn7s0m73juujpuv
# 
# Begin patch
=== modified file '.bzrignore'
--- .bzrignore	2011-09-29 14:19:11 +0000
+++ .bzrignore	2011-10-17 01:22:19 +0000
@@ -53,6 +53,7 @@
 lib/c++defs.h
 lib/getopt.h
 lib/inttypes.h
+lib/stdalign.h
 lib/stdbool.h
 lib/stdio.h
 lib/stdint.h

=== modified file 'ChangeLog'
--- ChangeLog	2011-10-25 16:41:26 +0000
+++ ChangeLog	2011-10-27 19:51:26 +0000
@@ -1,3 +1,20 @@
+2011-10-27  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772).
+	This should improve portability of macros like alignof and DECL_ALIGN.
+	* lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
+	* .bzrignore: Add lib/stdalign.h.
+	* Makefile.in (GNULIB_MODULES): Add stdalign.
+	* config.bat: Do not set NO_DECL_ALIGN; no longer needed.
+	Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
+	* configure.in (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
+	fiddles with this, as gnulib now does this for us.
+	* lib/gnulib.mk, lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+	* m4/gl-comp.m4, m4/pthread_sigmask.m4: Merge from gnulib.
+
+	* doc/misc/texinfo.tex, lib/gettext.h, lib/gnulib.mk, lib/stdlib.in.h:
+	* m4/include_next.m4, m4/stdlib_h.m4: Merge from gnulib.
+
 2011-10-25  Nali Toja  <nalitoja <at> gmail.com>  (tiny change)
 
 	* configure.in (HAVE_GNU_MAKE): Respect MAKE env-var.  (Bug#9868)

=== modified file 'Makefile.in'
--- Makefile.in	2011-09-26 21:30:18 +0000
+++ Makefile.in	2011-10-17 01:22:19 +0000
@@ -337,7 +337,7 @@
   dup2 \
   filemode getloadavg getopt-gnu ignore-value intprops lstat \
   mktime pthread_sigmask readlink \
-  socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+  socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 GNULIB_TOOL_FLAGS = \
  --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax \
  --avoid=raise --avoid=threadlib \

=== modified file 'config.bat'
--- config.bat	2011-09-29 12:08:36 +0000
+++ config.bat	2011-10-27 19:39:30 +0000
@@ -161,22 +161,6 @@
 sed -f ../msdos/sed2x.inp < ..\autogen\config.in > config.tmp

 :src4

 sed -f ../msdos/sed2v2.inp <config.tmp >config.h2

-Rem See if DECL_ALIGN can be supported with this GCC

-rm -f junk.c junk.o junk junk.exe

-echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c

-rem Two percent signs because it is a special character for COMMAND.COM/CMD

-rem Filter thru Sed because "&" is special for CMD.EXE

-echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/"         >>junk.c

-gcc -o junk junk.c

-if not exist junk.exe coff2exe junk

-junk

-If Not ErrorLevel 1 Goto alignOk

-Echo WARNING: Your GCC does not support 8-byte aligned variables.

-Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.

-rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG

-rem For details see lisp.h where it defines USE_LSB_TAG

-echo #define NO_DECL_ALIGN >>config.h2

-:alignOk

 Rem See if they have libxml2 later than v2.2.0 installed

 Echo Checking whether libxml2 v2.2.1 or later is installed ...

 rm -f junk.c junk.o junk junk.exe

@@ -281,6 +265,7 @@
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h

 If Exist alloca.in.h update alloca.in.h alloca.in-h

 If Exist getopt.in.h update getopt.in.h getopt.in-h

+If Exist stdalign.in.h update stdalign.in.h stdalign.in-h

 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h

 If Exist signal.in.h update signal.in.h signal.in-h

 If Exist stddef.in.h update stddef.in.h  stddef.in-h

@@ -343,4 +328,3 @@
 set djgpp_ver=

 set sys_malloc=

 set libxml=

-


=== modified file 'configure.in'
--- configure.in	2011-10-25 20:46:31 +0000
+++ configure.in	2011-10-27 18:27:17 +0000
@@ -1351,19 +1351,6 @@
 dnl Check for endianess
 AC_C_BIGENDIAN
 
-AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
-  [emacs_cv_attribute_aligned],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM(
-	[[char __attribute__ ((__aligned__ (1 << 3))) c;]],
-	[[]])],
-     [emacs_cv_attribute_aligned=yes],
-     [emacs_cv_attribute_aligned=no])])
-if test $emacs_cv_attribute_aligned = yes; then
-  AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
-    [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
-fi
-
 dnl check for Make feature
 AC_PROG_MAKE_SET
 

=== modified file 'doc/misc/texinfo.tex'
--- doc/misc/texinfo.tex	2011-09-26 21:30:18 +0000
+++ doc/misc/texinfo.tex	2011-10-27 19:51:26 +0000
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2011-09-23.09}
+\def\texinfoversion{2011-10-19.08}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -2372,7 +2372,9 @@
   \else\ifx\next-%
   \else\ifx\next.%
   \else\ptexslash
-  \fi\fi\fi}
+  \fi\fi\fi
+  \aftersmartic
+}
 
 % like \smartslanted except unconditionally uses \ttsl, and no ic.
 % @var is set to this for defun arguments.
@@ -2382,9 +2384,15 @@
 % ttsl for book titles, do we?
 \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2480,7 +2488,7 @@
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2762,6 +2770,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2774,6 +2783,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -8103,7 +8113,7 @@
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -8166,6 +8176,8 @@
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo <at> t
 }
 }%end \catcode `\@=11

=== modified file 'lib/gettext.h'
--- lib/gettext.h	2011-02-15 04:53:29 +0000
+++ lib/gettext.h	2011-10-27 19:51:26 +0000
@@ -185,7 +185,7 @@
 #include <string.h>
 
 #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
    /* || __STDC_VERSION__ >= 199901L */ )
 
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS

=== modified file 'lib/gnulib.mk'
--- lib/gnulib.mk	2011-09-26 21:30:18 +0000
+++ lib/gnulib.mk	2011-10-27 19:51:26 +0000
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -421,6 +421,29 @@
 
 ## end   gnulib module stat
 
+## begin gnulib module stdalign
+
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  cat $(srcdir)/stdalign.in.h; \
+	} > $@-t && \
+	mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+	rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+EXTRA_DIST += stdalign.in.h
+
+## end   gnulib module stdalign
+
 ## begin gnulib module stdarg
 
 BUILT_SOURCES += $(STDARG_H)
@@ -710,6 +733,7 @@
 	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
 	      -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
 	      -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
 	      -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
 	      -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
 	      -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
@@ -736,6 +760,7 @@
 	      -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
 	      -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
 	      -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+	      -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
 	      -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
 	      -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
 	      -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \

=== modified file 'lib/md5.c'
--- lib/md5.c	2011-02-19 07:28:29 +0000
+++ lib/md5.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "md5.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -254,8 +255,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha1.c'
--- lib/sha1.c	2011-05-24 08:12:52 +0000
+++ lib/sha1.c	2011-10-17 01:22:19 +0000
@@ -26,7 +26,8 @@
 
 #include "sha1.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -241,8 +242,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha256.c'
--- lib/sha256.c	2011-06-21 08:45:39 +0000
+++ lib/sha256.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha256.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -373,8 +374,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha512.c'
--- lib/sha512.c	2011-06-21 08:45:39 +0000
+++ lib/sha512.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha512.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -381,8 +382,7 @@
   if (len >= 128)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 128)
           {

=== added file 'lib/stdalign.in.h'
--- lib/stdalign.in.h	1970-01-01 00:00:00 +0000
+++ lib/stdalign.in.h	2011-10-27 19:39:30 +0000
@@ -0,0 +1,85 @@
+/* A substitute for ISO C 1x <stdalign.h>.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Paul Eggert and Bruno Haible.  */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+   References:
+   ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+   sections 6.5.3.4, 6.7.5, 7.15.
+   C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+   section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+   requirement of a structure member (i.e., slot or field) that is of
+   type TYPE, as an integer constant expression.
+
+   This differs from GCC's __alignof__ operator, which can yield a
+   better-performing alignment for an object of that type.  For
+   example, on x86 with GCC, __alignof__ (double) and __alignof__
+   (long long) are 8, whereas alignof (double) and alignof (long long)
+   are 4 unless the option '-malign-double' is used.
+
+   The result cannot be used as a value for an 'enum' constant, if you
+   want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
+#include <stddef.h>
+#if defined __cplusplus
+   template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+   to the alignment A, where A is an integer constant expression.  For
+   example:
+
+      int alignas (8) foo;
+      struct s { int a; int alignas (8) bar; };
+
+   aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+   A should be a power of two that is at least the type's alignment
+   and at most the implementation's alignment limit.  This limit is
+   2**28 on typical GNUish hosts, and 2**13 on MSVC.
+
+   The following draft C1X requirements are not supported here:
+
+     - If A is zero, alignas has no effect.
+     - alignas can be used multiple times; the strictest one wins.
+     - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+   */
+
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec ((align (a)))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */

=== modified file 'lib/stdlib.in.h'
--- lib/stdlib.in.h	2011-07-24 22:15:47 +0000
+++ lib/stdlib.in.h	2011-10-27 19:51:26 +0000
@@ -423,6 +423,22 @@
 # endif
 #endif
 
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal.  Flags should
+   include O_RDWR, and may also include O_NOCTTY.  */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+                 "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
 #if @GNULIB_PTSNAME@
 /* Return the pathname of the pseudo-terminal slave associated with
    the master FD is open on, or NULL on errors.  */

=== modified file 'm4/gl-comp.m4'
--- m4/gl-comp.m4	2011-10-07 21:15:00 +0000
+++ m4/gl-comp.m4	2011-10-17 01:22:19 +0000
@@ -76,6 +76,7 @@
   # Code from module socklen:
   # Code from module ssize_t:
   # Code from module stat:
+  # Code from module stdalign:
   # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
@@ -180,6 +181,7 @@
 gl_SIGNAL_H
 gl_TYPE_SOCKLEN_T
 gt_TYPE_SSIZE_T
+gl_STDALIGN_H
 gl_STDARG_H
 AM_STDBOOL_H
 gl_STDDEF_H
@@ -311,18 +313,18 @@
   if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
     func_gl_gnulib_m4code_stat
   fi
-  if test $ac_cv_func_strtoimax = no; then
-    func_gl_gnulib_m4code_verify
-  fi
   if test $ac_cv_func_strtoimax = no && test $ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
-  if test $ac_cv_func_strtoumax = no; then
+  if test $ac_cv_func_strtoimax = no; then
     func_gl_gnulib_m4code_verify
   fi
   if test $ac_cv_func_strtoumax = no && test $ac_cv_type_unsigned_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoull
   fi
+  if test $ac_cv_func_strtoumax = no; then
+    func_gl_gnulib_m4code_verify
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
@@ -513,6 +515,7 @@
   lib/signal.in.h
   lib/sigprocmask.c
   lib/stat.c
+  lib/stdalign.in.h
   lib/stdarg.in.h
   lib/stdbool.in.h
   lib/stddef.in.h
@@ -563,6 +566,7 @@
   m4/ssize_t.m4
   m4/st_dm_mode.m4
   m4/stat.m4
+  m4/stdalign.m4
   m4/stdarg.m4
   m4/stdbool.m4
   m4/stddef_h.m4

=== modified file 'm4/include_next.m4'
--- m4/include_next.m4	2011-09-26 21:30:18 +0000
+++ m4/include_next.m4	2011-10-27 19:51:26 +0000
@@ -1,4 +1,4 @@
-# include_next.m4 serial 22
+# include_next.m4 serial 23
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -219,12 +219,17 @@
                    gl_dirsep_regex='[/\\]'
                    ;;
                  *)
-                   gl_dirsep_regex='/'
+                   gl_dirsep_regex='\/'
                    ;;
                esac
+               dnl A sed expression that turns a string into a basic regular
+               dnl expression, for use within "/.../".
+               gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
 changequote([,])
-               gl_absolute_header_sed='\|'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[|{
-                   s|.*"\(.*'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[\)".*|\1|
+               gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+                                        | sed -e "$gl_make_literal_regex_sed"`
+               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
 changequote(,)dnl
                    s|^/[^/]|//&|
 changequote([,])dnl

=== modified file 'm4/pthread_sigmask.m4'
--- m4/pthread_sigmask.m4	2011-09-03 23:08:32 +0000
+++ m4/pthread_sigmask.m4	2011-10-17 01:22:19 +0000
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,6 +6,8 @@
 
 AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
 [
+  AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
   AC_CHECK_FUNCS_ONCE([pthread_sigmask])
   LIB_PTHREAD_SIGMASK=
 

=== added file 'm4/stdalign.m4'
--- m4/stdalign.m4	1970-01-01 00:00:00 +0000
+++ m4/stdalign.m4	2011-10-27 19:39:30 +0000
@@ -0,0 +1,22 @@
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+  AC_CHECK_HEADERS_ONCE([stdalign.h])
+
+  if test $ac_cv_header_stdalign_h = yes; then
+    STDALIGN_H=''
+  else
+    STDALIGN_H='stdalign.h'
+  fi
+
+  AC_SUBST([STDALIGN_H])
+  AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])

=== modified file 'm4/stdlib_h.m4'
--- m4/stdlib_h.m4	2011-02-25 07:36:37 +0000
+++ m4/stdlib_h.m4	2011-10-27 19:51:26 +0000
@@ -19,10 +19,10 @@
 #if HAVE_RANDOM_H
 # include <random.h>
 #endif
-    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
-    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
-    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
-    unsetenv])
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+    initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt
+    ptsname random_r realpath rpmatch setenv setstate_r srandom_r strtod
+    strtoll strtoull unlockpt unsetenv])
 ])
 
 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
@@ -50,6 +50,7 @@
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
   GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
@@ -76,6 +77,7 @@
   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])

=== modified file 'msdos/ChangeLog'
--- msdos/ChangeLog	2011-09-29 12:00:18 +0000
+++ msdos/ChangeLog	2011-10-27 19:39:30 +0000
@@ -1,3 +1,10 @@
+2011-10-27  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772).
+	* sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
+	* sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
+	(GL_GENERATE_STDALIGN_H_FALSE): New edits.
+
 2011-09-29  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* mainmake.v2 (boot): Condition the value on the existence of

=== modified file 'msdos/sed2v2.inp'
--- msdos/sed2v2.inp	2011-09-29 12:00:18 +0000
+++ msdos/sed2v2.inp	2011-10-17 01:22:19 +0000
@@ -35,7 +35,6 @@
 /^#undef HAVE_FREXP *$/s/^.*$/#define HAVE_FREXP 1/
 /^#undef HAVE_FMOD *$/s/^.*$/#define HAVE_FMOD 1/
 /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/
-/^#undef HAVE_ATTRIBUTE_ALIGNED *$/s/^.*$/#define HAVE_ATTRIBUTE_ALIGNED 1/
 /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/
 /^#undef HAVE_CBRT *$/s/^.*$/#define HAVE_CBRT 1/
 /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/
@@ -119,4 +118,3 @@
 # might be defined in sys/config.h we include at the top of config.h.
 /^#undef BSTRING/s|#undef|# undef|
 /^#undef .*$/s|^.*$|/* & */|
-

=== modified file 'msdos/sedlibmk.inp'
--- msdos/sedlibmk.inp	2011-09-29 12:00:18 +0000
+++ msdos/sedlibmk.inp	2011-10-17 01:22:19 +0000
@@ -27,7 +27,7 @@
 #    otherwise edit them to zero:
 #
 #     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-# 
+#
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #    Examples:
@@ -547,6 +547,7 @@
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^STDBOOL_H *=/s/@[^@\n]*@//
+/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@@ -600,6 +601,8 @@
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_FALSE@//
+s/^@GL_GENERATE_STDALIGN_H_TRUE@//
+s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
 s/^@GL_GENERATE_STDARG_H_TRUE@/\#/
 s/^@GL_GENERATE_STDARG_H_FALSE@/\#/
 s/^@GL_GENERATE_STDDEF_H_TRUE@/\#/

=== modified file 'nt/ChangeLog'
--- nt/ChangeLog	2011-10-25 16:54:19 +0000
+++ nt/ChangeLog	2011-10-27 18:27:17 +0000
@@ -1,3 +1,8 @@
+2011-10-27  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772).
+	* config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
+
 2011-10-25  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* makefile.w32-in (dist): Don't put the top-level INSTALL into the

=== modified file 'nt/config.nt'
--- nt/config.nt	2011-10-22 09:17:01 +0000
+++ nt/config.nt	2011-10-27 18:27:17 +0000
@@ -278,13 +278,6 @@
 
 /* Preprocessor macros needed for gnulib imports.  */
 
-/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
-#ifdef __GNUC__
-#define HAVE_ATTRIBUTE_ALIGNED 1
-#else
-#undef HAVE_ATTRIBUTE_ALIGNED
-#endif
-
 /* Define to 1 if strtold conforms to C99. */
 #ifdef __GNUC__
 #define HAVE_C99_STRTOLD 1

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-10-27 14:35:51 +0000
+++ src/ChangeLog	2011-10-27 18:27:17 +0000
@@ -1,3 +1,12 @@
+2011-10-27  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772).
+	* alloc.c (XMALLOC_BASE_ALIGNMENT, GC_LISP_OBJECT_ALIGNMENT)
+	(GC_POINTER_ALIGNMENT, pure_alloc): Simplify by using alignof.
+	(pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
+	* lisp.h: Include <stdalign.h>.
+	(DECL_ALIGN): Simplify by using alignas.
+
 2011-10-27  Juanma Barranquero  <lekktu <at> gmail.com>
 
 	* window.c (Fframe_root_window, Fframe_first_window, Fwindow_end)

=== modified file 'src/alloc.c'
--- src/alloc.c	2011-10-12 06:09:40 +0000
+++ src/alloc.c	2011-10-17 01:22:19 +0000
@@ -507,12 +507,7 @@
    hold a size_t value and (2) the header size is a multiple of the
    alignment that Emacs needs for C types and for USE_LSB_TAG.  */
 #define XMALLOC_BASE_ALIGNMENT				\
-  offsetof (						\
-    struct {						\
-      union { long double d; intmax_t i; void *p; } u;	\
-      char c;						\
-    },							\
-    c)
+  alignof (union { long double d; intmax_t i; void *p; })
 #ifdef USE_LSB_TAG
 /* A common multiple of the positive integers A and B.  Ideally this
    would be the least common multiple, but there's no way to do that
@@ -4235,15 +4230,15 @@
 }
 
 
-/* Alignment of Lisp_Object and pointer values.  Use offsetof, as it
+/* Alignment of Lisp_Object and pointer values.  Use alignof, as it
    sometimes returns a smaller alignment than GCC's __alignof__ and
    mark_memory might miss objects if __alignof__ were used.  For
    example, on x86 with WIDE_EMACS_INT, __alignof__ (Lisp_Object) is 8
    but GC_LISP_OBJECT_ALIGNMENT should be 4.  */
 #ifndef GC_LISP_OBJECT_ALIGNMENT
-# define GC_LISP_OBJECT_ALIGNMENT offsetof (struct {char a; Lisp_Object b;}, b)
+# define GC_LISP_OBJECT_ALIGNMENT alignof (Lisp_Object)
 #endif
-#define GC_POINTER_ALIGNMENT offsetof (struct {char a; void *b;}, b)
+#define GC_POINTER_ALIGNMENT alignof (void *)
 
 /* Mark Lisp objects referenced from the address range START+OFFSET..END
    or END+OFFSET..START. */
@@ -4662,17 +4657,11 @@
 #ifdef USE_LSB_TAG
   size_t alignment = (1 << GCTYPEBITS);
 #else
-  size_t alignment = sizeof (EMACS_INT);
+  size_t alignment = alignof (EMACS_INT);
 
   /* Give Lisp_Floats an extra alignment.  */
   if (type == Lisp_Float)
-    {
-#if defined __GNUC__ && __GNUC__ >= 2
-      alignment = __alignof (struct Lisp_Float);
-#else
-      alignment = sizeof (struct Lisp_Float);
-#endif
-    }
+    alignment = alignof (struct Lisp_Float);
 #endif
 
  again:

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-10-11 17:35:16 +0000
+++ src/lisp.h	2011-10-17 01:22:19 +0000
@@ -20,6 +20,7 @@
 #ifndef EMACS_LISP_H
 #define EMACS_LISP_H
 
+#include <stdalign.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <inttypes.h>
@@ -163,15 +164,8 @@
 /* First, try and define DECL_ALIGN(type,var) which declares a static
    variable VAR of type TYPE with the added requirement that it be
    TYPEBITS-aligned. */
-#ifndef NO_DECL_ALIGN
-# ifndef DECL_ALIGN
-#  if HAVE_ATTRIBUTE_ALIGNED
-#   define DECL_ALIGN(type, var) \
-     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-#  else
-     /* What directives do other compilers use?  */
-#  endif
-# endif
+#ifdef alignas
+# define DECL_ALIGN(type, var) type alignas (1 << GCTYPEBITS) var
 #endif
 
 /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8.  */




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 08 Nov 2011 06:14:02 GMT) Full text and rfc822 format available.

Message #26 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 9772 <at> debbugs.gnu.org, 9660 <at> debbugs.gnu.org
Subject: fix for Bug#9772 should also help fix Bug#9660
Date: Mon, 07 Nov 2011 22:09:48 -0800
It appears that the patch for Bug#9772 would also help fix one of the
problems with the MSVC port (Bug#9660), as it solves the problem of
DECL_ALIGN in a portable way.  So I updated the Bug#9772 patch to
reflect the latest GNU Emacs trunk (bzr 106319) and am resending it
below.



# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: eggert <at> cs.ucla.edu-20111108050351-8pi1asjihs20t0ki
# target_branch: bzr+ssh://eggert <at> bzr.savannah.gnu.org/emacs/trunk
# testament_sha1: f4cd0307b11c4a1d34ef6fc7efc489d034586917
# timestamp: 2011-11-07 21:07:24 -0800
# base_revision_id: monnier <at> iro.umontreal.ca-20111108025759-\
#   d5u0ag4hdie27lcz
# 
# Begin patch
=== modified file '.bzrignore'
--- .bzrignore	2011-09-29 14:19:11 +0000
+++ .bzrignore	2011-10-17 01:22:19 +0000
@@ -53,6 +53,7 @@
 lib/c++defs.h
 lib/getopt.h
 lib/inttypes.h
+lib/stdalign.h
 lib/stdbool.h
 lib/stdio.h
 lib/stdint.h

=== modified file 'ChangeLog'
--- ChangeLog	2011-11-05 11:34:56 +0000
+++ ChangeLog	2011-11-08 01:07:18 +0000
@@ -1,3 +1,20 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9960).
+	This should improve portability of macros like alignof and DECL_ALIGN.
+	* lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
+	* .bzrignore: Add lib/stdalign.h.
+	* Makefile.in (GNULIB_MODULES): Add stdalign.
+	* config.bat: Do not set NO_DECL_ALIGN; no longer needed.
+	Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
+	* configure.in (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
+	fiddles with this, as gnulib now does this for us.
+	* lib/gnulib.mk, lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+	* m4/gl-comp.m4, m4/pthread_sigmask.m4: Merge from gnulib.
+
+	* doc/misc/texinfo.tex, lib/gettext.h, lib/gnulib.mk, lib/stdlib.in.h:
+	* m4/include_next.m4, m4/stdlib_h.m4: Merge from gnulib.
+
 2011-11-05  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* lib/makefile.w32-in (FRC): New dummy target.

=== modified file 'Makefile.in'
--- Makefile.in	2011-09-26 21:30:18 +0000
+++ Makefile.in	2011-10-17 01:22:19 +0000
@@ -337,7 +337,7 @@
   dup2 \
   filemode getloadavg getopt-gnu ignore-value intprops lstat \
   mktime pthread_sigmask readlink \
-  socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+  socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 GNULIB_TOOL_FLAGS = \
  --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax \
  --avoid=raise --avoid=threadlib \

=== modified file 'config.bat'
--- config.bat	2011-10-31 17:49:10 +0000
+++ config.bat	2011-11-01 05:03:56 +0000
@@ -163,22 +163,6 @@
 if exist ..\autogen\config.in sed -f ../msdos/sed2x.inp < ..\autogen\config.in > config.tmp

 :src4

 sed -f ../msdos/sed2v2.inp <config.tmp >config.h2

-Rem See if DECL_ALIGN can be supported with this GCC

-rm -f junk.c junk.o junk junk.exe

-echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c

-rem Two percent signs because it is a special character for COMMAND.COM/CMD

-rem Filter thru Sed because "&" is special for CMD.EXE

-echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/"         >>junk.c

-gcc -o junk junk.c

-if not exist junk.exe coff2exe junk

-junk

-If Not ErrorLevel 1 Goto alignOk

-Echo WARNING: Your GCC does not support 8-byte aligned variables.

-Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.

-rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG

-rem For details see lisp.h where it defines USE_LSB_TAG

-echo #define NO_DECL_ALIGN >>config.h2

-:alignOk

 Rem See if they have libxml2 later than v2.2.0 installed

 Echo Checking whether libxml2 v2.2.1 or later is installed ...

 rm -f junk.c junk.o junk junk.exe

@@ -283,6 +267,7 @@
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h

 If Exist alloca.in.h update alloca.in.h alloca.in-h

 If Exist getopt.in.h update getopt.in.h getopt.in-h

+If Exist stdalign.in.h update stdalign.in.h stdalign.in-h

 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h

 If Exist signal.in.h update signal.in.h signal.in-h

 If Exist stddef.in.h update stddef.in.h  stddef.in-h

@@ -346,4 +331,3 @@
 set djgpp_ver=

 set sys_malloc=

 set libxml=

-


=== modified file 'configure.in'
--- configure.in	2011-11-04 22:16:46 +0000
+++ configure.in	2011-11-07 05:59:29 +0000
@@ -1351,19 +1351,6 @@
 dnl Check for endianess
 AC_C_BIGENDIAN
 
-AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
-  [emacs_cv_attribute_aligned],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM(
-	[[char __attribute__ ((__aligned__ (1 << 3))) c;]],
-	[[]])],
-     [emacs_cv_attribute_aligned=yes],
-     [emacs_cv_attribute_aligned=no])])
-if test $emacs_cv_attribute_aligned = yes; then
-  AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
-    [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
-fi
-
 dnl check for Make feature
 AC_PROG_MAKE_SET
 

=== modified file 'doc/misc/ChangeLog'
--- doc/misc/ChangeLog	2011-11-01 19:22:57 +0000
+++ doc/misc/ChangeLog	2011-11-08 01:07:18 +0000
@@ -1,3 +1,7 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	* texinfo.tex: Merge from gnulib.
+
 2011-10-31  Katsumi Yamaoka  <yamaoka <at> jpl.org>
 
 	* gnus.texi (Other Gnus Versions): Remove.

=== modified file 'doc/misc/texinfo.tex'
--- doc/misc/texinfo.tex	2011-09-26 21:30:18 +0000
+++ doc/misc/texinfo.tex	2011-11-07 05:56:04 +0000
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2011-09-23.09}
+\def\texinfoversion{2011-11-06.09}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -116,6 +116,7 @@
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putwordfile{error}\fi
 \ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
 \ifx\putwordin\undefined        \gdef\putwordin{in}\fi
 \ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
@@ -1194,29 +1195,31 @@
     \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
     \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
     \let\pdfimgext=\empty
     \begingroup
-      \openin 1 #1.png \ifeof 1
-        \openin 1 #1.jpg \ifeof 1
-          \openin 1 #1.jpeg \ifeof 1
-            \openin 1 #1.JPG \ifeof 1
-              \openin 1 #1.pdf \ifeof 1
-                \openin 1 #1.PDF \ifeof 1
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
                   \errhelp = \nopdfimagehelp
                   \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
+                \else \gdef\pdfimgext{JPG}%
                 \fi
-              \else \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{jpeg}%
               \fi
-            \else \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{jpg}%
             \fi
-          \else \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{png}%
           \fi
-        \else \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{PDF}%
         \fi
-      \else \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{pdf}%
       \fi
       \closein 1
     \endgroup
@@ -2372,7 +2375,9 @@
   \else\ifx\next-%
   \else\ifx\next.%
   \else\ptexslash
-  \fi\fi\fi}
+  \fi\fi\fi
+  \aftersmartic
+}
 
 % like \smartslanted except unconditionally uses \ttsl, and no ic.
 % @var is set to this for defun arguments.
@@ -2382,9 +2387,15 @@
 % ttsl for book titles, do we?
 \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2480,7 +2491,7 @@
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2762,6 +2773,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2774,6 +2786,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -2979,7 +2992,7 @@
 {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -8103,7 +8116,7 @@
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -8166,6 +8179,8 @@
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo <at> t
 }
 }%end \catcode `\@=11

=== modified file 'lib/gettext.h'
--- lib/gettext.h	2011-02-15 04:53:29 +0000
+++ lib/gettext.h	2011-10-27 19:51:26 +0000
@@ -185,7 +185,7 @@
 #include <string.h>
 
 #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
    /* || __STDC_VERSION__ >= 199901L */ )
 
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS

=== modified file 'lib/gnulib.mk'
--- lib/gnulib.mk	2011-09-26 21:30:18 +0000
+++ lib/gnulib.mk	2011-10-27 19:51:26 +0000
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -421,6 +421,29 @@
 
 ## end   gnulib module stat
 
+## begin gnulib module stdalign
+
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  cat $(srcdir)/stdalign.in.h; \
+	} > $@-t && \
+	mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+	rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+EXTRA_DIST += stdalign.in.h
+
+## end   gnulib module stdalign
+
 ## begin gnulib module stdarg
 
 BUILT_SOURCES += $(STDARG_H)
@@ -710,6 +733,7 @@
 	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
 	      -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
 	      -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
 	      -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
 	      -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
 	      -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
@@ -736,6 +760,7 @@
 	      -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
 	      -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
 	      -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+	      -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
 	      -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
 	      -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
 	      -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \

=== modified file 'lib/md5.c'
--- lib/md5.c	2011-02-19 07:28:29 +0000
+++ lib/md5.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "md5.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -254,8 +255,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha1.c'
--- lib/sha1.c	2011-05-24 08:12:52 +0000
+++ lib/sha1.c	2011-10-17 01:22:19 +0000
@@ -26,7 +26,8 @@
 
 #include "sha1.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -241,8 +242,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha256.c'
--- lib/sha256.c	2011-06-21 08:45:39 +0000
+++ lib/sha256.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha256.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -373,8 +374,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha512.c'
--- lib/sha512.c	2011-06-21 08:45:39 +0000
+++ lib/sha512.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "sha512.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -381,8 +382,7 @@
   if (len >= 128)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 128)
           {

=== added file 'lib/stdalign.in.h'
--- lib/stdalign.in.h	1970-01-01 00:00:00 +0000
+++ lib/stdalign.in.h	2011-11-07 05:56:04 +0000
@@ -0,0 +1,89 @@
+/* A substitute for ISO C 1x <stdalign.h>.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Paul Eggert and Bruno Haible.  */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+   References:
+   ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+   sections 6.5.3.4, 6.7.5, 7.15.
+   C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+   section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+   requirement of a structure member (i.e., slot or field) that is of
+   type TYPE, as an integer constant expression.
+
+   This differs from GCC's __alignof__ operator, which can yield a
+   better-performing alignment for an object of that type.  For
+   example, on x86 with GCC, __alignof__ (double) and __alignof__
+   (long long) are 8, whereas alignof (double) and alignof (long long)
+   are 4 unless the option '-malign-double' is used.
+
+   The result cannot be used as a value for an 'enum' constant, if you
+   want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
+#include <stddef.h>
+#if defined __cplusplus
+   template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+   to the alignment A, where A is an integer constant expression.  For
+   example:
+
+      int alignas (8) foo;
+      struct s { int a; int alignas (8) bar; };
+
+   aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+   A should be a power of two that is at least the type's alignment
+   and at most the implementation's alignment limit.  This limit is
+   2**28 on typical GNUish hosts, and 2**13 on MSVC.  To be portable
+   to MSVC through at least version 10.0, A should be an integer
+   constant, as MSVC does not support expressions such as 1 << 3.
+   To be portable to Sun C 5.11, do not align auto variables to
+   anything stricter than their default alignment.
+
+   The following draft C1X requirements are not supported here:
+
+     - If A is zero, alignas has no effect.
+     - alignas can be used multiple times; the strictest one wins.
+     - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+   */
+
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec (align (a))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */

=== modified file 'lib/stdlib.in.h'
--- lib/stdlib.in.h	2011-07-24 22:15:47 +0000
+++ lib/stdlib.in.h	2011-11-08 01:12:08 +0000
@@ -247,7 +247,7 @@
 #elif defined GNULIB_POSIXCHECK
 # undef grantpt
 # if HAVE_RAW_DECL_GRANTPT
-_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
                  "use gnulib module grantpt for portability");
 # endif
 #endif
@@ -423,6 +423,22 @@
 # endif
 #endif
 
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal.  Flags should
+   include O_RDWR, and may also include O_NOCTTY.  */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+                 "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
 #if @GNULIB_PTSNAME@
 /* Return the pathname of the pseudo-terminal slave associated with
    the master FD is open on, or NULL on errors.  */

=== modified file 'm4/gl-comp.m4'
--- m4/gl-comp.m4	2011-10-07 21:15:00 +0000
+++ m4/gl-comp.m4	2011-10-17 01:22:19 +0000
@@ -76,6 +76,7 @@
   # Code from module socklen:
   # Code from module ssize_t:
   # Code from module stat:
+  # Code from module stdalign:
   # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
@@ -180,6 +181,7 @@
 gl_SIGNAL_H
 gl_TYPE_SOCKLEN_T
 gt_TYPE_SSIZE_T
+gl_STDALIGN_H
 gl_STDARG_H
 AM_STDBOOL_H
 gl_STDDEF_H
@@ -311,18 +313,18 @@
   if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
     func_gl_gnulib_m4code_stat
   fi
-  if test $ac_cv_func_strtoimax = no; then
-    func_gl_gnulib_m4code_verify
-  fi
   if test $ac_cv_func_strtoimax = no && test $ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
-  if test $ac_cv_func_strtoumax = no; then
+  if test $ac_cv_func_strtoimax = no; then
     func_gl_gnulib_m4code_verify
   fi
   if test $ac_cv_func_strtoumax = no && test $ac_cv_type_unsigned_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoull
   fi
+  if test $ac_cv_func_strtoumax = no; then
+    func_gl_gnulib_m4code_verify
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
@@ -513,6 +515,7 @@
   lib/signal.in.h
   lib/sigprocmask.c
   lib/stat.c
+  lib/stdalign.in.h
   lib/stdarg.in.h
   lib/stdbool.in.h
   lib/stddef.in.h
@@ -563,6 +566,7 @@
   m4/ssize_t.m4
   m4/st_dm_mode.m4
   m4/stat.m4
+  m4/stdalign.m4
   m4/stdarg.m4
   m4/stdbool.m4
   m4/stddef_h.m4

=== modified file 'm4/include_next.m4'
--- m4/include_next.m4	2011-09-26 21:30:18 +0000
+++ m4/include_next.m4	2011-10-27 19:51:26 +0000
@@ -1,4 +1,4 @@
-# include_next.m4 serial 22
+# include_next.m4 serial 23
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -219,12 +219,17 @@
                    gl_dirsep_regex='[/\\]'
                    ;;
                  *)
-                   gl_dirsep_regex='/'
+                   gl_dirsep_regex='\/'
                    ;;
                esac
+               dnl A sed expression that turns a string into a basic regular
+               dnl expression, for use within "/.../".
+               gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
 changequote([,])
-               gl_absolute_header_sed='\|'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[|{
-                   s|.*"\(.*'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[\)".*|\1|
+               gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+                                        | sed -e "$gl_make_literal_regex_sed"`
+               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
 changequote(,)dnl
                    s|^/[^/]|//&|
 changequote([,])dnl

=== modified file 'm4/pthread_sigmask.m4'
--- m4/pthread_sigmask.m4	2011-09-03 23:08:32 +0000
+++ m4/pthread_sigmask.m4	2011-10-17 01:22:19 +0000
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,6 +6,8 @@
 
 AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
 [
+  AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
   AC_CHECK_FUNCS_ONCE([pthread_sigmask])
   LIB_PTHREAD_SIGMASK=
 

=== added file 'm4/stdalign.m4'
--- m4/stdalign.m4	1970-01-01 00:00:00 +0000
+++ m4/stdalign.m4	2011-10-27 19:39:30 +0000
@@ -0,0 +1,22 @@
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+  AC_CHECK_HEADERS_ONCE([stdalign.h])
+
+  if test $ac_cv_header_stdalign_h = yes; then
+    STDALIGN_H=''
+  else
+    STDALIGN_H='stdalign.h'
+  fi
+
+  AC_SUBST([STDALIGN_H])
+  AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])

=== modified file 'm4/stdlib_h.m4'
--- m4/stdlib_h.m4	2011-02-25 07:36:37 +0000
+++ m4/stdlib_h.m4	2011-10-27 19:51:26 +0000
@@ -19,10 +19,10 @@
 #if HAVE_RANDOM_H
 # include <random.h>
 #endif
-    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
-    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
-    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
-    unsetenv])
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+    initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt
+    ptsname random_r realpath rpmatch setenv setstate_r srandom_r strtod
+    strtoll strtoull unlockpt unsetenv])
 ])
 
 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
@@ -50,6 +50,7 @@
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
   GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
@@ -76,6 +77,7 @@
   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])

=== modified file 'msdos/ChangeLog'
--- msdos/ChangeLog	2011-10-31 17:37:39 +0000
+++ msdos/ChangeLog	2011-11-08 01:07:18 +0000
@@ -1,3 +1,10 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9660).
+	* sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
+	* sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
+	(GL_GENERATE_STDALIGN_H_FALSE): New edits.
+
 2011-10-31  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* sed3v2.inp (insrcdir): Comment out definition.

=== modified file 'msdos/sed2v2.inp'
--- msdos/sed2v2.inp	2011-10-31 02:25:01 +0000
+++ msdos/sed2v2.inp	2011-11-01 05:03:56 +0000
@@ -35,7 +35,6 @@
 /^#undef HAVE_FREXP *$/s/^.*$/#define HAVE_FREXP 1/
 /^#undef HAVE_FMOD *$/s/^.*$/#define HAVE_FMOD 1/
 /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/
-/^#undef HAVE_ATTRIBUTE_ALIGNED *$/s/^.*$/#define HAVE_ATTRIBUTE_ALIGNED 1/
 /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/
 /^#undef HAVE_CBRT *$/s/^.*$/#define HAVE_CBRT 1/
 /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/
@@ -119,4 +118,3 @@
 # might be defined in sys/config.h we include at the top of config.h.
 /^#undef BSTRING/s|#undef|# undef|
 /^#undef .*$/s|^.*$|/* & */|
-

=== modified file 'msdos/sedlibmk.inp'
--- msdos/sedlibmk.inp	2011-09-29 12:00:18 +0000
+++ msdos/sedlibmk.inp	2011-10-17 01:22:19 +0000
@@ -27,7 +27,7 @@
 #    otherwise edit them to zero:
 #
 #     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-# 
+#
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #    Examples:
@@ -547,6 +547,7 @@
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^STDBOOL_H *=/s/@[^@\n]*@//
+/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@@ -600,6 +601,8 @@
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_FALSE@//
+s/^@GL_GENERATE_STDALIGN_H_TRUE@//
+s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
 s/^@GL_GENERATE_STDARG_H_TRUE@/\#/
 s/^@GL_GENERATE_STDARG_H_FALSE@/\#/
 s/^@GL_GENERATE_STDDEF_H_TRUE@/\#/

=== modified file 'nt/ChangeLog'
--- nt/ChangeLog	2011-11-05 22:33:44 +0000
+++ nt/ChangeLog	2011-11-08 01:07:18 +0000
@@ -1,3 +1,8 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9660).
+	* config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
+
 2011-11-05  Christoph Scholtes  <cschol2112 <at> googlemail.com>
 
 	* inc/stdint.h (UINT64_MAX, UINT64_MIN, INT64_MIN, UINTMAX_MAX)

=== modified file 'nt/config.nt'
--- nt/config.nt	2011-11-05 17:16:01 +0000
+++ nt/config.nt	2011-11-07 05:59:29 +0000
@@ -278,13 +278,6 @@
 
 /* Preprocessor macros needed for gnulib imports.  */
 
-/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
-#ifdef __GNUC__
-#define HAVE_ATTRIBUTE_ALIGNED 1
-#else
-#undef HAVE_ATTRIBUTE_ALIGNED
-#endif
-
 /* Define to 1 if strtold conforms to C99. */
 #ifdef __GNUC__
 #define HAVE_C99_STRTOLD 1

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-07 17:04:01 +0000
+++ src/ChangeLog	2011-11-08 01:07:18 +0000
@@ -1,3 +1,14 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9660).
+	* alloc.c (XMALLOC_BASE_ALIGNMENT, GC_LISP_OBJECT_ALIGNMENT)
+	(GC_POINTER_ALIGNMENT, pure_alloc): Simplify by using alignof.
+	(pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
+	* lisp.h: Include <stdalign.h>.
+	(DECL_ALIGN): Simplify by using alignas.
+	Port to MSVC, by using ALIGN_GCTYPEBITS.
+	(ALIGN_GCTYPEBITS): New macro.
+
 2011-11-07  Juanma Barranquero  <lekktu <at> gmail.com>
 
 	* lisp.h (syms_of_abbrev): Remove declaration.

=== modified file 'src/alloc.c'
--- src/alloc.c	2011-11-07 05:37:49 +0000
+++ src/alloc.c	2011-11-07 05:59:29 +0000
@@ -513,12 +513,7 @@
    hold a size_t value and (2) the header size is a multiple of the
    alignment that Emacs needs for C types and for USE_LSB_TAG.  */
 #define XMALLOC_BASE_ALIGNMENT				\
-  offsetof (						\
-    struct {						\
-      union { long double d; intmax_t i; void *p; } u;	\
-      char c;						\
-    },							\
-    c)
+  alignof (union { long double d; intmax_t i; void *p; })
 #ifdef USE_LSB_TAG
 /* A common multiple of the positive integers A and B.  Ideally this
    would be the least common multiple, but there's no way to do that
@@ -4241,15 +4236,15 @@
 }
 
 
-/* Alignment of Lisp_Object and pointer values.  Use offsetof, as it
+/* Alignment of Lisp_Object and pointer values.  Use alignof, as it
    sometimes returns a smaller alignment than GCC's __alignof__ and
    mark_memory might miss objects if __alignof__ were used.  For
    example, on x86 with WIDE_EMACS_INT, __alignof__ (Lisp_Object) is 8
    but GC_LISP_OBJECT_ALIGNMENT should be 4.  */
 #ifndef GC_LISP_OBJECT_ALIGNMENT
-# define GC_LISP_OBJECT_ALIGNMENT offsetof (struct {char a; Lisp_Object b;}, b)
+# define GC_LISP_OBJECT_ALIGNMENT alignof (Lisp_Object)
 #endif
-#define GC_POINTER_ALIGNMENT offsetof (struct {char a; void *b;}, b)
+#define GC_POINTER_ALIGNMENT alignof (void *)
 
 /* Mark Lisp objects referenced from the address range START+OFFSET..END
    or END+OFFSET..START. */
@@ -4668,17 +4663,11 @@
 #ifdef USE_LSB_TAG
   size_t alignment = (1 << GCTYPEBITS);
 #else
-  size_t alignment = sizeof (EMACS_INT);
+  size_t alignment = alignof (EMACS_INT);
 
   /* Give Lisp_Floats an extra alignment.  */
   if (type == Lisp_Float)
-    {
-#if defined __GNUC__ && __GNUC__ >= 2
-      alignment = __alignof (struct Lisp_Float);
-#else
-      alignment = sizeof (struct Lisp_Float);
-#endif
-    }
+    alignment = alignof (struct Lisp_Float);
 #endif
 
  again:

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-11-07 17:04:01 +0000
+++ src/lisp.h	2011-11-08 01:07:18 +0000
@@ -20,6 +20,7 @@
 #ifndef EMACS_LISP_H
 #define EMACS_LISP_H
 
+#include <stdalign.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <inttypes.h>
@@ -163,18 +164,8 @@
 /* First, try and define DECL_ALIGN(type,var) which declares a static
    variable VAR of type TYPE with the added requirement that it be
    TYPEBITS-aligned.  */
-#ifndef NO_DECL_ALIGN
-# ifndef DECL_ALIGN
-#  if HAVE_ATTRIBUTE_ALIGNED
-#   define DECL_ALIGN(type, var) \
-     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-#  elif defined(_MSC_VER)
-#   define DECL_ALIGN(type, var) \
-     type __declspec(align(1 << GCTYPEBITS)) var
-#  else
-     /* What directives do other compilers use?  */
-#  endif
-# endif
+#ifdef alignas
+# define DECL_ALIGN(type, var) type alignas (ALIGN_GCTYPEBITS) var
 #endif
 
 /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8.  */
@@ -302,6 +293,10 @@
 
 #ifndef GCTYPEBITS
 #define GCTYPEBITS 3
+#define ALIGN_GCTYPEBITS 8 /* This must be an integer constant, for MSVC.  */
+#endif
+#if 1 << GCTYPEBITS != ALIGN_GCTYPEBITS
+# error "ALIGN_GCTYPEBITS is wrong!"
 #endif
 
 /* These values are overridden by the m- file on some machines.  */





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 08 Nov 2011 06:46:02 GMT) Full text and rfc822 format available.

Message #29 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 9772 <at> debbugs.gnu.org, 9660 <at> debbugs.gnu.org
Subject: Re: fix for Bug#9772 should also help fix Bug#9660
Date: Mon, 07 Nov 2011 22:42:09 -0800
On 11/07/11 22:09, Paul Eggert wrote:
> It appears that the patch for Bug#9772 would also help fix one of the
> problems with the MSVC port (Bug#9660)

Whoops, I meant to write "Bug#9960".  Sorry about the confusion.
I'll send an updated copy of the patch (with 9660 -> 9960) to
the latter bug address.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 09:31:02 GMT) Full text and rfc822 format available.

Message #32 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Chong Yidong <cyd <at> gnu.org>
Cc: mario <at> lassnig.net, Eli Zaretskii <eliz <at> gnu.org>, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: OSX breakage
Date: Tue, 29 Nov 2011 01:28:30 -0800
On 11/28/11 21:00, Chong Yidong wrote:
> As Eli pointed out in the discussion on bug#10155, there is already code
> in lib/unistd.in.h that apparently ought to handle this, but itsn't
> working.

Here's a proposed patch to fix that, by having Emacs use Gnulib's
environ module.  This syncs from Gnulib, and so it also brings
in the patches for Bug#9772 and Bug#9960.  (It is possible to
pull out just the environ fix by hand, but that's an error-prone process
and I'd rather avoid it.)  I have tested this on Fedora 15,
but not on OSX nor on Windows.

# Begin patch
=== modified file '.bzrignore'
--- .bzrignore	2011-09-29 14:19:11 +0000
+++ .bzrignore	2011-10-17 01:22:19 +0000
@@ -53,6 +53,7 @@
 lib/c++defs.h
 lib/getopt.h
 lib/inttypes.h
+lib/stdalign.h
 lib/stdbool.h
 lib/stdio.h
 lib/stdint.h

=== modified file 'ChangeLog'
--- ChangeLog	2011-11-27 18:33:17 +0000
+++ ChangeLog	2011-11-29 09:17:01 +0000
@@ -1,3 +1,25 @@
+2011-11-29  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib environ module.
+	* Makefile.in (GNULIB_MODULES): Add environ.
+	* m4/environ.m4: New file, from gnulib.
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9960).
+	This should improve portability of macros like alignof and DECL_ALIGN.
+	* lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
+	* .bzrignore: Add lib/stdalign.h.
+	* Makefile.in (GNULIB_MODULES): Add stdalign.
+	* config.bat: Do not set NO_DECL_ALIGN; no longer needed.
+	Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
+	* configure.in (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
+	fiddles with this, as gnulib now does this for us.
+	* doc/misc/texinfo.tex, lib/gettext.h, lib/gnulib.mk:
+	* lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+	* lib/sigprocmask.c, lib/stdlib.in.h:
+	* m4/dup2.m4, m4/getopt.m4, m4/gl-comp.m4, m4/gnulib-common.m4:
+	* m4/include_next.m4, m4/pthread_sigmask.m4, m4/stdlib_h.m4:
+	* m4/unistd_h.m4: Merge from gnulib.
+
 2011-11-27  Jan Djärv  <jan.h.d <at> swipnet.se>
 
 	* configure.in: Check for gtk_window_set_has_resize_grip.

=== modified file 'Makefile.in'
--- Makefile.in	2011-11-22 01:56:49 +0000
+++ Makefile.in	2011-11-29 09:17:01 +0000
@@ -334,10 +334,10 @@
 GNULIB_MODULES = \
   alloca-opt \
   careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr \
-  dup2 \
+  dup2 environ \
   filemode getloadavg getopt-gnu ignore-value intprops lstat \
   mktime pthread_sigmask readlink \
-  socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+  socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 GNULIB_TOOL_FLAGS = \
  --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax \
  --avoid=raise --avoid=threadlib \

=== modified file 'config.bat'
--- config.bat	2011-10-31 17:49:10 +0000
+++ config.bat	2011-11-01 05:03:56 +0000
@@ -163,22 +163,6 @@
 if exist ..\autogen\config.in sed -f ../msdos/sed2x.inp < ..\autogen\config.in > config.tmp

 :src4

 sed -f ../msdos/sed2v2.inp <config.tmp >config.h2

-Rem See if DECL_ALIGN can be supported with this GCC

-rm -f junk.c junk.o junk junk.exe

-echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c

-rem Two percent signs because it is a special character for COMMAND.COM/CMD

-rem Filter thru Sed because "&" is special for CMD.EXE

-echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/"         >>junk.c

-gcc -o junk junk.c

-if not exist junk.exe coff2exe junk

-junk

-If Not ErrorLevel 1 Goto alignOk

-Echo WARNING: Your GCC does not support 8-byte aligned variables.

-Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.

-rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG

-rem For details see lisp.h where it defines USE_LSB_TAG

-echo #define NO_DECL_ALIGN >>config.h2

-:alignOk

 Rem See if they have libxml2 later than v2.2.0 installed

 Echo Checking whether libxml2 v2.2.1 or later is installed ...

 rm -f junk.c junk.o junk junk.exe

@@ -283,6 +267,7 @@
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h

 If Exist alloca.in.h update alloca.in.h alloca.in-h

 If Exist getopt.in.h update getopt.in.h getopt.in-h

+If Exist stdalign.in.h update stdalign.in.h stdalign.in-h

 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h

 If Exist signal.in.h update signal.in.h signal.in-h

 If Exist stddef.in.h update stddef.in.h  stddef.in-h

@@ -346,4 +331,3 @@
 set djgpp_ver=

 set sys_malloc=

 set libxml=

-


=== modified file 'configure.in'
--- configure.in	2011-11-27 18:33:17 +0000
+++ configure.in	2011-11-28 16:07:26 +0000
@@ -1350,19 +1350,6 @@
 dnl Check for endianness.
 AC_C_BIGENDIAN
 
-AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
-  [emacs_cv_attribute_aligned],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM(
-	[[char __attribute__ ((__aligned__ (1 << 3))) c;]],
-	[[]])],
-     [emacs_cv_attribute_aligned=yes],
-     [emacs_cv_attribute_aligned=no])])
-if test $emacs_cv_attribute_aligned = yes; then
-  AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
-    [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
-fi
-
 dnl check for Make feature
 AC_PROG_MAKE_SET
 

=== modified file 'doc/misc/ChangeLog'
--- doc/misc/ChangeLog	2011-11-25 13:26:30 +0000
+++ doc/misc/ChangeLog	2011-11-29 09:17:01 +0000
@@ -1,3 +1,7 @@
+2011-11-29  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	* texinfo.tex: Merge from gnulib.
+
 2011-11-24  Glenn Morris  <rgm <at> gnu.org>
 
 	* gnus.texi, smtpmail.texi: Fix case of "GnuTLS".

=== modified file 'doc/misc/texinfo.tex'
--- doc/misc/texinfo.tex	2011-09-26 21:30:18 +0000
+++ doc/misc/texinfo.tex	2011-11-29 09:17:01 +0000
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2011-09-23.09}
+\def\texinfoversion{2011-11-09.15}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -116,6 +116,7 @@
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
 \ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
 \ifx\putwordin\undefined        \gdef\putwordin{in}\fi
 \ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
@@ -1194,29 +1195,31 @@
     \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
     \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
     \let\pdfimgext=\empty
     \begingroup
-      \openin 1 #1.png \ifeof 1
-        \openin 1 #1.jpg \ifeof 1
-          \openin 1 #1.jpeg \ifeof 1
-            \openin 1 #1.JPG \ifeof 1
-              \openin 1 #1.pdf \ifeof 1
-                \openin 1 #1.PDF \ifeof 1
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
                   \errhelp = \nopdfimagehelp
                   \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
+                \else \gdef\pdfimgext{JPG}%
                 \fi
-              \else \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{jpeg}%
               \fi
-            \else \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{jpg}%
             \fi
-          \else \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{png}%
           \fi
-        \else \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{PDF}%
         \fi
-      \else \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{pdf}%
       \fi
       \closein 1
     \endgroup
@@ -2372,7 +2375,9 @@
   \else\ifx\next-%
   \else\ifx\next.%
   \else\ptexslash
-  \fi\fi\fi}
+  \fi\fi\fi
+  \aftersmartic
+}
 
 % like \smartslanted except unconditionally uses \ttsl, and no ic.
 % @var is set to this for defun arguments.
@@ -2382,9 +2387,15 @@
 % ttsl for book titles, do we?
 \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2480,7 +2491,7 @@
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2762,6 +2773,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2774,6 +2786,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -2979,7 +2992,7 @@
 {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -8103,7 +8116,7 @@
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -8166,6 +8179,8 @@
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo <at> t
 }
 }%end \catcode `\@=11

=== modified file 'lib/gettext.h'
--- lib/gettext.h	2011-02-15 04:53:29 +0000
+++ lib/gettext.h	2011-10-27 19:51:26 +0000
@@ -185,7 +185,7 @@
 #include <string.h>
 
 #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
    /* || __STDC_VERSION__ >= 199901L */ )
 
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS

=== modified file 'lib/gnulib.mk'
--- lib/gnulib.mk	2011-09-26 21:30:18 +0000
+++ lib/gnulib.mk	2011-11-29 09:17:01 +0000
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 environ filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdalign stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -421,6 +421,29 @@
 
 ## end   gnulib module stat
 
+## begin gnulib module stdalign
+
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  cat $(srcdir)/stdalign.in.h; \
+	} > $@-t && \
+	mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+	rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+EXTRA_DIST += stdalign.in.h
+
+## end   gnulib module stdalign
+
 ## begin gnulib module stdarg
 
 BUILT_SOURCES += $(STDARG_H)
@@ -710,7 +733,9 @@
 	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
 	      -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
 	      -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
 	      -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+	      -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
 	      -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
 	      -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
 	      -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
@@ -736,7 +761,9 @@
 	      -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
 	      -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
 	      -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+	      -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
 	      -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+	      -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
 	      -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
 	      -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
 	      -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
@@ -754,6 +781,7 @@
 	      -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
 	      -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
 	      -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+	      -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
 	      -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
 	      -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
 	      -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
@@ -1004,7 +1032,7 @@
 	      -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
 	      -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
 	      -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
-	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/$(GNULIB_UNISTD_H_GETOPT)/g' \
+	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
 	      -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
 	      -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
 	      -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \

=== modified file 'lib/md5.c'
--- lib/md5.c	2011-02-19 07:28:29 +0000
+++ lib/md5.c	2011-10-17 01:22:19 +0000
@@ -24,7 +24,8 @@
 
 #include "md5.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -254,8 +255,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha1.c'
--- lib/sha1.c	2011-05-24 08:12:52 +0000
+++ lib/sha1.c	2011-10-17 01:22:19 +0000
@@ -26,7 +26,8 @@
 
 #include "sha1.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -241,8 +242,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha256.c'
--- lib/sha256.c	2011-11-20 03:48:53 +0000
+++ lib/sha256.c	2011-11-29 09:17:01 +0000
@@ -24,7 +24,8 @@
 
 #include "sha256.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -51,7 +52,7 @@
 
 /*
   Takes a pointer to a 256 bit block of data (eight 32 bit ints) and
-  initializes it to the start constants of the SHA256 algorithm.  This
+  intializes it to the start constants of the SHA256 algorithm.  This
   must be called before using hash in the call to sha256_hash
 */
 void
@@ -373,8 +374,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha512.c'
--- lib/sha512.c	2011-11-20 03:48:53 +0000
+++ lib/sha512.c	2011-11-29 09:17:01 +0000
@@ -24,7 +24,8 @@
 
 #include "sha512.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -58,7 +59,7 @@
 
 /*
   Takes a pointer to a 512 bit block of data (eight 64 bit ints) and
-  initializes it to the start constants of the SHA512 algorithm.  This
+  intializes it to the start constants of the SHA512 algorithm.  This
   must be called before using hash in the call to sha512_hash
 */
 void
@@ -381,8 +382,7 @@
   if (len >= 128)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 128)
           {

=== modified file 'lib/sigprocmask.c'
--- lib/sigprocmask.c	2011-10-07 21:15:00 +0000
+++ lib/sigprocmask.c	2011-11-29 09:17:01 +0000
@@ -344,5 +344,6 @@
       else if (handler != SIG_IGN)
         (*handler) (SIGPIPE);
     }
+  return 0;
 }
 #endif

=== added file 'lib/stdalign.in.h'
--- lib/stdalign.in.h	1970-01-01 00:00:00 +0000
+++ lib/stdalign.in.h	2011-11-07 05:56:04 +0000
@@ -0,0 +1,89 @@
+/* A substitute for ISO C 1x <stdalign.h>.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Paul Eggert and Bruno Haible.  */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+   References:
+   ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+   sections 6.5.3.4, 6.7.5, 7.15.
+   C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+   section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+   requirement of a structure member (i.e., slot or field) that is of
+   type TYPE, as an integer constant expression.
+
+   This differs from GCC's __alignof__ operator, which can yield a
+   better-performing alignment for an object of that type.  For
+   example, on x86 with GCC, __alignof__ (double) and __alignof__
+   (long long) are 8, whereas alignof (double) and alignof (long long)
+   are 4 unless the option '-malign-double' is used.
+
+   The result cannot be used as a value for an 'enum' constant, if you
+   want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
+#include <stddef.h>
+#if defined __cplusplus
+   template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+   to the alignment A, where A is an integer constant expression.  For
+   example:
+
+      int alignas (8) foo;
+      struct s { int a; int alignas (8) bar; };
+
+   aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+   A should be a power of two that is at least the type's alignment
+   and at most the implementation's alignment limit.  This limit is
+   2**28 on typical GNUish hosts, and 2**13 on MSVC.  To be portable
+   to MSVC through at least version 10.0, A should be an integer
+   constant, as MSVC does not support expressions such as 1 << 3.
+   To be portable to Sun C 5.11, do not align auto variables to
+   anything stricter than their default alignment.
+
+   The following draft C1X requirements are not supported here:
+
+     - If A is zero, alignas has no effect.
+     - alignas can be used multiple times; the strictest one wins.
+     - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+   */
+
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec (align (a))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */

=== modified file 'lib/stdlib.in.h'
--- lib/stdlib.in.h	2011-07-24 22:15:47 +0000
+++ lib/stdlib.in.h	2011-11-29 09:17:01 +0000
@@ -247,7 +247,7 @@
 #elif defined GNULIB_POSIXCHECK
 # undef grantpt
 # if HAVE_RAW_DECL_GRANTPT
-_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
                  "use gnulib module grantpt for portability");
 # endif
 #endif
@@ -423,6 +423,22 @@
 # endif
 #endif
 
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal.  Flags should
+   include O_RDWR, and may also include O_NOCTTY.  */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+                 "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
 #if @GNULIB_PTSNAME@
 /* Return the pathname of the pseudo-terminal slave associated with
    the master FD is open on, or NULL on errors.  */
@@ -439,6 +455,32 @@
 # endif
 #endif
 
+#if @GNULIB_PTSNAME_R@
+/* Set the pathname of the pseudo-terminal slave associated with
+   the master FD is open on and return 0, or set errno and return
+   non-zero on errors.  */
+# if @REPLACE_PTSNAME_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ptsname_r
+#   define ptsname_r rpl_ptsname_r
+#  endif
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+# else
+#  if !@HAVE_PTSNAME_R@
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+#  endif
+_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIASWARN (ptsname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname_r
+# if HAVE_RAW_DECL_PTSNAME_R
+_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
+                 "use gnulib module ptsname_r for portability");
+# endif
+#endif
+
 #if @GNULIB_PUTENV@
 # if @REPLACE_PUTENV@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)

=== modified file 'm4/dup2.m4'
--- m4/dup2.m4	2011-09-26 21:30:18 +0000
+++ m4/dup2.m4	2011-11-29 09:17:01 +0000
@@ -1,4 +1,4 @@
-#serial 16
+#serial 17
 dnl Copyright (C) 2002, 2005, 2007, 2009-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -67,7 +67,9 @@
   m4_ifdef([gl_FUNC_FCHDIR], [
     gl_TEST_FCHDIR
     if test $HAVE_FCHDIR = 0; then
-      REPLACE_DUP2=1
+      if test $HAVE_DUP2 = 1; then
+        REPLACE_DUP2=1
+      fi
     fi
   ])
 ])

=== added file 'm4/environ.m4'
--- m4/environ.m4	1970-01-01 00:00:00 +0000
+++ m4/environ.m4	2011-11-29 09:17:01 +0000
@@ -0,0 +1,47 @@
+# environ.m4 serial 6
+dnl Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_ENVIRON],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl Persuade glibc <unistd.h> to declare environ.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+  gt_CHECK_VAR_DECL(
+    [#if HAVE_UNISTD_H
+     #include <unistd.h>
+     #endif
+     /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
+     #include <stdlib.h>
+    ],
+    [environ])
+  if test $gt_cv_var_environ_declaration != yes; then
+    HAVE_DECL_ENVIRON=0
+  fi
+])
+
+# Check if a variable is properly declared.
+# gt_CHECK_VAR_DECL(includes,variable)
+AC_DEFUN([gt_CHECK_VAR_DECL],
+[
+  define([gt_cv_var], [gt_cv_var_]$2[_declaration])
+  AC_MSG_CHECKING([if $2 is properly declared])
+  AC_CACHE_VAL([gt_cv_var], [
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[$1
+           extern struct { int foo; } $2;]],
+         [[$2.foo = 1;]])],
+      [gt_cv_var=no],
+      [gt_cv_var=yes])])
+  AC_MSG_RESULT([$gt_cv_var])
+  if test $gt_cv_var = yes; then
+    AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1,
+              [Define if you have the declaration of $2.])
+  fi
+  undefine([gt_cv_var])
+])

=== modified file 'm4/getopt.m4'
--- m4/getopt.m4	2011-07-24 22:15:47 +0000
+++ m4/getopt.m4	2011-11-29 09:17:01 +0000
@@ -1,4 +1,4 @@
-# getopt.m4 serial 38
+# getopt.m4 serial 39
 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -25,8 +25,6 @@
   if test $REPLACE_GETOPT = 1; then
     dnl Arrange for getopt.h to be created.
     gl_GETOPT_SUBSTITUTE_HEADER
-    dnl Arrange for unistd.h to include getopt.h.
-    GNULIB_UNISTD_H_GETOPT=1
   fi
 ])
 

=== modified file 'm4/gl-comp.m4'
--- m4/gl-comp.m4	2011-10-07 21:15:00 +0000
+++ m4/gl-comp.m4	2011-11-29 09:17:01 +0000
@@ -48,6 +48,7 @@
   # Code from module dosname:
   # Code from module dtoastr:
   # Code from module dup2:
+  # Code from module environ:
   # Code from module extensions:
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   # Code from module filemode:
@@ -76,6 +77,7 @@
   # Code from module socklen:
   # Code from module ssize_t:
   # Code from module stat:
+  # Code from module stdalign:
   # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
@@ -130,6 +132,8 @@
   gl_PREREQ_DUP2
 fi
 gl_UNISTD_MODULE_INDICATOR([dup2])
+gl_ENVIRON
+gl_UNISTD_MODULE_INDICATOR([environ])
 gl_FILEMODE
 gl_GETLOADAVG
 if test $HAVE_GETLOADAVG = 0; then
@@ -142,14 +146,20 @@
   AC_LIBOBJ([getopt])
   AC_LIBOBJ([getopt1])
   gl_PREREQ_GETOPT
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_GL_UNISTD_H_GETOPT=1
 fi
+AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
 gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
 gl_FUNC_GETOPT_POSIX
 if test $REPLACE_GETOPT = 1; then
   AC_LIBOBJ([getopt])
   AC_LIBOBJ([getopt1])
   gl_PREREQ_GETOPT
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_GL_UNISTD_H_GETOPT=1
 fi
+AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
 AC_REQUIRE([AC_C_INLINE])
 gl_INTTYPES_INCOMPLETE
 gl_FUNC_LSTAT
@@ -180,6 +190,7 @@
 gl_SIGNAL_H
 gl_TYPE_SOCKLEN_T
 gt_TYPE_SSIZE_T
+gl_STDALIGN_H
 gl_STDARG_H
 AM_STDBOOL_H
 gl_STDDEF_H
@@ -311,18 +322,18 @@
   if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
     func_gl_gnulib_m4code_stat
   fi
-  if test $ac_cv_func_strtoimax = no; then
-    func_gl_gnulib_m4code_verify
-  fi
   if test $ac_cv_func_strtoimax = no && test $ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
-  if test $ac_cv_func_strtoumax = no; then
+  if test $ac_cv_func_strtoimax = no; then
     func_gl_gnulib_m4code_verify
   fi
   if test $ac_cv_func_strtoumax = no && test $ac_cv_type_unsigned_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoull
   fi
+  if test $ac_cv_func_strtoumax = no; then
+    func_gl_gnulib_m4code_verify
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
@@ -513,6 +524,7 @@
   lib/signal.in.h
   lib/sigprocmask.c
   lib/stat.c
+  lib/stdalign.in.h
   lib/stdarg.in.h
   lib/stdbool.in.h
   lib/stddef.in.h
@@ -538,6 +550,7 @@
   m4/alloca.m4
   m4/c-strtod.m4
   m4/dup2.m4
+  m4/environ.m4
   m4/extensions.m4
   m4/filemode.m4
   m4/getloadavg.m4
@@ -563,6 +576,7 @@
   m4/ssize_t.m4
   m4/st_dm_mode.m4
   m4/stat.m4
+  m4/stdalign.m4
   m4/stdarg.m4
   m4/stdbool.m4
   m4/stddef_h.m4

=== modified file 'm4/gnulib-common.m4'
--- m4/gnulib-common.m4	2011-10-07 21:15:00 +0000
+++ m4/gnulib-common.m4	2011-11-29 09:17:01 +0000
@@ -18,7 +18,7 @@
 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
       || 0x5110 <= __SUNPRO_C)
 #  define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= _MSC_VER
+# elif defined _MSC_VER && 1200 <= _MSC_VER
 #  define _Noreturn __declspec (noreturn)
 # else
 #  define _Noreturn

=== modified file 'm4/include_next.m4'
--- m4/include_next.m4	2011-09-26 21:30:18 +0000
+++ m4/include_next.m4	2011-10-27 19:51:26 +0000
@@ -1,4 +1,4 @@
-# include_next.m4 serial 22
+# include_next.m4 serial 23
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -219,12 +219,17 @@
                    gl_dirsep_regex='[/\\]'
                    ;;
                  *)
-                   gl_dirsep_regex='/'
+                   gl_dirsep_regex='\/'
                    ;;
                esac
+               dnl A sed expression that turns a string into a basic regular
+               dnl expression, for use within "/.../".
+               gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
 changequote([,])
-               gl_absolute_header_sed='\|'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[|{
-                   s|.*"\(.*'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[\)".*|\1|
+               gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+                                        | sed -e "$gl_make_literal_regex_sed"`
+               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
 changequote(,)dnl
                    s|^/[^/]|//&|
 changequote([,])dnl

=== modified file 'm4/pthread_sigmask.m4'
--- m4/pthread_sigmask.m4	2011-09-03 23:08:32 +0000
+++ m4/pthread_sigmask.m4	2011-10-17 01:22:19 +0000
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,6 +6,8 @@
 
 AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
 [
+  AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
   AC_CHECK_FUNCS_ONCE([pthread_sigmask])
   LIB_PTHREAD_SIGMASK=
 

=== added file 'm4/stdalign.m4'
--- m4/stdalign.m4	1970-01-01 00:00:00 +0000
+++ m4/stdalign.m4	2011-10-27 19:39:30 +0000
@@ -0,0 +1,22 @@
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+  AC_CHECK_HEADERS_ONCE([stdalign.h])
+
+  if test $ac_cv_header_stdalign_h = yes; then
+    STDALIGN_H=''
+  else
+    STDALIGN_H='stdalign.h'
+  fi
+
+  AC_SUBST([STDALIGN_H])
+  AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])

=== modified file 'm4/stdlib_h.m4'
--- m4/stdlib_h.m4	2011-02-25 07:36:37 +0000
+++ m4/stdlib_h.m4	2011-11-29 09:17:01 +0000
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 37
+# stdlib_h.m4 serial 39
 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -19,10 +19,10 @@
 #if HAVE_RANDOM_H
 # include <random.h>
 #endif
-    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
-    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
-    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
-    unsetenv])
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+    initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt
+    ptsname ptsname_r random_r realpath rpmatch setenv setstate_r srandom_r
+    strtod strtoll strtoull unlockpt unsetenv])
 ])
 
 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
@@ -50,7 +50,9 @@
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
   GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
+  GNULIB_PTSNAME_R=0;     AC_SUBST([GNULIB_PTSNAME_R])
   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
   GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
@@ -76,7 +78,9 @@
   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
+  HAVE_PTSNAME_R=1;          AC_SUBST([HAVE_PTSNAME_R])
   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
@@ -95,6 +99,7 @@
   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
   REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
+  REPLACE_PTSNAME_R=0;       AC_SUBST([REPLACE_PTSNAME_R])
   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])

=== modified file 'm4/unistd_h.m4'
--- m4/unistd_h.m4	2011-09-26 21:30:18 +0000
+++ m4/unistd_h.m4	2011-11-29 09:17:01 +0000
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 61
+# unistd_h.m4 serial 62
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -98,7 +98,6 @@
   GNULIB_SYMLINK=0;              AC_SUBST([GNULIB_SYMLINK])
   GNULIB_SYMLINKAT=0;            AC_SUBST([GNULIB_SYMLINKAT])
   GNULIB_TTYNAME_R=0;            AC_SUBST([GNULIB_TTYNAME_R])
-  GNULIB_UNISTD_H_GETOPT=0;      AC_SUBST([GNULIB_UNISTD_H_GETOPT])
   GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
   GNULIB_UNISTD_H_SIGPIPE=0;     AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
   GNULIB_UNLINK=0;               AC_SUBST([GNULIB_UNLINK])

=== modified file 'msdos/ChangeLog'
--- msdos/ChangeLog	2011-10-31 17:37:39 +0000
+++ msdos/ChangeLog	2011-11-08 06:35:37 +0000
@@ -1,3 +1,10 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9960).
+	* sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
+	* sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
+	(GL_GENERATE_STDALIGN_H_FALSE): New edits.
+
 2011-10-31  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* sed3v2.inp (insrcdir): Comment out definition.

=== modified file 'msdos/sed2v2.inp'
--- msdos/sed2v2.inp	2011-10-31 02:25:01 +0000
+++ msdos/sed2v2.inp	2011-11-01 05:03:56 +0000
@@ -35,7 +35,6 @@
 /^#undef HAVE_FREXP *$/s/^.*$/#define HAVE_FREXP 1/
 /^#undef HAVE_FMOD *$/s/^.*$/#define HAVE_FMOD 1/
 /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/
-/^#undef HAVE_ATTRIBUTE_ALIGNED *$/s/^.*$/#define HAVE_ATTRIBUTE_ALIGNED 1/
 /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/
 /^#undef HAVE_CBRT *$/s/^.*$/#define HAVE_CBRT 1/
 /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/
@@ -119,4 +118,3 @@
 # might be defined in sys/config.h we include at the top of config.h.
 /^#undef BSTRING/s|#undef|# undef|
 /^#undef .*$/s|^.*$|/* & */|
-

=== modified file 'msdos/sedlibmk.inp'
--- msdos/sedlibmk.inp	2011-09-29 12:00:18 +0000
+++ msdos/sedlibmk.inp	2011-10-17 01:22:19 +0000
@@ -27,7 +27,7 @@
 #    otherwise edit them to zero:
 #
 #     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-# 
+#
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #    Examples:
@@ -547,6 +547,7 @@
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^STDBOOL_H *=/s/@[^@\n]*@//
+/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@@ -600,6 +601,8 @@
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_FALSE@//
+s/^@GL_GENERATE_STDALIGN_H_TRUE@//
+s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
 s/^@GL_GENERATE_STDARG_H_TRUE@/\#/
 s/^@GL_GENERATE_STDARG_H_FALSE@/\#/
 s/^@GL_GENERATE_STDDEF_H_TRUE@/\#/

=== modified file 'nt/ChangeLog'
--- nt/ChangeLog	2011-11-27 18:52:53 +0000
+++ nt/ChangeLog	2011-11-28 16:07:26 +0000
@@ -1,3 +1,8 @@
+2011-11-28  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9960).
+	* config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
+
 2011-11-27  Fabrice Popineau  <fabrice.popineau <at> supelec.fr>  (tiny change)
 
 	* inc/stdint.h (uint32_t, uint64_t) [_WIN64]: New typedefs.

=== modified file 'nt/config.nt'
--- nt/config.nt	2011-11-27 18:52:53 +0000
+++ nt/config.nt	2011-11-28 16:07:26 +0000
@@ -278,13 +278,6 @@
 
 /* Preprocessor macros needed for gnulib imports.  */
 
-/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
-#ifdef __GNUC__
-#define HAVE_ATTRIBUTE_ALIGNED 1
-#else
-#undef HAVE_ATTRIBUTE_ALIGNED
-#endif
-
 /* Define to 1 if strtold conforms to C99. */
 #ifdef __GNUC__
 #define HAVE_C99_STRTOLD 1

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-28 08:20:58 +0000
+++ src/ChangeLog	2011-11-28 16:07:26 +0000
@@ -1,3 +1,14 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib stdalign module (Bug#9772, Bug#9960).
+	* alloc.c (XMALLOC_BASE_ALIGNMENT, GC_LISP_OBJECT_ALIGNMENT)
+	(GC_POINTER_ALIGNMENT, pure_alloc): Simplify by using alignof.
+	(pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
+	* lisp.h: Include <stdalign.h>.
+	(DECL_ALIGN): Simplify by using alignas.
+	Port to MSVC, by using ALIGN_GCTYPEBITS.
+	(ALIGN_GCTYPEBITS): New macro.
+
 2011-11-28  Paul Eggert  <eggert <at> cs.ucla.edu>
 
 	Remove GCPRO-related macros that exist only to avoid shadowing locals.

=== modified file 'src/alloc.c'
--- src/alloc.c	2011-11-20 03:07:02 +0000
+++ src/alloc.c	2011-11-28 16:07:26 +0000
@@ -507,12 +507,7 @@
    hold a size_t value and (2) the header size is a multiple of the
    alignment that Emacs needs for C types and for USE_LSB_TAG.  */
 #define XMALLOC_BASE_ALIGNMENT				\
-  offsetof (						\
-    struct {						\
-      union { long double d; intmax_t i; void *p; } u;	\
-      char c;						\
-    },							\
-    c)
+  alignof (union { long double d; intmax_t i; void *p; })
 #ifdef USE_LSB_TAG
 /* A common multiple of the positive integers A and B.  Ideally this
    would be the least common multiple, but there's no way to do that
@@ -4235,15 +4230,15 @@
 }
 
 
-/* Alignment of Lisp_Object and pointer values.  Use offsetof, as it
+/* Alignment of Lisp_Object and pointer values.  Use alignof, as it
    sometimes returns a smaller alignment than GCC's __alignof__ and
    mark_memory might miss objects if __alignof__ were used.  For
    example, on x86 with WIDE_EMACS_INT, __alignof__ (Lisp_Object) is 8
    but GC_LISP_OBJECT_ALIGNMENT should be 4.  */
 #ifndef GC_LISP_OBJECT_ALIGNMENT
-# define GC_LISP_OBJECT_ALIGNMENT offsetof (struct {char a; Lisp_Object b;}, b)
+# define GC_LISP_OBJECT_ALIGNMENT alignof (Lisp_Object)
 #endif
-#define GC_POINTER_ALIGNMENT offsetof (struct {char a; void *b;}, b)
+#define GC_POINTER_ALIGNMENT alignof (void *)
 
 /* Mark Lisp objects referenced from the address range START+OFFSET..END
    or END+OFFSET..START. */
@@ -4662,17 +4657,11 @@
 #ifdef USE_LSB_TAG
   size_t alignment = (1 << GCTYPEBITS);
 #else
-  size_t alignment = sizeof (EMACS_INT);
+  size_t alignment = alignof (EMACS_INT);
 
   /* Give Lisp_Floats an extra alignment.  */
   if (type == Lisp_Float)
-    {
-#if defined __GNUC__ && __GNUC__ >= 2
-      alignment = __alignof (struct Lisp_Float);
-#else
-      alignment = sizeof (struct Lisp_Float);
-#endif
-    }
+    alignment = alignof (struct Lisp_Float);
 #endif
 
  again:

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-11-28 08:20:58 +0000
+++ src/lisp.h	2011-11-28 16:07:26 +0000
@@ -20,6 +20,7 @@
 #ifndef EMACS_LISP_H
 #define EMACS_LISP_H
 
+#include <stdalign.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <inttypes.h>
@@ -163,27 +164,8 @@
 /* First, try and define DECL_ALIGN(type,var) which declares a static
    variable VAR of type TYPE with the added requirement that it be
    TYPEBITS-aligned.  */
-
-#ifndef GCTYPEBITS
-#define GCTYPEBITS 3
-#endif
-
-#ifndef NO_DECL_ALIGN
-# ifndef DECL_ALIGN
-#  if HAVE_ATTRIBUTE_ALIGNED
-#   define DECL_ALIGN(type, var) \
-     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-#  elif defined(_MSC_VER)
-#   define ALIGN_GCTYPEBITS 8
-#   if (1 << GCTYPEBITS) != ALIGN_GCTYPEBITS
-#    error ALIGN_GCTYPEBITS is wrong!
-#   endif
-#   define DECL_ALIGN(type, var) \
-     type __declspec(align(ALIGN_GCTYPEBITS)) var
-#  else
-     /* What directives do other compilers use?  */
-#  endif
-# endif
+#ifdef alignas
+# define DECL_ALIGN(type, var) type alignas (ALIGN_GCTYPEBITS) var
 #endif
 
 /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8.  */
@@ -309,6 +291,14 @@
     Lisp_Fwd_Kboard_Obj,	/* Fwd to a Lisp_Object field of kboards.  */
   };
 
+#ifndef GCTYPEBITS
+#define GCTYPEBITS 3
+#define ALIGN_GCTYPEBITS 8 /* This must be an integer constant, for MSVC.  */
+#endif
+#if 1 << GCTYPEBITS != ALIGN_GCTYPEBITS
+# error "ALIGN_GCTYPEBITS is wrong!"
+#endif
+
 /* These values are overridden by the m- file on some machines.  */
 #ifndef VALBITS
 #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 13:59:02 GMT) Full text and rfc822 format available.

Message #35 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: mario <at> lassnig.net, Chong Yidong <cyd <at> gnu.org>, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: bug#10155: OSX breakage
Date: Tue, 29 Nov 2011 08:56:38 -0500
> --- .bzrignore	2011-09-29 14:19:11 +0000
> +++ .bzrignore	2011-10-17 01:22:19 +0000
> @@ -53,6 +53,7 @@
>  lib/c++defs.h
>  lib/getopt.h
>  lib/inttypes.h
> +lib/stdalign.h
>  lib/stdbool.h
>  lib/stdio.h
>  lib/stdint.h

Shouldn't these be covered by a glob lib/*.h instead?

> +	Use Gnulib stdalign module (Bug#9772, Bug#9960).

As already explained, we don't want this change now.  Syncing gnulib
shouldn't impose such a change.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 16:43:02 GMT) Full text and rfc822 format available.

Message #38 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: mario <at> lassnig.net, cyd <at> gnu.org, 9772 <at> debbugs.gnu.org, 9960 <at> debbugs.gnu.org,
	10155 <at> debbugs.gnu.org
Subject: Re: OSX breakage
Date: Tue, 29 Nov 2011 18:39:56 +0200
> Date: Tue, 29 Nov 2011 01:28:30 -0800
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> CC: Eli Zaretskii <eliz <at> gnu.org>, mario <at> lassnig.net, 
>  9772 <at> debbugs.gnu.org, 9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
> 
> On 11/28/11 21:00, Chong Yidong wrote:
> > As Eli pointed out in the discussion on bug#10155, there is already code
> > in lib/unistd.in.h that apparently ought to handle this, but itsn't
> > working.
> 
> Here's a proposed patch to fix that, by having Emacs use Gnulib's
> environ module.  This syncs from Gnulib, and so it also brings
> in the patches for Bug#9772 and Bug#9960.  (It is possible to
> pull out just the environ fix by hand, but that's an error-prone process
> and I'd rather avoid it.)  I have tested this on Fedora 15,
> but not on OSX nor on Windows.

FWIW, I'd very much prefer not to install such large changes a day or
two before the next pretest.  If the only practical way of fixing this
within gnulib is the proposed changeset, I'd say let's just add a
declaration of environ conditioned on OS X and FreeBSD.  I don't like
this solution, but I think on balance it has less potential for
destabilizing the build.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 17:01:02 GMT) Full text and rfc822 format available.

Message #41 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: mario <at> lassnig.net, 9960 <at> debbugs.gnu.org, Chong Yidong <cyd <at> gnu.org>,
	9772 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#10155: OSX breakage
Date: Tue, 29 Nov 2011 08:58:34 -0800
On 11/29/11 05:56, Stefan Monnier wrote:
>> --- .bzrignore	2011-09-29 14:19:11 +0000
>> +++ .bzrignore	2011-10-17 01:22:19 +0000
>> @@ -53,6 +53,7 @@
>>  lib/c++defs.h
>>  lib/getopt.h
>>  lib/inttypes.h
>> +lib/stdalign.h
>>  lib/stdbool.h
>>  lib/stdio.h
>>  lib/stdint.h
> 
> Shouldn't these be covered by a glob lib/*.h instead?

No, because the pattern "lib/*.h" would match many files that are
checked in under bzr and that we don't want bzr to ignore, such as
lib/allocator.h and lib/min-max.h.

> Syncing gnulib shouldn't impose such a change.

You're right, on further thought Emacs itself needn't use stdalign,
and I've prepared a simpler patch (below) that omits all changes to
src/*.  Gnulib now uses stdalign, though, and Emacs uses
multiple Gnulib modules such as sha256 that use stdalign, so
this patch still brings in the stdalign module for Gnulib's own
purposes.

About 90% of the following patch is automatically generated by the
sync from gnulib.  The only parts that aren't automatic are the
changes to Makefile.in, .bzrignore, config.bat, msdos/sedlibmk.inp,
and the ChangeLog files.  I've reordered the patch to list these
changes first, for easier reviewing.  I'm also CC'ing this to Eli
as the proposed config.bat and msdos changes affect Microsoft builds.

=== modified file 'ChangeLog'
--- ChangeLog	2011-11-27 18:33:17 +0000
+++ ChangeLog	2011-11-29 16:38:21 +0000
@@ -1,3 +1,19 @@
+2011-11-29  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Use Gnulib environ module, syncing from Gnulib.
+	* Makefile.in (GNULIB_MODULES): Add environ.
+	* m4/environ.m4: New file, from gnulib.
+	* lib/stdalign.in.h, m4/environ.m4, m4/stdalign.m4:
+	New files, from gnulib.
+	* .bzrignore: Add lib/stdalign.h.
+	* config.bat: Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
+	* doc/misc/texinfo.tex, lib/gettext.h, lib/gnulib.mk:
+	* lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+	* lib/sigprocmask.c, lib/stdlib.in.h:
+	* m4/dup2.m4, m4/getopt.m4, m4/gl-comp.m4, m4/gnulib-common.m4:
+	* m4/include_next.m4, m4/pthread_sigmask.m4, m4/stdlib_h.m4:
+	* m4/unistd_h.m4: Merge from gnulib.
+
 2011-11-27  Jan Djärv  <jan.h.d <at> swipnet.se>
 
 	* configure.in: Check for gtk_window_set_has_resize_grip.

=== modified file 'Makefile.in'
--- Makefile.in	2011-11-22 01:56:49 +0000
+++ Makefile.in	2011-11-29 16:38:21 +0000
@@ -334,7 +334,7 @@
 GNULIB_MODULES = \
   alloca-opt \
   careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr \
-  dup2 \
+  dup2 environ \
   filemode getloadavg getopt-gnu ignore-value intprops lstat \
   mktime pthread_sigmask readlink \
   socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat

=== modified file '.bzrignore'
--- .bzrignore	2011-09-29 14:19:11 +0000
+++ .bzrignore	2011-11-29 16:38:21 +0000
@@ -53,6 +53,7 @@
 lib/c++defs.h
 lib/getopt.h
 lib/inttypes.h
+lib/stdalign.h
 lib/stdbool.h
 lib/stdio.h
 lib/stdint.h

=== modified file 'config.bat'
--- config.bat	2011-10-31 17:49:10 +0000
+++ config.bat	2011-11-29 16:38:21 +0000
@@ -283,6 +283,7 @@
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h

 If Exist alloca.in.h update alloca.in.h alloca.in-h

 If Exist getopt.in.h update getopt.in.h getopt.in-h

+If Exist stdalign.in.h update stdalign.in.h stdalign.in-h

 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h

 If Exist signal.in.h update signal.in.h signal.in-h

 If Exist stddef.in.h update stddef.in.h  stddef.in-h

@@ -346,4 +347,3 @@
 set djgpp_ver=

 set sys_malloc=

 set libxml=

-


=== modified file 'msdos/ChangeLog'
--- msdos/ChangeLog	2011-10-31 17:37:39 +0000
+++ msdos/ChangeLog	2011-11-29 16:38:21 +0000
@@ -1,3 +1,9 @@
+2011-11-29  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Adjust to Gnulib stdalign module.
+	* sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
+	(GL_GENERATE_STDALIGN_H_FALSE): New edits.
+
 2011-10-31  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* sed3v2.inp (insrcdir): Comment out definition.

=== modified file 'msdos/sedlibmk.inp'
--- msdos/sedlibmk.inp	2011-09-29 12:00:18 +0000
+++ msdos/sedlibmk.inp	2011-11-29 16:38:21 +0000
@@ -27,7 +27,7 @@
 #    otherwise edit them to zero:
 #
 #     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-# 
+#
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #    Examples:
@@ -547,6 +547,7 @@
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^STDBOOL_H *=/s/@[^@\n]*@//
+/^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDDEF_H *=/s/@[^@\n]*@//
 /^STDINT_H *=/s/@[^@\n]*@/stdint.h/
@@ -600,6 +601,8 @@
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_FALSE@//
+s/^@GL_GENERATE_STDALIGN_H_TRUE@//
+s/^@GL_GENERATE_STDALIGN_H_FALSE@/\#/
 s/^@GL_GENERATE_STDARG_H_TRUE@/\#/
 s/^@GL_GENERATE_STDARG_H_FALSE@/\#/
 s/^@GL_GENERATE_STDDEF_H_TRUE@/\#/

=== modified file 'doc/misc/ChangeLog'
--- doc/misc/ChangeLog	2011-11-25 13:26:30 +0000
+++ doc/misc/ChangeLog	2011-11-29 16:38:21 +0000
@@ -1,3 +1,7 @@
+2011-11-29  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	* texinfo.tex: Sync from gnulib.
+
 2011-11-24  Glenn Morris  <rgm <at> gnu.org>
 
 	* gnus.texi, smtpmail.texi: Fix case of "GnuTLS".

=== modified file 'doc/misc/texinfo.tex'
--- doc/misc/texinfo.tex	2011-09-26 21:30:18 +0000
+++ doc/misc/texinfo.tex	2011-11-29 16:38:21 +0000
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2011-09-23.09}
+\def\texinfoversion{2011-11-09.15}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -116,6 +116,7 @@
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
 \ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
 \ifx\putwordin\undefined        \gdef\putwordin{in}\fi
 \ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
@@ -1194,29 +1195,31 @@
     \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
     \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
     \let\pdfimgext=\empty
     \begingroup
-      \openin 1 #1.png \ifeof 1
-        \openin 1 #1.jpg \ifeof 1
-          \openin 1 #1.jpeg \ifeof 1
-            \openin 1 #1.JPG \ifeof 1
-              \openin 1 #1.pdf \ifeof 1
-                \openin 1 #1.PDF \ifeof 1
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
                   \errhelp = \nopdfimagehelp
                   \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
+                \else \gdef\pdfimgext{JPG}%
                 \fi
-              \else \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{jpeg}%
               \fi
-            \else \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{jpg}%
             \fi
-          \else \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{png}%
           \fi
-        \else \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{PDF}%
         \fi
-      \else \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{pdf}%
       \fi
       \closein 1
     \endgroup
@@ -2372,7 +2375,9 @@
   \else\ifx\next-%
   \else\ifx\next.%
   \else\ptexslash
-  \fi\fi\fi}
+  \fi\fi\fi
+  \aftersmartic
+}
 
 % like \smartslanted except unconditionally uses \ttsl, and no ic.
 % @var is set to this for defun arguments.
@@ -2382,9 +2387,15 @@
 % ttsl for book titles, do we?
 \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2480,7 +2491,7 @@
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2762,6 +2773,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2774,6 +2786,7 @@
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -2979,7 +2992,7 @@
 {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -8103,7 +8116,7 @@
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -8166,6 +8179,8 @@
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo <at> t
 }
 }%end \catcode `\@=11

=== modified file 'lib/gettext.h'
--- lib/gettext.h	2011-02-15 04:53:29 +0000
+++ lib/gettext.h	2011-11-29 16:38:21 +0000
@@ -185,7 +185,7 @@
 #include <string.h>
 
 #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
    /* || __STDC_VERSION__ >= 199901L */ )
 
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS

=== modified file 'lib/gnulib.mk'
--- lib/gnulib.mk	2011-09-26 21:30:18 +0000
+++ lib/gnulib.mk	2011-11-29 16:38:21 +0000
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 environ filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -421,6 +421,29 @@
 
 ## end   gnulib module stat
 
+## begin gnulib module stdalign
+
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+	  cat $(srcdir)/stdalign.in.h; \
+	} > $@-t && \
+	mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+	rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+EXTRA_DIST += stdalign.in.h
+
+## end   gnulib module stdalign
+
 ## begin gnulib module stdarg
 
 BUILT_SOURCES += $(STDARG_H)
@@ -710,7 +733,9 @@
 	      -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
 	      -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
 	      -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+	      -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
 	      -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+	      -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
 	      -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
 	      -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
 	      -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
@@ -736,7 +761,9 @@
 	      -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
 	      -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
 	      -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+	      -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
 	      -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+	      -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
 	      -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
 	      -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
 	      -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
@@ -754,6 +781,7 @@
 	      -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
 	      -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
 	      -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+	      -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
 	      -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
 	      -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
 	      -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
@@ -1004,7 +1032,7 @@
 	      -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
 	      -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
 	      -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
-	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/$(GNULIB_UNISTD_H_GETOPT)/g' \
+	      -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
 	      -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
 	      -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
 	      -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \

=== modified file 'lib/md5.c'
--- lib/md5.c	2011-02-19 07:28:29 +0000
+++ lib/md5.c	2011-11-29 16:38:21 +0000
@@ -24,7 +24,8 @@
 
 #include "md5.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -254,8 +255,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha1.c'
--- lib/sha1.c	2011-05-24 08:12:52 +0000
+++ lib/sha1.c	2011-11-29 16:38:21 +0000
@@ -26,7 +26,8 @@
 
 #include "sha1.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -241,8 +242,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha256.c'
--- lib/sha256.c	2011-11-20 03:48:53 +0000
+++ lib/sha256.c	2011-11-29 16:38:21 +0000
@@ -24,7 +24,8 @@
 
 #include "sha256.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -51,7 +52,7 @@
 
 /*
   Takes a pointer to a 256 bit block of data (eight 32 bit ints) and
-  initializes it to the start constants of the SHA256 algorithm.  This
+  intializes it to the start constants of the SHA256 algorithm.  This
   must be called before using hash in the call to sha256_hash
 */
 void
@@ -373,8 +374,7 @@
   if (len >= 64)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {

=== modified file 'lib/sha512.c'
--- lib/sha512.c	2011-11-20 03:48:53 +0000
+++ lib/sha512.c	2011-11-29 16:38:21 +0000
@@ -24,7 +24,8 @@
 
 #include "sha512.h"
 
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -58,7 +59,7 @@
 
 /*
   Takes a pointer to a 512 bit block of data (eight 64 bit ints) and
-  initializes it to the start constants of the SHA512 algorithm.  This
+  intializes it to the start constants of the SHA512 algorithm.  This
   must be called before using hash in the call to sha512_hash
 */
 void
@@ -381,8 +382,7 @@
   if (len >= 128)
     {
 #if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
       if (UNALIGNED_P (buffer))
         while (len > 128)
           {

=== modified file 'lib/sigprocmask.c'
--- lib/sigprocmask.c	2011-10-07 21:15:00 +0000
+++ lib/sigprocmask.c	2011-11-29 16:38:21 +0000
@@ -344,5 +344,6 @@
       else if (handler != SIG_IGN)
         (*handler) (SIGPIPE);
     }
+  return 0;
 }
 #endif

=== added file 'lib/stdalign.in.h'
--- lib/stdalign.in.h	1970-01-01 00:00:00 +0000
+++ lib/stdalign.in.h	2011-11-29 16:38:21 +0000
@@ -0,0 +1,89 @@
+/* A substitute for ISO C 1x <stdalign.h>.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Paul Eggert and Bruno Haible.  */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+   References:
+   ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+   sections 6.5.3.4, 6.7.5, 7.15.
+   C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+   section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+   requirement of a structure member (i.e., slot or field) that is of
+   type TYPE, as an integer constant expression.
+
+   This differs from GCC's __alignof__ operator, which can yield a
+   better-performing alignment for an object of that type.  For
+   example, on x86 with GCC, __alignof__ (double) and __alignof__
+   (long long) are 8, whereas alignof (double) and alignof (long long)
+   are 4 unless the option '-malign-double' is used.
+
+   The result cannot be used as a value for an 'enum' constant, if you
+   want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
+#include <stddef.h>
+#if defined __cplusplus
+   template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+   to the alignment A, where A is an integer constant expression.  For
+   example:
+
+      int alignas (8) foo;
+      struct s { int a; int alignas (8) bar; };
+
+   aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+   A should be a power of two that is at least the type's alignment
+   and at most the implementation's alignment limit.  This limit is
+   2**28 on typical GNUish hosts, and 2**13 on MSVC.  To be portable
+   to MSVC through at least version 10.0, A should be an integer
+   constant, as MSVC does not support expressions such as 1 << 3.
+   To be portable to Sun C 5.11, do not align auto variables to
+   anything stricter than their default alignment.
+
+   The following draft C1X requirements are not supported here:
+
+     - If A is zero, alignas has no effect.
+     - alignas can be used multiple times; the strictest one wins.
+     - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+   */
+
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec (align (a))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */

=== modified file 'lib/stdlib.in.h'
--- lib/stdlib.in.h	2011-07-24 22:15:47 +0000
+++ lib/stdlib.in.h	2011-11-29 16:38:21 +0000
@@ -247,7 +247,7 @@
 #elif defined GNULIB_POSIXCHECK
 # undef grantpt
 # if HAVE_RAW_DECL_GRANTPT
-_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
                  "use gnulib module grantpt for portability");
 # endif
 #endif
@@ -423,6 +423,22 @@
 # endif
 #endif
 
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal.  Flags should
+   include O_RDWR, and may also include O_NOCTTY.  */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+                 "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
 #if @GNULIB_PTSNAME@
 /* Return the pathname of the pseudo-terminal slave associated with
    the master FD is open on, or NULL on errors.  */
@@ -439,6 +455,32 @@
 # endif
 #endif
 
+#if @GNULIB_PTSNAME_R@
+/* Set the pathname of the pseudo-terminal slave associated with
+   the master FD is open on and return 0, or set errno and return
+   non-zero on errors.  */
+# if @REPLACE_PTSNAME_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ptsname_r
+#   define ptsname_r rpl_ptsname_r
+#  endif
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+# else
+#  if !@HAVE_PTSNAME_R@
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+#  endif
+_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIASWARN (ptsname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname_r
+# if HAVE_RAW_DECL_PTSNAME_R
+_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
+                 "use gnulib module ptsname_r for portability");
+# endif
+#endif
+
 #if @GNULIB_PUTENV@
 # if @REPLACE_PUTENV@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)

=== modified file 'm4/dup2.m4'
--- m4/dup2.m4	2011-09-26 21:30:18 +0000
+++ m4/dup2.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-#serial 16
+#serial 17
 dnl Copyright (C) 2002, 2005, 2007, 2009-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -67,7 +67,9 @@
   m4_ifdef([gl_FUNC_FCHDIR], [
     gl_TEST_FCHDIR
     if test $HAVE_FCHDIR = 0; then
-      REPLACE_DUP2=1
+      if test $HAVE_DUP2 = 1; then
+        REPLACE_DUP2=1
+      fi
     fi
   ])
 ])

=== added file 'm4/environ.m4'
--- m4/environ.m4	1970-01-01 00:00:00 +0000
+++ m4/environ.m4	2011-11-29 16:38:21 +0000
@@ -0,0 +1,47 @@
+# environ.m4 serial 6
+dnl Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_ENVIRON],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  dnl Persuade glibc <unistd.h> to declare environ.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+  gt_CHECK_VAR_DECL(
+    [#if HAVE_UNISTD_H
+     #include <unistd.h>
+     #endif
+     /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
+     #include <stdlib.h>
+    ],
+    [environ])
+  if test $gt_cv_var_environ_declaration != yes; then
+    HAVE_DECL_ENVIRON=0
+  fi
+])
+
+# Check if a variable is properly declared.
+# gt_CHECK_VAR_DECL(includes,variable)
+AC_DEFUN([gt_CHECK_VAR_DECL],
+[
+  define([gt_cv_var], [gt_cv_var_]$2[_declaration])
+  AC_MSG_CHECKING([if $2 is properly declared])
+  AC_CACHE_VAL([gt_cv_var], [
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[$1
+           extern struct { int foo; } $2;]],
+         [[$2.foo = 1;]])],
+      [gt_cv_var=no],
+      [gt_cv_var=yes])])
+  AC_MSG_RESULT([$gt_cv_var])
+  if test $gt_cv_var = yes; then
+    AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1,
+              [Define if you have the declaration of $2.])
+  fi
+  undefine([gt_cv_var])
+])

=== modified file 'm4/getopt.m4'
--- m4/getopt.m4	2011-07-24 22:15:47 +0000
+++ m4/getopt.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-# getopt.m4 serial 38
+# getopt.m4 serial 39
 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -25,8 +25,6 @@
   if test $REPLACE_GETOPT = 1; then
     dnl Arrange for getopt.h to be created.
     gl_GETOPT_SUBSTITUTE_HEADER
-    dnl Arrange for unistd.h to include getopt.h.
-    GNULIB_UNISTD_H_GETOPT=1
   fi
 ])
 

=== modified file 'm4/gl-comp.m4'
--- m4/gl-comp.m4	2011-10-07 21:15:00 +0000
+++ m4/gl-comp.m4	2011-11-29 16:38:21 +0000
@@ -48,6 +48,7 @@
   # Code from module dosname:
   # Code from module dtoastr:
   # Code from module dup2:
+  # Code from module environ:
   # Code from module extensions:
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   # Code from module filemode:
@@ -76,6 +77,7 @@
   # Code from module socklen:
   # Code from module ssize_t:
   # Code from module stat:
+  # Code from module stdalign:
   # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
@@ -130,6 +132,8 @@
   gl_PREREQ_DUP2
 fi
 gl_UNISTD_MODULE_INDICATOR([dup2])
+gl_ENVIRON
+gl_UNISTD_MODULE_INDICATOR([environ])
 gl_FILEMODE
 gl_GETLOADAVG
 if test $HAVE_GETLOADAVG = 0; then
@@ -142,14 +146,20 @@
   AC_LIBOBJ([getopt])
   AC_LIBOBJ([getopt1])
   gl_PREREQ_GETOPT
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_GL_UNISTD_H_GETOPT=1
 fi
+AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
 gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
 gl_FUNC_GETOPT_POSIX
 if test $REPLACE_GETOPT = 1; then
   AC_LIBOBJ([getopt])
   AC_LIBOBJ([getopt1])
   gl_PREREQ_GETOPT
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_GL_UNISTD_H_GETOPT=1
 fi
+AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
 AC_REQUIRE([AC_C_INLINE])
 gl_INTTYPES_INCOMPLETE
 gl_FUNC_LSTAT
@@ -180,6 +190,7 @@
 gl_SIGNAL_H
 gl_TYPE_SOCKLEN_T
 gt_TYPE_SSIZE_T
+gl_STDALIGN_H
 gl_STDARG_H
 AM_STDBOOL_H
 gl_STDDEF_H
@@ -311,18 +322,18 @@
   if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
     func_gl_gnulib_m4code_stat
   fi
-  if test $ac_cv_func_strtoimax = no; then
-    func_gl_gnulib_m4code_verify
-  fi
   if test $ac_cv_func_strtoimax = no && test $ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
   fi
-  if test $ac_cv_func_strtoumax = no; then
+  if test $ac_cv_func_strtoimax = no; then
     func_gl_gnulib_m4code_verify
   fi
   if test $ac_cv_func_strtoumax = no && test $ac_cv_type_unsigned_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoull
   fi
+  if test $ac_cv_func_strtoumax = no; then
+    func_gl_gnulib_m4code_verify
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
@@ -513,6 +524,7 @@
   lib/signal.in.h
   lib/sigprocmask.c
   lib/stat.c
+  lib/stdalign.in.h
   lib/stdarg.in.h
   lib/stdbool.in.h
   lib/stddef.in.h
@@ -538,6 +550,7 @@
   m4/alloca.m4
   m4/c-strtod.m4
   m4/dup2.m4
+  m4/environ.m4
   m4/extensions.m4
   m4/filemode.m4
   m4/getloadavg.m4
@@ -563,6 +576,7 @@
   m4/ssize_t.m4
   m4/st_dm_mode.m4
   m4/stat.m4
+  m4/stdalign.m4
   m4/stdarg.m4
   m4/stdbool.m4
   m4/stddef_h.m4

=== modified file 'm4/gnulib-common.m4'
--- m4/gnulib-common.m4	2011-10-07 21:15:00 +0000
+++ m4/gnulib-common.m4	2011-11-29 16:38:21 +0000
@@ -18,7 +18,7 @@
 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
       || 0x5110 <= __SUNPRO_C)
 #  define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= _MSC_VER
+# elif defined _MSC_VER && 1200 <= _MSC_VER
 #  define _Noreturn __declspec (noreturn)
 # else
 #  define _Noreturn

=== modified file 'm4/include_next.m4'
--- m4/include_next.m4	2011-09-26 21:30:18 +0000
+++ m4/include_next.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-# include_next.m4 serial 22
+# include_next.m4 serial 23
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -219,12 +219,17 @@
                    gl_dirsep_regex='[/\\]'
                    ;;
                  *)
-                   gl_dirsep_regex='/'
+                   gl_dirsep_regex='\/'
                    ;;
                esac
+               dnl A sed expression that turns a string into a basic regular
+               dnl expression, for use within "/.../".
+               gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
 changequote([,])
-               gl_absolute_header_sed='\|'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[|{
-                   s|.*"\(.*'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[\)".*|\1|
+               gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+                                        | sed -e "$gl_make_literal_regex_sed"`
+               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
 changequote(,)dnl
                    s|^/[^/]|//&|
 changequote([,])dnl

=== modified file 'm4/pthread_sigmask.m4'
--- m4/pthread_sigmask.m4	2011-09-03 23:08:32 +0000
+++ m4/pthread_sigmask.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,6 +6,8 @@
 
 AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
 [
+  AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
   AC_CHECK_FUNCS_ONCE([pthread_sigmask])
   LIB_PTHREAD_SIGMASK=
 

=== added file 'm4/stdalign.m4'
--- m4/stdalign.m4	1970-01-01 00:00:00 +0000
+++ m4/stdalign.m4	2011-11-29 16:38:21 +0000
@@ -0,0 +1,22 @@
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+  AC_CHECK_HEADERS_ONCE([stdalign.h])
+
+  if test $ac_cv_header_stdalign_h = yes; then
+    STDALIGN_H=''
+  else
+    STDALIGN_H='stdalign.h'
+  fi
+
+  AC_SUBST([STDALIGN_H])
+  AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])

=== modified file 'm4/stdlib_h.m4'
--- m4/stdlib_h.m4	2011-02-25 07:36:37 +0000
+++ m4/stdlib_h.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 37
+# stdlib_h.m4 serial 39
 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -19,10 +19,10 @@
 #if HAVE_RANDOM_H
 # include <random.h>
 #endif
-    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
-    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
-    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
-    unsetenv])
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+    initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt
+    ptsname ptsname_r random_r realpath rpmatch setenv setstate_r srandom_r
+    strtod strtoll strtoull unlockpt unsetenv])
 ])
 
 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
@@ -50,7 +50,9 @@
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
   GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
+  GNULIB_PTSNAME_R=0;     AC_SUBST([GNULIB_PTSNAME_R])
   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
   GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
@@ -76,7 +78,9 @@
   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
+  HAVE_PTSNAME_R=1;          AC_SUBST([HAVE_PTSNAME_R])
   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
@@ -95,6 +99,7 @@
   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
   REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
+  REPLACE_PTSNAME_R=0;       AC_SUBST([REPLACE_PTSNAME_R])
   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])

=== modified file 'm4/unistd_h.m4'
--- m4/unistd_h.m4	2011-09-26 21:30:18 +0000
+++ m4/unistd_h.m4	2011-11-29 16:38:21 +0000
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 61
+# unistd_h.m4 serial 62
 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -98,7 +98,6 @@
   GNULIB_SYMLINK=0;              AC_SUBST([GNULIB_SYMLINK])
   GNULIB_SYMLINKAT=0;            AC_SUBST([GNULIB_SYMLINKAT])
   GNULIB_TTYNAME_R=0;            AC_SUBST([GNULIB_TTYNAME_R])
-  GNULIB_UNISTD_H_GETOPT=0;      AC_SUBST([GNULIB_UNISTD_H_GETOPT])
   GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
   GNULIB_UNISTD_H_SIGPIPE=0;     AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
   GNULIB_UNLINK=0;               AC_SUBST([GNULIB_UNLINK])






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 17:33:02 GMT) Full text and rfc822 format available.

Message #44 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: mario <at> lassnig.net, 9960 <at> debbugs.gnu.org, cyd <at> gnu.org, 9772 <at> debbugs.gnu.org,
	10155 <at> debbugs.gnu.org, monnier <at> IRO.UMontreal.CA
Subject: Re: bug#10155: OSX breakage
Date: Tue, 29 Nov 2011 19:30:30 +0200
> Date: Tue, 29 Nov 2011 08:58:34 -0800
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> CC: Chong Yidong <cyd <at> gnu.org>, mario <at> lassnig.net, 9772 <at> debbugs.gnu.org, 
>  9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org, 
>  Eli Zaretskii <eliz <at> gnu.org>
> 
> You're right, on further thought Emacs itself needn't use stdalign,
> and I've prepared a simpler patch (below) that omits all changes to
> src/*.  Gnulib now uses stdalign, though, and Emacs uses
> multiple Gnulib modules such as sha256 that use stdalign, so
> this patch still brings in the stdalign module for Gnulib's own
> purposes.

I understand that the only part needed for solving the problems with
the missing declaration of `environ' is this:

> === added file 'm4/environ.m4'
> --- m4/environ.m4	1970-01-01 00:00:00 +0000
> +++ m4/environ.m4	2011-11-29 16:38:21 +0000
> @@ -0,0 +1,47 @@
> +# environ.m4 serial 6
> +dnl Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
> +dnl This file is free software; the Free Software Foundation
> +dnl gives unlimited permission to copy and/or distribute it,
> +dnl with or without modifications, as long as this notice is preserved.
> +
> +AC_DEFUN_ONCE([gl_ENVIRON],
> +[
> +  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
> +  dnl Persuade glibc <unistd.h> to declare environ.
> +  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
> +
> +  AC_CHECK_HEADERS_ONCE([unistd.h])
> +  gt_CHECK_VAR_DECL(
> +    [#if HAVE_UNISTD_H
> +     #include <unistd.h>
> +     #endif
> +     /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
> +     #include <stdlib.h>
> +    ],
> +    [environ])
> +  if test $gt_cv_var_environ_declaration != yes; then
> +    HAVE_DECL_ENVIRON=0
> +  fi
> +])

IOW, the reason why lib/unistd.in.h didn't do its job is that
HAVE_DECL_ENVIRON was not defined to zero.

If that is true, I wonder if we could have a much smaller change that
fixes just that single problem.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Tue, 29 Nov 2011 18:25:01 GMT) Full text and rfc822 format available.

Message #47 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: mario <at> lassnig.net, 9960 <at> debbugs.gnu.org, cyd <at> gnu.org, 9772 <at> debbugs.gnu.org,
	10155 <at> debbugs.gnu.org, monnier <at> IRO.UMontreal.CA
Subject: Re: bug#10155: OSX breakage
Date: Tue, 29 Nov 2011 10:22:19 -0800
On 11/29/11 09:30, Eli Zaretskii wrote:
> I wonder if we could have a much smaller change that
> fixes just that single problem.

Yes we could, though it would involve more of the patch
than the part that you've identified, and it would involve
some other stuff done by hand.  The simplest way to think
about it is, I expect, is that it would be a fork of gnulib.
I could look into preparing such a patch but it would take
some time and would introduce other reliability concerns,
so I hope I don't have to do that....




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 02:28:02 GMT) Full text and rfc822 format available.

Message #50 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: mario <at> lassnig.net, Paul Eggert <eggert <at> cs.ucla.edu>, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: OSX breakage
Date: Wed, 30 Nov 2011 10:27:16 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> Here's a proposed patch to fix that, by having Emacs use Gnulib's
>> environ module.  This syncs from Gnulib, and so it also brings
>> in the patches for Bug#9772 and Bug#9960.  (It is possible to
>> pull out just the environ fix by hand, but that's an error-prone process
>> and I'd rather avoid it.)  I have tested this on Fedora 15,
>> but not on OSX nor on Windows.
>
> FWIW, I'd very much prefer not to install such large changes a day or
> two before the next pretest.  If the only practical way of fixing this
> within gnulib is the proposed changeset, I'd say let's just add a
> declaration of environ conditioned on OS X and FreeBSD.  I don't like
> this solution, but I think on balance it has less potential for
> destabilizing the build.

Agreed.  Paul, can you pick out just the environ fix?  If not, we should
go with the ifdefs as Eli suggested, and leave any Gnulib synch for
post-24.1.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 02:46:02 GMT) Full text and rfc822 format available.

Message #53 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: mario <at> lassnig.net, Eli Zaretskii <eliz <at> gnu.org>, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: bug#9772: bug#10155: OSX breakage
Date: Wed, 30 Nov 2011 10:45:42 +0800
Paul Eggert <eggert <at> cs.ucla.edu> writes:

> On 11/29/11 09:30, Eli Zaretskii wrote:
>> I wonder if we could have a much smaller change that
>> fixes just that single problem.
>
> Yes we could, though it would involve more of the patch
> than the part that you've identified, and it would involve
> some other stuff done by hand.  The simplest way to think
> about it is, I expect, is that it would be a fork of gnulib.
> I could look into preparing such a patch but it would take
> some time and would introduce other reliability concerns,
> so I hope I don't have to do that....

OK, then let's go with the ifdef conditioning directly in the Emacs
sources.

But is conditioning on OS X and FreeBSD the right thing?  We don't know
if it fails on other BSDs.  Since revno 106533 was intended to fix the
MS-WINDOWS build, I think it's better to condition it for WINDOWSNT for
now, as below:

Eli, WDYT?

=== modified file 'lib-src/emacsclient.c'
*** lib-src/emacsclient.c	2011-11-27 18:52:53 +0000
--- lib-src/emacsclient.c	2011-11-30 02:44:47 +0000
***************
*** 1635,1640 ****
--- 1635,1645 ----
    /* Send over our environment and current directory. */
    if (!current_frame)
      {
+ #ifndef WINDOWSNT
+       /* This is defined in stdlib.h on MS-Windows.  It's defined in
+ 	 unistd.h on some POSIX hosts, but not all (Bug#10155).  */
+       extern char **environ;
+ #endif
        int i;
        for (i = 0; environ[i]; i++)
          {





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 04:06:02 GMT) Full text and rfc822 format available.

Message #56 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Chong Yidong <cyd <at> gnu.org>
Cc: mario <at> lassnig.net, eggert <at> cs.ucla.edu, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: bug#9772: bug#10155: OSX breakage
Date: Wed, 30 Nov 2011 06:04:20 +0200
> From: Chong Yidong <cyd <at> gnu.org>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  mario <at> lassnig.net,  9960 <at> debbugs.gnu.org,  9772 <at> debbugs.gnu.org,  10155 <at> debbugs.gnu.org
> Date: Wed, 30 Nov 2011 10:45:42 +0800
> 
> OK, then let's go with the ifdef conditioning directly in the Emacs
> sources.
> 
> But is conditioning on OS X and FreeBSD the right thing?  We don't know
> if it fails on other BSDs.  Since revno 106533 was intended to fix the
> MS-WINDOWS build, I think it's better to condition it for WINDOWSNT for
> now, as below:
> 
> Eli, WDYT?

Fine with me.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 08:15:02 GMT) Full text and rfc822 format available.

Message #59 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: mario <at> lassnig.net, eggert <at> cs.ucla.edu, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: bug#9772: bug#10155: OSX breakage
Date: Wed, 30 Nov 2011 16:14:28 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> OK, then let's go with the ifdef conditioning directly in the Emacs
>> sources.
>>
>> But is conditioning on OS X and FreeBSD the right thing?  We don't know
>> if it fails on other BSDs.  Since revno 106533 was intended to fix the
>> MS-WINDOWS build, I think it's better to condition it for WINDOWSNT for
>> now, as below:
>>
>> Eli, WDYT?
>
> Fine with me.

Done.  Could someone check if compilation on Mac OS X works now?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 17:49:02 GMT) Full text and rfc822 format available.

Message #62 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Jan Djärv <jan.h.d <at> swipnet.se>
To: Chong Yidong <cyd <at> gnu.org>
Cc: mario <at> lassnig.net, eggert <at> cs.ucla.edu, 9960 <at> debbugs.gnu.org,
	9772 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#10155: bug#9772: bug#10155: OSX breakage
Date: Wed, 30 Nov 2011 18:48:49 +0100
30 nov 2011 kl. 09:14 skrev Chong Yidong:

> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
>>> OK, then let's go with the ifdef conditioning directly in the Emacs
>>> sources.
>>> 
>>> But is conditioning on OS X and FreeBSD the right thing?  We don't know
>>> if it fails on other BSDs.  Since revno 106533 was intended to fix the
>>> MS-WINDOWS build, I think it's better to condition it for WINDOWSNT for
>>> now, as below:
>>> 
>>> Eli, WDYT?
>> 
>> Fine with me.
> 
> Done.  Could someone check if compilation on Mac OS X works now?
> 
> 


It does.

	Jan D.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Wed, 30 Nov 2011 17:52:02 GMT) Full text and rfc822 format available.

Message #65 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Mario Lassnig <mario <at> lassnig.net>
To: Chong Yidong <cyd <at> gnu.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, eggert <at> cs.ucla.edu, 9772 <at> debbugs.gnu.org,
	9960 <at> debbugs.gnu.org, 10155 <at> debbugs.gnu.org
Subject: Re: bug#9772: bug#10155: OSX breakage
Date: Wed, 30 Nov 2011 12:15:10 +0100
On 11-11-30 9:14 , Chong Yidong wrote:
> Eli Zaretskii<eliz <at> gnu.org>  writes:
>
>>> OK, then let's go with the ifdef conditioning directly in the Emacs
>>> sources.
>>>
>>> But is conditioning on OS X and FreeBSD the right thing?  We don't know
>>> if it fails on other BSDs.  Since revno 106533 was intended to fix the
>>> MS-WINDOWS build, I think it's better to condition it for WINDOWSNT for
>>> now, as below:
>>>
>>> Eli, WDYT?
>>
>> Fine with me.
>
> Done.  Could someone check if compilation on Mac OS X works now?

Looks good to me. Compiles, installs, runs. :-)

Thanks,
Mario





Mario <at> shodan:~/Development/emacs$ bzr clone 
bzr://bzr.savannah.gnu.org/emacs/trunk/
The command 'bzr clone' has been deprecated in bzr 2.4. Please use 'bzr 
branch' instead.
Branched 106554 revision(s). 

Mario <at> shodan:~/Development/emacs$ cd trunk/
Mario <at> shodan:~/Development/emacs/trunk$ echo $CFLAGS
-march=core2 -msse4.1
Mario <at> shodan:~/Development/emacs/trunk$ echo $CC

Mario <at> shodan:~/Development/emacs/trunk$ which gcc
/usr/bin/gcc
Mario <at> shodan:~/Development/emacs/trunk$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 
5658) (LLVM build 2336.1.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Mario <at> shodan:~/Development/emacs/trunk$ sh autogen.sh
Checking whether you have the necessary tools...
(Read INSTALL.BZR for more details on building Emacs)

Checking for autoconf (need at least version 2.65)...
ok
Checking for automake (need at least version 1.11)...
ok
Your system has the required tools, running autoreconf...
configure.in:635: installing `build-aux/compile'
configure.in:379: installing `build-aux/config.guess'
configure.in:379: installing `build-aux/config.sub'
configure.in:29: installing `build-aux/install-sh'
configure.in:29: installing `build-aux/missing'
lib/Makefile.am: installing `build-aux/depcomp'
You can now run `./configure'.
Mario <at> shodan:~/Development/emacs/trunk$ ./configure --with-ns

<snip>

Configured for `x86_64-apple-darwin11.2.0'.

  Where should the build process find the source code? 
/Users/Mario/Development/emacs/trunk
  What operating system and machine description files should Emacs use?
        `s/darwin.h' and `m/amdx86-64.h'
  What compiler should emacs be built with?               gcc 
-std=gnu99 -march=core2 -msse4.1
  Should Emacs use the GNU version of malloc?             no
    (The GNU allocators don't work with this system configuration.)
  Should Emacs use a relocating allocator for buffers?    no
  Should Emacs use mmap(2) for buffer allocation?         no
  What window system should Emacs use?                    nextstep
  What toolkit should Emacs use?                          none
  Where do we find X Windows header files?                Standard dirs
  Where do we find X Windows libraries?                   /usr/X11/lib
  Does Emacs use -lXaw3d?                                 no
  Does Emacs use -lXpm?                                   no
  Does Emacs use -ljpeg?                                  no
  Does Emacs use -ltiff?                                  no
  Does Emacs use a gif library?                           no
  Does Emacs use -lpng?                                   no
  Does Emacs use -lrsvg-2?                                yes
  Does Emacs use imagemagick?                             no
  Does Emacs use -lgpm?                                   no
  Does Emacs use -ldbus?                                  no
  Does Emacs use -lgconf?                                 no
  Does Emacs use GSettings?                               no
  Does Emacs use -lselinux?                               no
  Does Emacs use -lgnutls?                                yes
  Does Emacs use -lxml2?                                  yes
  Does Emacs use -lfreetype?                              no
  Does Emacs use -lm17n-flt?                              no
  Does Emacs use -lotf?                                   no
  Does Emacs use -lxft?                                   no
  Does Emacs use toolkit scroll bars?                     yes





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Thu, 01 Dec 2011 16:14:02 GMT) Full text and rfc822 format available.

Message #68 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: mario <at> lassnig.net
Cc: Eli Zaretskii <eliz <at> gnu.org>, Chong Yidong <cyd <at> gnu.org>,
	9772 <at> debbugs.gnu.org, 9960 <at> debbugs.gnu.org, 10155-done <at> debbugs.gnu.org
Subject: Re: bug#9772: bug#10155: OSX breakage
Date: Thu, 01 Dec 2011 08:12:57 -0800
On 11/30/11 03:15, Mario Lassnig wrote:
> Looks good to me. Compiles, installs, runs. 

Thanks for checking.  I'll mark Bug#10155 as done since the bug
itself is fixed.  The cleaner fix for 'environ' can wait until
after Emacs 24 is out.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9772; Package emacs. (Sat, 28 Jul 2012 23:29:02 GMT) Full text and rfc822 format available.

Message #71 received at 9772 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 9772 <at> debbugs.gnu.org
Cc: Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: <stdalign.h>, USE_LSB_TAG, and MSVC
Date: Sat, 28 Jul 2012 16:21:08 -0700
I merged this patch into the Emacs trunk as bzr 109252.




bug marked as fixed in version 24.3, send any further explanations to 9772 <at> debbugs.gnu.org and Paul Eggert <eggert <at> cs.ucla.edu> Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Fri, 17 Aug 2012 22:28:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 15 Sep 2012 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 245 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.