[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r21613 - in /fsf/trunk/libc: ./ catgets/ csu/ debug/ elf/ iconv/ locale/programs/ login/programs/ malloc/ manual/ nscd/ nss/...



Author: eglibc
Date: Fri Nov  9 22:22:50 2012
New Revision: 21613

Log:
Import glibc-mainline for 2012-11-09

Added:
    fsf/trunk/libc/ports/ChangeLog.aarch64
    fsf/trunk/libc/ports/sysdeps/aarch64/
    fsf/trunk/libc/ports/sysdeps/aarch64/Implies
    fsf/trunk/libc/ports/sysdeps/aarch64/Makefile
    fsf/trunk/libc/ports/sysdeps/aarch64/__longjmp.S
    fsf/trunk/libc/ports/sysdeps/aarch64/backtrace.c
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/atomic.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/endian.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/link.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/linkmap.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/mathdef.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bits/setjmp.h
    fsf/trunk/libc/ports/sysdeps/aarch64/bsd-_setjmp.S
    fsf/trunk/libc/ports/sysdeps/aarch64/bsd-setjmp.S
    fsf/trunk/libc/ports/sysdeps/aarch64/crti.S
    fsf/trunk/libc/ports/sysdeps/aarch64/crtn.S
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-irel.h
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-link.sym
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-machine.h
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-sysdep.h
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-tls.h
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-tlsdesc.S
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-tlsdesc.h
    fsf/trunk/libc/ports/sysdeps/aarch64/dl-trampoline.S
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fedisblxcpt.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/feenablxcpt.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fegetenv.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fegetexcept.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fegetround.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/feholdexcpt.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fesetenv.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fesetround.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/feupdateenv.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fgetexcptflg.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fpu_control.h
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fraiseexcpt.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/fsetexcptflg.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/ftestexcept.c
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/get-rounding-mode.h
    fsf/trunk/libc/ports/sysdeps/aarch64/fpu/s_fma.c
    fsf/trunk/libc/ports/sysdeps/aarch64/jmpbuf-offsets.h
    fsf/trunk/libc/ports/sysdeps/aarch64/jmpbuf-unwind.h
    fsf/trunk/libc/ports/sysdeps/aarch64/ldsodefs.h
    fsf/trunk/libc/ports/sysdeps/aarch64/libc-tls.c
    fsf/trunk/libc/ports/sysdeps/aarch64/libm-test-ulps
    fsf/trunk/libc/ports/sysdeps/aarch64/machine-gmon.h
    fsf/trunk/libc/ports/sysdeps/aarch64/memusage.h
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/Makefile
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/pthread_spin_lock.c
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/pthreaddef.h
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/tcb-offsets.sym
    fsf/trunk/libc/ports/sysdeps/aarch64/nptl/tls.h
    fsf/trunk/libc/ports/sysdeps/aarch64/preconfigure
    fsf/trunk/libc/ports/sysdeps/aarch64/setjmp.S
    fsf/trunk/libc/ports/sysdeps/aarch64/shlib-versions
    fsf/trunk/libc/ports/sysdeps/aarch64/soft-fp/
    fsf/trunk/libc/ports/sysdeps/aarch64/soft-fp/Makefile
    fsf/trunk/libc/ports/sysdeps/aarch64/soft-fp/e_sqrtl.c
    fsf/trunk/libc/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
    fsf/trunk/libc/ports/sysdeps/aarch64/sotruss-lib.c
    fsf/trunk/libc/ports/sysdeps/aarch64/stackinfo.h
    fsf/trunk/libc/ports/sysdeps/aarch64/start.S
    fsf/trunk/libc/ports/sysdeps/aarch64/sysdep.h
    fsf/trunk/libc/ports/sysdeps/aarch64/tls-macros.h
    fsf/trunk/libc/ports/sysdeps/aarch64/tlsdesc.c
    fsf/trunk/libc/ports/sysdeps/aarch64/tlsdesc.sym
    fsf/trunk/libc/ports/sysdeps/aarch64/tst-audit.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/Implies
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/Makefile
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/Versions
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/__read_tp.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/bits/
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/bits/libc-vdso.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/bits/mman.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/configure
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/init-first.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/ldconfig.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/libc-__read_tp.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/makecontext.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/mmap.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/bits/
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/bits/local_lim.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/bits/semaphore.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/c++-types.data
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/clone.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/createthread.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/fork.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/ld.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libBrokenLocale.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libanl.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libdl.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libm.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libnsl.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libresolv.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/librt.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libthread_db.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libutil.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/pt-vfork.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/pthread_once.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/vfork.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/profil-counter.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sigaction.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/elf.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sys/user.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S
    fsf/trunk/libc/timezone/version.h
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/INSTALL
    fsf/trunk/libc/Makefile
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/aclocal.m4
    fsf/trunk/libc/catgets/gencat.c
    fsf/trunk/libc/config.h.in
    fsf/trunk/libc/config.make.in
    fsf/trunk/libc/configure
    fsf/trunk/libc/configure.in
    fsf/trunk/libc/csu/version.c
    fsf/trunk/libc/debug/Makefile
    fsf/trunk/libc/debug/catchsegv.sh
    fsf/trunk/libc/debug/pcprofiledump.c
    fsf/trunk/libc/debug/xtrace.sh
    fsf/trunk/libc/elf/Makefile
    fsf/trunk/libc/elf/dl-close.c
    fsf/trunk/libc/elf/ldconfig.c
    fsf/trunk/libc/elf/ldd.bash.in
    fsf/trunk/libc/elf/pldd.c
    fsf/trunk/libc/elf/sln.c
    fsf/trunk/libc/elf/sotruss.ksh
    fsf/trunk/libc/elf/sprof.c
    fsf/trunk/libc/iconv/iconv_prog.c
    fsf/trunk/libc/iconv/iconvconfig.c
    fsf/trunk/libc/locale/programs/locale.c
    fsf/trunk/libc/locale/programs/localedef.c
    fsf/trunk/libc/login/programs/pt_chown.c
    fsf/trunk/libc/malloc/Makefile
    fsf/trunk/libc/malloc/memusage.sh
    fsf/trunk/libc/malloc/memusagestat.c
    fsf/trunk/libc/malloc/mtrace.pl
    fsf/trunk/libc/manual/Makefile
    fsf/trunk/libc/manual/install.texi
    fsf/trunk/libc/manual/libc.texinfo
    fsf/trunk/libc/nscd/nscd.c
    fsf/trunk/libc/nss/getent.c
    fsf/trunk/libc/nss/makedb.c
    fsf/trunk/libc/posix/getconf.c
    fsf/trunk/libc/stdlib/stdlib.h
    fsf/trunk/libc/sunrpc/clnt_tcp.c
    fsf/trunk/libc/sunrpc/clnt_udp.c
    fsf/trunk/libc/sunrpc/clnt_unix.c
    fsf/trunk/libc/sunrpc/proto.h
    fsf/trunk/libc/sunrpc/rpc_main.c
    fsf/trunk/libc/sunrpc/rpcinfo.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/lddlibc4.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
    fsf/trunk/libc/timezone/README
    fsf/trunk/libc/timezone/checktab.awk
    fsf/trunk/libc/timezone/ialloc.c
    fsf/trunk/libc/timezone/private.h
    fsf/trunk/libc/timezone/scheck.c
    fsf/trunk/libc/timezone/tzfile.h
    fsf/trunk/libc/timezone/tzselect.ksh
    fsf/trunk/libc/timezone/zdump.c
    fsf/trunk/libc/timezone/zic.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Fri Nov  9 22:22:50 2012
@@ -1,3 +1,143 @@
+2012-11-09  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* aclocal.m4 (ACX_PKGVERSION): New macro.
+	(ACX_BUGURL): Likewise.
+	* configure.in: Use ACX_PKGVERSION and ACX_BUGURL.
+	(PKGVERSION): New AC_DEFINE_UNQUOTED.
+	(REPORT_BUGS_TO): Likewise.
+	* configure: Regenerated.
+	* config.h.in (PKGVERSION): New macro.
+	(REPORT_BUGS_TO): Likewise.
+	* config.make.in (PKGVERSION): New variable.
+	(PKGVERSION_TEXI): Likewise.
+	(REPORT_BUGS_TO): Likewise.
+	(REPORT_BUGS_TEXI): Likewise.
+	* Makefile (format-me): Use -I$(common-objpfx)manual.
+	(INSTALL): Depend on $(common-objpfx)manual/pkgvers.texi.
+	($(common-objpfx)manual/%): New target.
+	(manual/%): Remove target.
+	* catgets/gencat.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* csu/version.c (banner): Use PKGVERSION and REPORT_BUGS_TO.
+	* debug/Makefile ($(objpfx)catchsegv): Also substitute PKGVERSION
+	and REPORT_BUGS_TO.
+	($(objpfx)xtrace): Likewise.
+	* debug/catchsegv.sh: Use PKGVERSION and REPORT_BUGS_TO.
+	* debug/pcprofiledump.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* debug/xtrace.sh (do_help): Use REPORT_BUGS_TO.
+	(do_version): Use PKGVERSION.
+	* elf/Makefile ($(objpfx)sotruss): Also substitute PKGVERSION and
+	REPORT_BUGS_TO.
+	(common-ldd-rewrite): Likewise.
+	* elf/dl-close.c (_dl_close_worker): Use REPORT_BUGS_TO.
+	* elf/ldconfig.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* elf/ldd.bash.in: Use PKGVERSION and REPORT_BUGS_TO.
+	* elf/pldd.c (argp_program_bug_address): Remove variable.
+	(more_help): New function.
+	(argp): Use more_help.
+	(print_version): Use PKGVERSION.
+	* elf/sln.c (main): Use PKGVERSION.
+	(usage): Use REPORT_BUGS_TO.
+	* elf/sotruss.ksh (do_help): Use REPORT_BUGS_TO.
+	(top level): Use PKGVERSION.
+	* elf/sprof.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* iconv/iconv_prog.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* iconv/iconvconfig.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* locale/programs/locale.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* locale/programs/localedef.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* login/programs/pt_chown.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* malloc/Makefile ($(objpfx)mtrace): Also substitute PKGVERSION
+	and BUGURL.
+	($(objpfx)memusage): Likewise.
+	* malloc/memusage.sh (do_help): Use REPORT_BUGS_TO.
+	(do_version): Use PKGVERSION.
+	* malloc/memusagestat.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* malloc/mtrace.pl ($PACKAGE): Remove variable.
+	($PKGVERSION): New variable.
+	($REPORT_BUGS_TO): Likewise.
+	(usage): Use $REPORT_BUGS_TO.
+	(top level): Use $PKGVERSION.
+	* manual/Makefile (libc-texi-generated): Add pkgvers.texi.
+	($(objpfx)pkgvers.texi): New rule.
+	($(objpfx)stamp-pkgvers): Likewise.
+	* manual/install.texi: Include pkgvers.texi.
+	(--with-pkgversion): Document new configure option.
+	(--with-bugurl): Likewise.
+	(Reporting Bugs): Describe Bugzilla as upstream tracker rather
+	than necessarily for this particular distribution.  Use
+	REPORT_BUGS_TO for where to report bugs.
+	* INSTALL: Regenerated.
+	* manual/libc.texinfo: Include pkgvers.texi.
+	[!PKGVERSION_DEFAULT]: Include PKGVERSION in version information.
+	* nscd/nscd.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* nss/getent.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* nss/makedb.c (more_help): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* posix/getconf.c (main): Use PKGVERSION and REPORT_BUGS_TO.
+	* sunrpc/proto.h [IS_IN_build] (_libc_intl_domainname): Remove
+	macro.
+	* sunrpc/rpc_main.c (options_usage): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* sunrpc/rpcinfo.c (usage): Use REPORT_BUGS_TO.
+	(print_version): Use PKGVERSION.
+	* sysdeps/unix/sysv/linux/lddlibc4.c (main): Use REPORT_BUGS_TO
+	and PKGVERSION.
+
+	* timezone/checktab.awk: Update from tzcode 2012i.
+	* timezone/ialloc.c: Likewise.
+	* timezone/private.h: Likewise.
+	* timezone/scheck.c: Likewise.
+	* timezone/tzfile.h: Likewise.
+	* timezone/tzselect.ksh: Merge in changes from tzcode 2012i.
+	(TZVERSION): Hardcode tzcode version number.
+	* timezone/zdump.c: Update from tzcode 2012i.
+	* timezone/zic.c: Likewise.
+	* timezone/version.h: New file.
+	* timezone/README: Describe version.h.  Update upstream location.
+
+	[BZ #14824]
+	* stdlib/stdlib.h [__USE_XOPEN_EXTENDED && __USE_XOPEN2K]
+	(mktemp): Enable declaration.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K] (ecvt): Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K] (fcvt): Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K] (gcvt): Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (qecvt):
+	Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (qfcvt):
+	Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (qgcvt):
+	Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (ecvt_r):
+	Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (fcvt_r):
+	Likewise.
+	[__USE_XOPEN_EXTENDED && __USE_XOPEN2K && __USE_MISC] (gcvt_r):
+	Likewise.
+
+	[BZ #14821]
+	* sunrpc/clnt_tcp.c (clnttcp_control): Access values at fixed
+	offset in buffer as u_int32_t not u_long.  Consistently use memcpy
+	for copies of such integer values.
+	* sunrpc/clnt_udp.c (clntudp_control): Likewise.
+	* sunrpc/clnt_unix.c (clntunix_control): Likewise.
+
+2012-11-09  Andreas Jaeger  <aj@xxxxxxx>
+
+	* sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Remove all
+	definitions and declarations that are provided by
+	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
+
 2012-11-08  Andreas Krebbel  <Andreas.Krebbel@xxxxxxxxxx>
 
         * sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add "te".

Modified: fsf/trunk/libc/INSTALL
==============================================================================
--- fsf/trunk/libc/INSTALL (original)
+++ fsf/trunk/libc/INSTALL Fri Nov  9 22:22:50 2012
@@ -147,6 +147,19 @@
      CFLAGS.
 
      If you specify just `--build', `configure' will get confused.
+
+`--with-pkgversion=VERSION'
+     Specify a description, possibly including a build number or build
+     date, of the binaries being built, to be included in `--version'
+     output from programs installed with the GNU C Library.  For
+     example, `--with-pkgversion='FooBar GNU/Linux glibc build 123''.
+     The default value is `GNU libc'.
+
+`--with-bugurl=URL'
+     Specify the URL that users should visit if they wish to report a
+     bug, to be included in `--help' output from programs installed with
+     the GNU C Library.  The default value refers to the main
+     bug-reporting information for the GNU C Library.
 
    To build the library and related programs, type `make'.  This will
 produce a lot of output, some of which may look like errors from `make'
@@ -404,10 +417,10 @@
 
    It is a good idea to verify that the problem has not already been
 reported.  Bugs are documented in two places: The file `BUGS' describes
-a number of well known bugs and the bug tracking system has a WWW
-interface at `http://sourceware.org/bugzilla/'.  The WWW interface
-gives you access to open and closed reports.  A closed report normally
-includes a patch or a hint on solving the problem.
+a number of well known bugs and the central GNU C Library bug tracking
+system has a WWW interface at `http://sourceware.org/bugzilla/'.  The
+WWW interface gives you access to open and closed reports.  A closed
+report normally includes a patch or a hint on solving the problem.
 
    To report a bug, first you must find it.  With any luck, this will
 be the hard part.  Once you've found a bug, make sure it's really a
@@ -428,7 +441,7 @@
 call, if possible.  This should not be too difficult.
 
    The final step when you have a simple test case is to report the bug.
-Do this using the WWW interface to the bug database.
+Do this at `http://www.gnu.org/software/libc/bugs.html'.
 
    If you are not sure how a function should behave, and this manual
 doesn't tell you, that's a bug in the manual.  Report that too!  If the

Modified: fsf/trunk/libc/Makefile
==============================================================================
--- fsf/trunk/libc/Makefile (original)
+++ fsf/trunk/libc/Makefile Fri Nov  9 22:22:50 2012
@@ -399,15 +399,18 @@
 
 define format-me
 @rm -f $@
-makeinfo --no-validate --plaintext --no-number-sections $< -o $@
+makeinfo --no-validate --plaintext --no-number-sections \
+	-I$(common-objpfx)manual $< -o $@
 -chmod a-w $@
 endef
-INSTALL: manual/install.texi manual/macros.texi; $(format-me)
-manual/dir-add.texi manual/dir-add.info: FORCE
-	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+INSTALL: manual/install.texi manual/macros.texi \
+	$(common-objpfx)manual/pkgvers.texi
+	$(format-me)
+$(common-objpfx)manual/%: FORCE
+	$(MAKE) $(PARALLELMFLAGS) -C manual $@
 FORCE:
 
-iconvdata/% localedata/% po/% manual/%: FORCE
+iconvdata/% localedata/% po/%: FORCE
 	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
 
 # glibc 2.0 contains some header files which aren't used with glibc 2.1

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Fri Nov  9 22:22:50 2012
@@ -19,7 +19,7 @@
   14562, 14568, 14576, 14579, 14583, 14587, 14595, 14602, 14610, 14621,
   14638, 14645, 14648, 14652, 14660, 14661, 14669, 14683, 14694, 14716,
   14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14805,
-  14807, 14809, 14811, 14815.
+  14807, 14809, 14811, 14815, 14821, 14824.
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and

Modified: fsf/trunk/libc/aclocal.m4
==============================================================================
--- fsf/trunk/libc/aclocal.m4 (original)
+++ fsf/trunk/libc/aclocal.m4 Fri Nov  9 22:22:50 2012
@@ -165,3 +165,51 @@
   done
   AC_MSG_RESULT()
 fi])
+
+# These two macros are taken from GCC's config/acx.m4.
+dnl Support the --with-pkgversion configure option.
+dnl ACX_PKGVERSION(default-pkgversion)
+AC_DEFUN([ACX_PKGVERSION],[
+  AC_ARG_WITH(pkgversion,
+    AS_HELP_STRING([--with-pkgversion=PKG],
+                   [Use PKG in the version string in place of "$1"]),
+    [case "$withval" in
+      yes) AC_MSG_ERROR([package version not specified]) ;;
+      no)  PKGVERSION= ;;
+      *)   PKGVERSION="($withval) " ;;
+     esac],
+    PKGVERSION="($1) "
+  )
+  PKGVERSION_TEXI=`echo "$PKGVERSION" | sed 's/@/@@/g'`
+  AC_SUBST(PKGVERSION)
+  AC_SUBST(PKGVERSION_TEXI)
+])
+
+dnl Support the --with-bugurl configure option.
+dnl ACX_BUGURL(default-bugurl)
+AC_DEFUN([ACX_BUGURL],[
+  AC_ARG_WITH(bugurl,
+    AS_HELP_STRING([--with-bugurl=URL],
+                   [Direct users to URL to report a bug]),
+    [case "$withval" in
+      yes) AC_MSG_ERROR([bug URL not specified]) ;;
+      no)  BUGURL=
+	   ;;
+      *)   BUGURL="$withval"
+	   ;;
+     esac],
+     BUGURL="$1"
+  )
+  case ${BUGURL} in
+  "")
+    REPORT_BUGS_TO=
+    REPORT_BUGS_TEXI=
+    ;;
+  *)
+    REPORT_BUGS_TO="<$BUGURL>"
+    REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
+    ;;
+  esac;
+  AC_SUBST(REPORT_BUGS_TO)
+  AC_SUBST(REPORT_BUGS_TEXI)
+])

Modified: fsf/trunk/libc/catgets/gencat.c
==============================================================================
--- fsf/trunk/libc/catgets/gencat.c (original)
+++ fsf/trunk/libc/catgets/gencat.c Fri Nov  9 22:22:50 2012
@@ -227,13 +227,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -244,7 +247,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "gencat (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "gencat %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/config.h.in
==============================================================================
--- fsf/trunk/libc/config.h.in (original)
+++ fsf/trunk/libc/config.h.in Fri Nov  9 22:22:50 2012
@@ -160,6 +160,12 @@
 
 /* Define if __stack_chk_guard canary should be randomized at program startup.  */
 #undef ENABLE_STACKGUARD_RANDOMIZE
+
+/* Package description.  */
+#undef PKGVERSION
+
+/* Bug reporting address.  */
+#undef REPORT_BUGS_TO
 
 /* Define if multi-arch DSOs should be generated.  */
 #undef USE_MULTIARCH

Modified: fsf/trunk/libc/config.make.in
==============================================================================
--- fsf/trunk/libc/config.make.in (original)
+++ fsf/trunk/libc/config.make.in Fri Nov  9 22:22:50 2012
@@ -139,4 +139,10 @@
 # Additional libraries.
 LIBGD = @LIBGD@
 
+# Package versions and bug reporting configuration.
+PKGVERSION = @PKGVERSION@
+PKGVERSION_TEXI = @PKGVERSION_TEXI@
+REPORT_BUGS_TO = @REPORT_BUGS_TO@
+REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
+
 # More variables may be inserted below by configure.

Modified: fsf/trunk/libc/configure
==============================================================================
--- fsf/trunk/libc/configure (original)
+++ fsf/trunk/libc/configure Fri Nov  9 22:22:50 2012
@@ -685,6 +685,10 @@
 build_cpu
 build
 subdirs
+REPORT_BUGS_TEXI
+REPORT_BUGS_TO
+PKGVERSION_TEXI
+PKGVERSION
 target_alias
 host_alias
 build_alias
@@ -726,6 +730,8 @@
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+with_pkgversion
+with_bugurl
 with_gd
 with_gd_include
 with_gd_lib
@@ -1417,6 +1423,8 @@
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pkgversion=PKG   Use PKG in the version string in place of "GNU libc"
+  --with-bugurl=URL       Direct users to URL to report a bug
   --with-gd=DIR           find libgd include dir and library with prefix DIR
   --with-gd-include=DIR   find libgd include files in DIR
   --with-gd-lib=DIR       find libgd library files in DIR
@@ -2283,6 +2291,64 @@
 ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
 ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
+
+
+
+
+# Check whether --with-pkgversion was given.
+if test "${with_pkgversion+set}" = set; then :
+  withval=$with_pkgversion; case "$withval" in
+      yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
+      no)  PKGVERSION= ;;
+      *)   PKGVERSION="($withval) " ;;
+     esac
+else
+  PKGVERSION="(GNU libc) "
+
+fi
+
+  PKGVERSION_TEXI=`echo "$PKGVERSION" | sed 's/@/@@/g'`
+
+
+
+
+
+# Check whether --with-bugurl was given.
+if test "${with_bugurl+set}" = set; then :
+  withval=$with_bugurl; case "$withval" in
+      yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
+      no)  BUGURL=
+	   ;;
+      *)   BUGURL="$withval"
+	   ;;
+     esac
+else
+  BUGURL="http://www.gnu.org/software/libc/bugs.html";
+
+fi
+
+  case ${BUGURL} in
+  "")
+    REPORT_BUGS_TO=
+    REPORT_BUGS_TEXI=
+    ;;
+  *)
+    REPORT_BUGS_TO="<$BUGURL>"
+    REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
+    ;;
+  esac;
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define PKGVERSION "$PKGVERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
+_ACEOF
 
 
 # Glibc should not depend on any header files

Modified: fsf/trunk/libc/configure.in
==============================================================================
--- fsf/trunk/libc/configure.in (original)
+++ fsf/trunk/libc/configure.in Fri Nov  9 22:22:50 2012
@@ -4,6 +4,13 @@
 AC_CONFIG_SRCDIR([include/features.h])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_AUX_DIR([scripts])
+
+ACX_PKGVERSION([GNU libc])
+ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
+AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
+		   [Package description])
+AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
+		   [Bug reporting address])
 
 # Glibc should not depend on any header files
 AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],

Modified: fsf/trunk/libc/csu/version.c
==============================================================================
--- fsf/trunk/libc/csu/version.c (original)
+++ fsf/trunk/libc/csu/version.c Fri Nov  9 22:22:50 2012
@@ -24,7 +24,7 @@
 static const char __libc_version[] = VERSION;
 
 static const char banner[] =
-"GNU C Library "RELEASE" release version "VERSION", by Roland McGrath et al.\n\
+"GNU C Library "PKGVERSION RELEASE" release version "VERSION", by Roland McGrath et al.\n\
 Copyright (C) 2012 Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.\n\
 There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
@@ -38,7 +38,7 @@
 "The oldest ABI supported: " GLIBC_OLDEST_ABI ".\n"
 #endif
 "For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n";
+"REPORT_BUGS_TO".\n";
 
 #include <unistd.h>
 

Modified: fsf/trunk/libc/debug/Makefile
==============================================================================
--- fsf/trunk/libc/debug/Makefile (original)
+++ fsf/trunk/libc/debug/Makefile Fri Nov  9 22:22:50 2012
@@ -156,7 +156,9 @@
 $(objpfx)catchsegv: catchsegv.sh $(common-objpfx)soversions.mk \
 		    $(common-objpfx)config.make
 	slibpfx=`echo $(slibdir)|sed 's/lib\(64\|\)$$/\\\\\\\\$$LIB/'`; \
-	sed -e 's|@VERSION@|$(version)|' -e "s|@SLIB@|$$slibpfx|" $< > $@.new
+	sed -e 's|@VERSION@|$(version)|' -e "s|@SLIB@|$$slibpfx|" \
+	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $< > $@.new
 	chmod 555 $@.new
 	mv -f $@.new $@
 
@@ -165,7 +167,9 @@
 $(objpfx)xtrace: xtrace.sh
 	rm -f $@.new
 	sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \
-	    -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \
+	    -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' \
+	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
 
 # Depend on libc.so so a DT_NEEDED is generated in the shared objects.

Modified: fsf/trunk/libc/debug/catchsegv.sh
==============================================================================
--- fsf/trunk/libc/debug/catchsegv.sh (original)
+++ fsf/trunk/libc/debug/catchsegv.sh Fri Nov  9 22:22:50 2012
@@ -33,12 +33,14 @@
       echo 'Usage: catchsegv PROGRAM ARGS...'
       echo '  --help      print this help, then exit'
       echo '  --version   print version number, then exit'
-      echo "For bug reporting instructions, please see:"
-      echo "<http://www.gnu.org/software/libc/bugs.html>."
+      echo 'For bug reporting instructions, please see:'
+      cat <<\EOF
+@REPORT_BUGS_TO@.
+EOF
       exit 0
       ;;
     --v | --ve | --ver | --vers | --versi | --versio | --version)
-      echo 'catchsegv (GNU libc) @VERSION@'
+      echo 'catchsegv @PKGVERSION@@VERSION@'
       echo 'Copyright (C) 2012 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.

Modified: fsf/trunk/libc/debug/pcprofiledump.c
==============================================================================
--- fsf/trunk/libc/debug/pcprofiledump.c (original)
+++ fsf/trunk/libc/debug/pcprofiledump.c Fri Nov  9 22:22:50 2012
@@ -1,5 +1,5 @@
 /* Dump information generated by PC profiling.
-   Copyright (C) 1999, 2002, 2007, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1999-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1999.
 
@@ -200,13 +200,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -217,7 +220,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "pcprofiledump (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "pcprofiledump %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/debug/xtrace.sh
==============================================================================
--- fsf/trunk/libc/debug/xtrace.sh (original)
+++ fsf/trunk/libc/debug/xtrace.sh Fri Nov  9 22:22:50 2012
@@ -54,14 +54,13 @@
 short options.
 
 "
-  echo $"For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>.
-"
+  printf $"For bug reporting instructions, please see:\\n%s.\\n" \
+    "@REPORT_BUGS_TO@"
   exit 0
 }
 
 do_version() {
-  echo 'xtrace (GNU libc) @VERSION@'
+  echo 'xtrace @PKGVERSION@@VERSION@'
   printf $"Copyright (C) %s 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.

Modified: fsf/trunk/libc/elf/Makefile
==============================================================================
--- fsf/trunk/libc/elf/Makefile (original)
+++ fsf/trunk/libc/elf/Makefile Fri Nov  9 22:22:50 2012
@@ -108,7 +108,10 @@
 	sed -e 's%@KSH@%$(KSH)%g' \
 	    -e 's%@VERSION@%$(version)%g' \
 	    -e 's%@TEXTDOMAINDIR@%$(msgcatdir)%g' \
-	    -e 's%@PREFIX@%$(prefix)%g' < $< > $@.new
+	    -e 's%@PREFIX@%$(prefix)%g' \
+	    -e 's|@PKGVERSION@|$(PKGVERSION)|g' \
+	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \
+	    < $< > $@.new
 	chmod 555 $@.new
 	mv -f $@.new $@
 $(inst_auditdir)/sotruss-lib.so: $(objpfx)sotruss-lib.so $(+force)
@@ -381,7 +384,9 @@
 
 
 common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-		     -e 's%@VERSION@%$(version)%g'
+		     -e 's%@VERSION@%$(version)%g' \
+		     -e 's|@PKGVERSION@|$(PKGVERSION)|g' \
+		     -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g'
 sh-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%/bin/sh%g;s/\$$"/"/g'
 bash-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%$(BASH)%g' \
 		   -e 's%@TEXTDOMAINDIR@%$(msgcatdir)%g'

Modified: fsf/trunk/libc/elf/dl-close.c
==============================================================================
--- fsf/trunk/libc/elf/dl-close.c (original)
+++ fsf/trunk/libc/elf/dl-close.c Fri Nov  9 22:22:50 2012
@@ -702,7 +702,7 @@
   if (any_tls)
     {
       if (__builtin_expect (++GL(dl_tls_generation) == 0, 0))
-	_dl_fatal_printf ("TLS generation counter wrapped!  Please report as described in <http://www.gnu.org/software/libc/bugs.html>.\n");
+	_dl_fatal_printf ("TLS generation counter wrapped!  Please report as described in "REPORT_BUGS_TO".\n");
 
       if (tls_free_end == GL(dl_tls_static_used))
 	GL(dl_tls_static_used) = tls_free_start;

Modified: fsf/trunk/libc/elf/ldconfig.c
==============================================================================
--- fsf/trunk/libc/elf/ldconfig.c (original)
+++ fsf/trunk/libc/elf/ldconfig.c Fri Nov  9 22:22:50 2012
@@ -294,13 +294,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -311,7 +314,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "ldconfig (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "ldconfig %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/elf/ldd.bash.in
==============================================================================
--- fsf/trunk/libc/elf/ldd.bash.in (original)
+++ fsf/trunk/libc/elf/ldd.bash.in Fri Nov  9 22:22:50 2012
@@ -34,7 +34,7 @@
 while test $# -gt 0; do
   case "$1" in
   --vers | --versi | --versio | --version)
-    echo 'ldd (GNU libc) @VERSION@'
+    echo 'ldd @PKGVERSION@@VERSION@'
     printf $"Copyright (C) %s 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.
@@ -52,9 +52,8 @@
   -u, --unused            print unused direct dependencies
   -v, --verbose           print all information
 "
-    echo $"For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>.
-"
+    printf $"For bug reporting instructions, please see:\\n%s.\\n" \
+      "@REPORT_BUGS_TO@"
     exit 0
     ;;
   -d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \

Modified: fsf/trunk/libc/elf/pldd.c
==============================================================================
--- fsf/trunk/libc/elf/pldd.c (original)
+++ fsf/trunk/libc/elf/pldd.c Fri Nov  9 22:22:50 2012
@@ -52,10 +52,8 @@
 static void print_version (FILE *stream, struct argp_state *state);
 void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
 
-/* Bug report address.  */
-const char *argp_program_bug_address = N_("\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n");
+/* Function to print some extra text in the help message.  */
+static char *more_help (int key, const char *text, void *input);
 
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =
@@ -76,7 +74,7 @@
 /* Data structure to communicate with argp functions.  */
 static struct argp argp =
 {
-  options, parse_opt, args_doc, doc, NULL, NULL, NULL
+  options, parse_opt, args_doc, doc, NULL, more_help, NULL
 };
 
 // File descriptor of /proc/*/mem file.
@@ -212,11 +210,31 @@
 }
 
 
+/* Print bug-reporting information in the help message.  */
+static char *
+more_help (int key, const char *text, void *input)
+{
+  char *tp = NULL;
+  switch (key)
+    {
+    case ARGP_KEY_HELP_EXTRA:
+      /* We print some extra information.  */
+      if (asprintf (&tp, gettext ("\
+For bug reporting instructions, please see:\n\
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
+    default:
+      break;
+    }
+  return (char *) text;
+}
+
 /* Print the version information.  */
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "pldd (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "pldd %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/elf/sln.c
==============================================================================
--- fsf/trunk/libc/elf/sln.c (original)
+++ fsf/trunk/libc/elf/sln.c Fri Nov  9 22:22:50 2012
@@ -58,7 +58,7 @@
     {
     case 2:
       if (strcmp (argv[1], "--version") == 0) {
-	printf ("sln (GNU libc) %s\n", VERSION);
+	printf ("sln %s%s\n", PKGVERSION, VERSION);
 	return 0;
       } else if (strcmp (argv[1], "--help") == 0) {
 	usage ();
@@ -82,8 +82,8 @@
 usage (void)
 {
   printf (_("Usage: sln src dest|file\n\n"));
-  fputs (_("For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"), stdout);
+  printf (_("For bug reporting instructions, please see:\n\
+%s.\n"), REPORT_BUGS_TO);
 }
 
 static int

Modified: fsf/trunk/libc/elf/sotruss.ksh
==============================================================================
--- fsf/trunk/libc/elf/sotruss.ksh (original)
+++ fsf/trunk/libc/elf/sotruss.ksh Fri Nov  9 22:22:50 2012
@@ -46,9 +46,8 @@
   printf $"Mandatory arguments to long options are also mandatory for any corresponding\nshort options.\n"
   echo
 
-  printf $"For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>.
-"
+  printf $"For bug reporting instructions, please see:\\n%s.\\n" \
+    "@REPORT_BUGS_TO@"
   exit 0
 }
 
@@ -72,7 +71,7 @@
 while test $# -gt 0; do
   case "$1" in
   --v | --ve | --ver | --vers | --versi | --versio | --version)
-    echo "sotruss (GNU libc) @VERSION@"
+    echo "sotruss @PKGVERSION@@VERSION@"
     printf $"Copyright (C) %s 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.

Modified: fsf/trunk/libc/elf/sprof.c
==============================================================================
--- fsf/trunk/libc/elf/sprof.c (original)
+++ fsf/trunk/libc/elf/sprof.c Fri Nov  9 22:22:50 2012
@@ -363,13 +363,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -381,7 +384,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "sprof (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "sprof %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/iconv/iconv_prog.c
==============================================================================
--- fsf/trunk/libc/iconv/iconv_prog.c (original)
+++ fsf/trunk/libc/iconv/iconv_prog.c Fri Nov  9 22:22:50 2012
@@ -400,13 +400,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -418,7 +421,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "iconv (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "iconv %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/iconv/iconvconfig.c
==============================================================================
--- fsf/trunk/libc/iconv/iconvconfig.c (original)
+++ fsf/trunk/libc/iconv/iconvconfig.c Fri Nov  9 22:22:50 2012
@@ -375,13 +375,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -393,7 +396,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "iconvconfig (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "iconvconfig %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/locale/programs/locale.c
==============================================================================
--- fsf/trunk/libc/locale/programs/locale.c (original)
+++ fsf/trunk/libc/locale/programs/locale.c Fri Nov  9 22:22:50 2012
@@ -271,13 +271,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -289,7 +292,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "locale (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "locale %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/locale/programs/localedef.c
==============================================================================
--- fsf/trunk/libc/locale/programs/localedef.c (original)
+++ fsf/trunk/libc/locale/programs/localedef.c Fri Nov  9 22:22:50 2012
@@ -354,20 +354,26 @@
 more_help (int key, const char *text, void *input)
 {
   char *cp;
+  char *tp;
 
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
+      if (asprintf (&tp, gettext ("\
+For bug reporting instructions, please see:\n\
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
       if (asprintf (&cp, gettext ("\
 System's directory for character maps : %s\n\
 		       repertoire maps: %s\n\
 		       locale path    : %s\n\
 %s"),
-		    CHARMAP_PATH, REPERTOIREMAP_PATH, LOCALE_PATH, gettext ("\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n")) < 0)
-	return NULL;
+		    CHARMAP_PATH, REPERTOIREMAP_PATH, LOCALE_PATH, tp) < 0)
+	{
+	  free (tp);
+	  return NULL;
+	}
       return cp;
     default:
       break;
@@ -379,7 +385,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "localedef (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "localedef %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/login/programs/pt_chown.c
==============================================================================
--- fsf/trunk/libc/login/programs/pt_chown.c (original)
+++ fsf/trunk/libc/login/programs/pt_chown.c Fri Nov  9 22:22:50 2012
@@ -58,7 +58,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "pt_chown (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "pt_chown %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
@@ -70,6 +70,7 @@
 more_help (int key, const char *text, void *input)
 {
   char *cp;
+  char *tp;
 
   switch (key)
     {
@@ -84,13 +85,19 @@
       return cp;
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      asprintf (&cp, gettext ("\
+      if (asprintf (&tp, gettext ("\
+For bug reporting instructions, please see:\n\
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      if (asprintf (&cp, gettext ("\
 The owner is set to the current user, the group is set to `%s',\
  and the access permission is set to `%o'.\n\n\
 %s"),
-		TTY_GROUP, S_IRUSR|S_IWUSR|S_IWGRP, gettext ("\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+		    TTY_GROUP, S_IRUSR|S_IWUSR|S_IWGRP, tp) < 0)
+	{
+	  free (tp);
+	  return NULL;
+	}
       return cp;
     default:
       break;

Modified: fsf/trunk/libc/malloc/Makefile
==============================================================================
--- fsf/trunk/libc/malloc/Makefile (original)
+++ fsf/trunk/libc/malloc/Makefile Fri Nov  9 22:22:50 2012
@@ -126,13 +126,17 @@
 $(objpfx)mtrace: mtrace.pl
 	rm -f $@.new
 	sed -e 's|@PERL@|$(PERL)|' -e 's|@XXX@|$(address-width)|' \
-	    -e 's|@VERSION@|$(version)|' $^ > $@.new \
+	    -e 's|@VERSION@|$(version)|' \
+	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
 
 $(objpfx)memusage: memusage.sh
 	rm -f $@.new
 	sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \
-	    -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \
+	    -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' \
+	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
 
 

Modified: fsf/trunk/libc/malloc/memusage.sh
==============================================================================
--- fsf/trunk/libc/malloc/memusage.sh (original)
+++ fsf/trunk/libc/malloc/memusage.sh Fri Nov  9 22:22:50 2012
@@ -61,14 +61,13 @@
 short options.
 
 "
-  echo $"For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>.
-"
+  printf $"For bug reporting instructions, please see:\\n%s.\\n" \
+    "@REPORT_BUGS_TO@"
   exit 0
 }
 
 do_version() {
-  echo 'memusage (GNU libc) @VERSION@'
+  echo 'memusage @PKGVERSION@@VERSION@'
   printf $"Copyright (C) %s 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.

Modified: fsf/trunk/libc/malloc/memusagestat.c
==============================================================================
--- fsf/trunk/libc/malloc/memusagestat.c (original)
+++ fsf/trunk/libc/malloc/memusagestat.c Fri Nov  9 22:22:50 2012
@@ -528,20 +528,17 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
-  char *orig;
-  char *cp;
+  char *tp;
 
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      orig = gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n");
-      cp = strdup (orig);
-      if (cp == NULL)
-	cp = orig;
-      return cp;
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -552,7 +549,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "memusagestat (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "memusagestat %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/malloc/mtrace.pl
==============================================================================
--- fsf/trunk/libc/malloc/mtrace.pl (original)
+++ fsf/trunk/libc/malloc/mtrace.pl Fri Nov  9 22:22:50 2012
@@ -21,7 +21,8 @@
 # <http://www.gnu.org/licenses/>.
 
 $VERSION = "@VERSION@";
-$PACKAGE = "libc";
+$PKGVERSION = "@PKGVERSION@";
+$REPORT_BUGS_TO = '@REPORT_BUGS_TO@';
 $progname = $0;
 
 sub usage {
@@ -30,7 +31,7 @@
     print "  --version    print version number, then exit\n";
     print "\n";
     print "For bug reporting instructions, please see:\n";
-    print "<http://www.gnu.org/software/libc/bugs.html>.\n";
+    print "$REPORT_BUGS_TO.\n";
     exit 0;
 }
 
@@ -43,7 +44,7 @@
     if ($ARGV[0] eq "--v" || $ARGV[0] eq "--ve" || $ARGV[0] eq "--ver" ||
 	$ARGV[0] eq "--vers" || $ARGV[0] eq "--versi" ||
 	$ARGV[0] eq "--versio" || $ARGV[0] eq "--version") {
-	print "mtrace (GNU $PACKAGE) $VERSION\n";
+	print "mtrace $PKGVERSION$VERSION\n";
 	print "Copyright (C) 2012 Free Software Foundation, Inc.\n";
 	print "This is free software; see the source for copying conditions.  There is NO\n";
 	print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";

Modified: fsf/trunk/libc/manual/Makefile
==============================================================================
--- fsf/trunk/libc/manual/Makefile (original)
+++ fsf/trunk/libc/manual/Makefile Fri Nov  9 22:22:50 2012
@@ -61,7 +61,7 @@
 
 # Generated files directly included from libc.texinfo.
 libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \
-		      libm-err.texi version.texi
+		      libm-err.texi version.texi pkgvers.texi
 
 # Add path to build dir for generated files
 texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \
@@ -111,6 +111,20 @@
 	pwd=`pwd`; \
 	$(PERL) $< $$pwd/.. > $(objpfx)libm-err-tmp
 	$(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
+	touch $@
+
+# Package version and bug reporting URL.
+$(objpfx)pkgvers.texi: $(objpfx)stamp-pkgvers ;
+$(objpfx)stamp-pkgvers: $(common-objpfx)config.make
+	echo "@ifclear PKGVERS" > $(objpfx)pkgvers-tmp
+	echo "@set PKGVERS" >> $(objpfx)pkgvers-tmp
+	echo "@set PKGVERSION $(PKGVERSION_TEXI)" >> $(objpfx)pkgvers-tmp
+	if [ "$(PKGVERSION_TEXI)" = "(GNU libc) " ]; then \
+	  echo "@set PKGVERSION_DEFAULT" >> $(objpfx)pkgvers-tmp; \
+	fi
+	echo "@set REPORT_BUGS_TO $(REPORT_BUGS_TEXI)" >> $(objpfx)pkgvers-tmp
+	echo "@end ifclear" >> $(objpfx)pkgvers-tmp
+	$(move-if-change) $(objpfx)pkgvers-tmp $(objpfx)pkgvers.texi
 	touch $@
 
 # Generate a file with the version number.

Modified: fsf/trunk/libc/manual/install.texi
==============================================================================
--- fsf/trunk/libc/manual/install.texi (original)
+++ fsf/trunk/libc/manual/install.texi Fri Nov  9 22:22:50 2012
@@ -2,6 +2,7 @@
 @c Makeinfo ignores it when processing the file from the include.
 @setfilename INSTALL
 @include macros.texi
+@include pkgvers.texi
 
 @node Installation, Maintenance, Library Summary, Top
 @c %MENU% How to install the GNU C Library
@@ -173,6 +174,19 @@
 @var{CFLAGS}.
 
 If you specify just @samp{--build}, @code{configure} will get confused.
+
+@item --with-pkgversion=@var{version}
+Specify a description, possibly including a build number or build
+date, of the binaries being built, to be included in
+@option{--version} output from programs installed with @theglibc{}.
+For example, @option{--with-pkgversion='FooBar GNU/Linux glibc build
+123'}.  The default value is @samp{GNU libc}.
+
+@item --with-bugurl=@var{url}
+Specify the URL that users should visit if they wish to report a bug,
+to be included in @option{--help} output from programs installed with
+@theglibc{}.  The default value refers to the main bug-reporting
+information for @theglibc{}.
 @end table
 
 To build the library and related programs, type @code{make}.  This will
@@ -458,7 +472,8 @@
 
 It is a good idea to verify that the problem has not already been
 reported.  Bugs are documented in two places: The file @file{BUGS}
-describes a number of well known bugs and the bug tracking system has a
+describes a number of well known bugs and the central @glibcadj{}
+bug tracking system has a
 WWW interface at
 @url{http://sourceware.org/bugzilla/}.  The WWW
 interface gives you access to open and closed reports.  A closed report
@@ -483,7 +498,7 @@
 function call, if possible.  This should not be too difficult.
 
 The final step when you have a simple test case is to report the bug.
-Do this using the WWW interface to the bug database.
+Do this at @value{REPORT_BUGS_TO}.
 
 If you are not sure how a function should behave, and this manual
 doesn't tell you, that's a bug in the manual.  Report that too!  If the

Modified: fsf/trunk/libc/manual/libc.texinfo
==============================================================================
--- fsf/trunk/libc/manual/libc.texinfo (original)
+++ fsf/trunk/libc/manual/libc.texinfo Fri Nov  9 22:22:50 2012
@@ -12,6 +12,8 @@
 * Libc: (libc).                 C library.
 @end direntry
 @include dir-add.texi
+
+@include pkgvers.texi
 
 @c This tells texinfo.tex to use the real section titles in xrefs in
 @c place of the node name, when no section title is explicitly given.
@@ -36,7 +38,13 @@
 This is
 @c Disabled (printed editions, see above).
 @c Edition @value{EDITION} of
-@cite{The GNU C Library Reference Manual}, for version @value{VERSION}.
+@cite{The GNU C Library Reference Manual}, for version
+@ifset PKGVERSION_DEFAULT
+@value{VERSION}.
+@end ifset
+@ifclear PKGVERSION_DEFAULT
+@value{VERSION} @value{PKGVERSION}.
+@end ifclear
 
 Copyright @copyright{} 1993--2012 Free Software Foundation, Inc.
 
@@ -70,6 +78,10 @@
 @c @center Edition @value{EDITION}
 @c @sp 1
 @center for version @value{VERSION}
+@ifclear PKGVERSION_DEFAULT
+@sp 1
+@center @value{PKGVERSION}
+@end ifclear
 @page
 @vskip 0pt plus 1filll
 @insertcopying
@@ -96,6 +108,9 @@
 @c Disabled (printed editions, see above).
 @c Edition @value{EDITION} of
 @cite{The GNU C Library Reference Manual}, for Version @value{VERSION}
+@ifclear PKGVERSION_DEFAULT
+@value{PKGVERSION}
+@end ifclear
 of @theglibc{}.
 @end ifnottex
 

Modified: fsf/trunk/libc/nscd/nscd.c
==============================================================================
--- fsf/trunk/libc/nscd/nscd.c (original)
+++ fsf/trunk/libc/nscd/nscd.c Fri Nov  9 22:22:50 2012
@@ -451,13 +451,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -468,7 +471,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "nscd (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "nscd %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Modified: fsf/trunk/libc/nss/getent.c
==============================================================================
--- fsf/trunk/libc/nss/getent.c (original)
+++ fsf/trunk/libc/nss/getent.c Fri Nov  9 22:22:50 2012
@@ -82,7 +82,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "getent (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "getent %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
@@ -962,9 +962,9 @@
 
 	  fputs ("\n\n", fp);
 
-	  fputs (gettext ("\
+	  fprintf (fp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"), fp);
+%s.\n"), REPORT_BUGS_TO);
 
 	  if (fclose (fp) == 0)
 	    return doc;

Modified: fsf/trunk/libc/nss/makedb.c
==============================================================================
--- fsf/trunk/libc/nss/makedb.c (original)
+++ fsf/trunk/libc/nss/makedb.c Fri Nov  9 22:22:50 2012
@@ -363,13 +363,16 @@
 static char *
 more_help (int key, const char *text, void *input)
 {
+  char *tp = NULL;
   switch (key)
     {
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
-      return strdup (gettext ("\
+      if (asprintf (&tp, gettext ("\
 For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n"));
+%s.\n"), REPORT_BUGS_TO) < 0)
+	return NULL;
+      return tp;
     default:
       break;
     }
@@ -380,7 +383,7 @@
 static void
 print_version (FILE *stream, struct argp_state *state)
 {
-  fprintf (stream, "makedb (GNU %s) %s\n", PACKAGE, VERSION);
+  fprintf (stream, "makedb %s%s\n", PKGVERSION, VERSION);
   fprintf (stream, gettext ("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\

Added: fsf/trunk/libc/ports/ChangeLog.aarch64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.aarch64 (added)
+++ fsf/trunk/libc/ports/ChangeLog.aarch64 Fri Nov  9 22:22:50 2012
@@ -1,0 +1,120 @@
+2012-11-09  Marcus Shawcroft  <marcus.shawcroft@xxxxxxxxxx>
+
+	* sysdeps/aarch64/Implies: New file.
+	* sysdeps/aarch64/Makefile: New file.
+	* sysdeps/aarch64/__longjmp.S: New file.
+	* sysdeps/aarch64/backtrace.c: New file.
+	* sysdeps/aarch64/bits: New file.
+	* sysdeps/aarch64/bits/atomic.h: New file.
+	* sysdeps/aarch64/bits/endian.h: New file.
+	* sysdeps/aarch64/bits/fenv.h: New file.
+	* sysdeps/aarch64/bits/link.h: New file.
+	* sysdeps/aarch64/bits/linkmap.h: New file.
+	* sysdeps/aarch64/bits/mathdef.h: New file.
+	* sysdeps/aarch64/bits/setjmp.h: New file.
+	* sysdeps/aarch64/bsd-_setjmp.S: New file.
+	* sysdeps/aarch64/bsd-setjmp.S: New file.
+	* sysdeps/aarch64/crti.S: New file.
+	* sysdeps/aarch64/crtn.S: New file.
+	* sysdeps/aarch64/dl-irel.h: New file.
+	* sysdeps/aarch64/dl-link.sym: New file.
+	* sysdeps/aarch64/dl-machine.h: New file.
+	* sysdeps/aarch64/dl-sysdep.h: New file.
+	* sysdeps/aarch64/dl-tls.h: New file.
+	* sysdeps/aarch64/dl-tlsdesc.S: New file.
+	* sysdeps/aarch64/dl-tlsdesc.h: New file.
+	* sysdeps/aarch64/dl-trampoline.S: New file.
+	* sysdeps/aarch64/fpu/fclrexcpt.c: New file.
+	* sysdeps/aarch64/fpu/fedisblxcpt.c: New file.
+	* sysdeps/aarch64/fpu/feenablxcpt.c: New file.
+	* sysdeps/aarch64/fpu/fegetenv.c: New file.
+	* sysdeps/aarch64/fpu/fegetexcept.c: New file.
+	* sysdeps/aarch64/fpu/fegetround.c: New file.
+	* sysdeps/aarch64/fpu/feholdexcpt.c: New file.
+	* sysdeps/aarch64/fpu/fesetenv.c: New file.
+	* sysdeps/aarch64/fpu/fesetround.c: New file.
+	* sysdeps/aarch64/fpu/feupdateenv.c: New file.
+	* sysdeps/aarch64/fpu/fgetexcptflg.c: New file.
+	* sysdeps/aarch64/fpu/fraiseexcpt.c: New file.
+	* sysdeps/aarch64/fpu/fsetexcptflg.c: New file.
+	* sysdeps/aarch64/fpu/ftestexcept.c: New file.
+	* sysdeps/aarch64/fpu/get-rounding-mode.h: New file.
+	* sysdeps/aarch64/fpu/s_fma.c: New file.
+	* sysdeps/aarch64/fpu_control.h: New file.
+	* sysdeps/aarch64/jmpbuf-offsets.h: New file.
+	* sysdeps/aarch64/jmpbuf-unwind.h: New file.
+	* sysdeps/aarch64/ldsodefs.h: New file.
+	* sysdeps/aarch64/libc-tls.c: New file.
+	* sysdeps/aarch64/libm-test-ulps: New file.
+	* sysdeps/aarch64/machine-gmon.h: New file.
+	* sysdeps/aarch64/memusage.h: New file.
+	* sysdeps/aarch64/nptl/Makefile: New file.
+	* sysdeps/aarch64/nptl/pthread_spin_lock.c: New file.
+	* sysdeps/aarch64/nptl/pthreaddef.h: New file.
+	* sysdeps/aarch64/nptl/tcb-offsets.sym: New file.
+	* sysdeps/aarch64/nptl/tls.h: New file.
+	* sysdeps/aarch64/sotruss-lib.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/Implies: New file.
+	* sysdeps/unix/sysv/linux/aarch64/Makefile: New file.
+	* sysdeps/unix/sysv/linux/aarch64/Versions: New file.
+	* sysdeps/unix/sysv/linux/aarch64/__read_tp.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/bits: New file.
+	* sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/bits/libc-vdso.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/bits/mman.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/clone.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/configure: New file.
+	* sysdeps/unix/sysv/linux/aarch64/configure.in: New file.
+	* sysdeps/unix/sysv/linux/aarch64/getcontext.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/init-first.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/ioctl.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/kernel-features.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/ldconfig.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/libc-__read_tp.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/makecontext.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/mmap.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/bits: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/bits/local_lim.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/bits/semaphore.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/c++-types.data: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/clone.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/createthread.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/fork.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/ld.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libBrokenLocale.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libanl.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libdl.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libm.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libnsl.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libresolv.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/librt.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libthread_db.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/libutil.abilist: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/pt-vfork.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/pthread_once.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/nptl/vfork.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/profil-counter.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/setcontext.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sigaction.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/swapcontext.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sys/elf.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sys/user.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/syscall.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/syscalls.list: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sysdep.c: New file.
+	* sysdeps/unix/sysv/linux/aarch64/sysdep.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h: New file.
+	* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym: New file.
+	* sysdeps/unix/sysv/linux/aarch64/vfork.S: New file.

Added: fsf/trunk/libc/ports/sysdeps/aarch64/Implies
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/Implies (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/Implies Fri Nov  9 22:22:50 2012
@@ -1,0 +1,6 @@
+wordsize-64
+ieee754/ldbl-128
+ieee754/dbl-64/wordsize-64
+ieee754/dbl-64
+ieee754/flt-32
+aarch64/soft-fp

Added: fsf/trunk/libc/ports/sysdeps/aarch64/Makefile
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/Makefile (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/Makefile Fri Nov  9 22:22:50 2012
@@ -1,0 +1,12 @@
+long-double-fcts = yes
+
+ifeq ($(subdir),elf)
+sysdep-dl-routines += tlsdesc dl-tlsdesc
+sysdep_routines += tlsdesc dl-tlsdesc
+sysdep-rtld-routines += tlsdesc dl-tlsdesc
+gen-as-const-headers += dl-link.sym
+endif
+
+ifeq ($(subdir),csu)
+gen-as-const-headers += tlsdesc.sym
+endif

Added: fsf/trunk/libc/ports/sysdeps/aarch64/__longjmp.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/__longjmp.S (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/__longjmp.S Fri Nov  9 22:22:50 2012
@@ -1,0 +1,98 @@
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <jmpbuf-offsets.h>
+
+/* __longjmp(jmpbuf, val) */
+
+ENTRY (__longjmp)
+	cfi_def_cfa(x0, 0)
+	cfi_offset(x19, JB_X19<<3)
+	cfi_offset(x20, JB_X20<<3)
+	cfi_offset(x21, JB_X21<<3)
+	cfi_offset(x22, JB_X22<<3)
+	cfi_offset(x23, JB_X23<<3)
+	cfi_offset(x24, JB_X24<<3)
+	cfi_offset(x25, JB_X25<<3)
+	cfi_offset(x26, JB_X26<<3)
+	cfi_offset(x27, JB_X27<<3)
+	cfi_offset(x28, JB_X28<<3)
+	cfi_offset(x29, JB_X29<<3)
+	cfi_offset(x30, JB_LR<<3)
+
+	cfi_offset( d8, JB_D8<<3)
+	cfi_offset( d9, JB_D9<<3)
+	cfi_offset(d10, JB_D10<<3)
+	cfi_offset(d11, JB_D11<<3)
+	cfi_offset(d12, JB_D12<<3)
+	cfi_offset(d13, JB_D13<<3)
+	cfi_offset(d14, JB_D14<<3)
+	cfi_offset(d15, JB_D15<<3)
+
+	ldp	x19, x20, [x0, #JB_X19<<3]
+	ldp	x21, x22, [x0, #JB_X21<<3]
+	ldp	x23, x24, [x0, #JB_X23<<3]
+	ldp	x25, x26, [x0, #JB_X25<<3]
+	ldp	x27, x28, [x0, #JB_X27<<3]
+	ldp	x29, x30, [x0, #JB_X29<<3]
+
+	ldp	 d8,  d9, [x0, #JB_D8<<3]
+	ldp	d10, d11, [x0, #JB_D10<<3]
+	ldp	d12, d13, [x0, #JB_D12<<3]
+	ldp	d14, d15, [x0, #JB_D14<<3]
+
+        /* Originally this was implemented with a series of
+	   .cfi_restore() directives.
+
+           The theory was that cfi_restore should revert to previous
+           frame value is the same as the current value.  In practice
+           this doesn't work, even after cfi_restore() gdb continues
+           to try to recover a previous frame value offset from x0,
+           which gets stuffed after a few more instructions.  The
+           cfi_same_value() mechanism appears to work fine.  */
+
+	cfi_same_value(x19)
+	cfi_same_value(x20)
+	cfi_same_value(x21)
+	cfi_same_value(x22)
+	cfi_same_value(x23)
+	cfi_same_value(x24)
+	cfi_same_value(x25)
+	cfi_same_value(x26)
+	cfi_same_value(x27)
+	cfi_same_value(x28)
+	cfi_same_value(x29)
+	cfi_same_value(x30)
+	cfi_same_value(d8)
+	cfi_same_value(d9)
+	cfi_same_value(d10)
+	cfi_same_value(d11)
+	cfi_same_value(d12)
+	cfi_same_value(d13)
+	cfi_same_value(d14)
+	cfi_same_value(d15)
+
+	ldr	x5,  [x0, #JB_SP<<3]
+	mov	sp, x5
+	cmp	x1, #0
+	mov	x0, #1
+	csel	x0, x1, x0, ne
+	/* Use br instead of ret because ret is guaranteed to mispredict */
+	br	x30
+END (__longjmp)

Added: fsf/trunk/libc/ports/sysdeps/aarch64/backtrace.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/backtrace.c (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/backtrace.c Fri Nov  9 22:22:50 2012
@@ -1,0 +1,1 @@
+#include <sysdeps/x86_64/backtrace.c>

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/atomic.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/atomic.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/atomic.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,171 @@
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _AARCH64_BITS_ATOMIC_H
+#define _AARCH64_BITS_ATOMIC_H	1
+
+#include <stdint.h>
+
+typedef int8_t  atomic8_t;
+typedef int16_t atomic16_t;
+typedef int32_t atomic32_t;
+typedef int64_t atomic64_t;
+
+typedef uint8_t  uatomic8_t;
+typedef uint16_t uatomic16_t;
+typedef uint32_t uatomic32_t;
+typedef uint64_t uatomic64_t;
+
+typedef intptr_t atomicptr_t;
+typedef uintptr_t uatomicptr_t;
+typedef intmax_t atomic_max_t;
+typedef uintmax_t uatomic_max_t;
+
+
+/* Compare and exchange.
+   For all "bool" routines, we return FALSE if exchange succesful.  */
+
+# define __arch_compare_and_exchange_bool_8_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				  model, __ATOMIC_RELAXED);		\
+  })
+
+# define __arch_compare_and_exchange_bool_16_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				  model, __ATOMIC_RELAXED);		\
+  })
+
+# define __arch_compare_and_exchange_bool_32_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				  model, __ATOMIC_RELAXED);		\
+  })
+
+#  define __arch_compare_and_exchange_bool_64_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    !__atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				  model, __ATOMIC_RELAXED);		\
+  })
+
+# define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				 model, __ATOMIC_RELAXED);		\
+    __oldval;								\
+  })
+
+# define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				 model, __ATOMIC_RELAXED);		\
+    __oldval;								\
+  })
+
+# define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				 model, __ATOMIC_RELAXED);		\
+    __oldval;								\
+  })
+
+#  define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
+  ({									\
+    typeof (*mem) __oldval = (oldval);					\
+    __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0,	\
+				 model, __ATOMIC_RELAXED);		\
+    __oldval;								\
+  })
+
+
+/* Compare and exchange with "acquire" semantics, ie barrier after.  */
+
+# define atomic_compare_and_exchange_bool_acq(mem, new, old)	\
+  __atomic_bool_bysize (__arch_compare_and_exchange_bool, int,	\
+			mem, new, old, __ATOMIC_ACQUIRE)
+
+# define atomic_compare_and_exchange_val_acq(mem, new, old)	\
+  __atomic_val_bysize (__arch_compare_and_exchange_val, int,	\
+		       mem, new, old, __ATOMIC_ACQUIRE)
+
+/* Compare and exchange with "release" semantics, ie barrier before.  */
+
+# define atomic_compare_and_exchange_bool_rel(mem, new, old)	\
+  __atomic_bool_bysize (__arch_compare_and_exchange_bool, int,	\
+			mem, new, old, __ATOMIC_RELEASE)
+
+# define atomic_compare_and_exchange_val_rel(mem, new, old)	 \
+  __atomic_val_bysize (__arch_compare_and_exchange_val, int,    \
+                       mem, new, old, __ATOMIC_RELEASE)
+
+
+/* Atomic exchange (without compare).  */
+
+# define __arch_exchange_8_int(mem, newval, model)	\
+  __atomic_exchange_n (mem, newval, model)
+
+# define __arch_exchange_16_int(mem, newval, model)	\
+  __atomic_exchange_n (mem, newval, model)
+
+# define __arch_exchange_32_int(mem, newval, model)	\
+  __atomic_exchange_n (mem, newval, model)
+
+#  define __arch_exchange_64_int(mem, newval, model)	\
+  __atomic_exchange_n (mem, newval, model)
+
+# define atomic_exchange_acq(mem, value)				\
+  __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_ACQUIRE)
+
+# define atomic_exchange_rel(mem, value)				\
+  __atomic_val_bysize (__arch_exchange, int, mem, value, __ATOMIC_RELEASE)
+
+
+/* Atomically add value and return the previous (unincremented) value.  */
+
+# define __arch_exchange_and_add_8_int(mem, value, model)	\
+  __atomic_fetch_add (mem, value, model)
+
+# define __arch_exchange_and_add_16_int(mem, value, model)	\
+  __atomic_fetch_add (mem, value, model)
+
+# define __arch_exchange_and_add_32_int(mem, value, model)	\
+  __atomic_fetch_add (mem, value, model)
+
+#  define __arch_exchange_and_add_64_int(mem, value, model)	\
+  __atomic_fetch_add (mem, value, model)
+
+# define atomic_exchange_and_add_acq(mem, value)			\
+  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
+		       __ATOMIC_ACQUIRE)
+
+# define atomic_exchange_and_add_rel(mem, value)			\
+  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
+		       __ATOMIC_RELEASE)
+
+/* Barrier macro. */
+#define atomic_full_barrier() __sync_synchronize()
+
+#endif

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/endian.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/endian.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/endian.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,30 @@
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ENDIAN_H
+# error "Never use <bits/endian.h> directly; include <endian.h> instead."
+#endif
+
+/* AArch64 can be either big or little endian.  */
+#ifdef __AARCH64EB__
+# define __BYTE_ORDER __BIG_ENDIAN
+#else
+# define __BYTE_ORDER __LITTLE_ENDIAN
+#endif
+
+#define __FLOAT_WORD_ORDER __BYTE_ORDER

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/fenv.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/fenv.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,74 @@
+/* Copyright (C) 2004-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _FENV_H
+# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+#endif
+
+/* Define bits representing exceptions in the FPSR status word.  */
+enum
+  {
+    FE_INVALID =
+#define FE_INVALID	1
+      FE_INVALID,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	2
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	4
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	8
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	16
+      FE_INEXACT,
+  };
+
+/* Amount to shift by to convert an exception bit in FPSR to a an
+   exception bit mask in FPCR.  */
+#define FE_EXCEPT_SHIFT	8
+
+/* All supported exceptions.  */
+#define FE_ALL_EXCEPT	\
+	(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/* Define bits representing rounding modes in the FPCR Rmode field.  */
+#define FE_TONEAREST  0x000000
+#define FE_UPWARD     0x400000
+#define FE_DOWNWARD   0x800000
+#define FE_TOWARDZERO 0xc00000
+
+/* Type representing exception flags. */
+typedef unsigned int fexcept_t;
+
+/* Type representing floating-point environment.  */
+typedef struct
+  {
+    unsigned int __fpcr;
+    unsigned int __fpsr;
+  }
+fenv_t;
+
+/* If the default argument is used we use this value.  */
+#define FE_DFL_ENV	((const fenv_t *) -1l)
+
+#ifdef __USE_GNU
+/* Floating-point environment where none of the exceptions are masked.  */
+# define FE_NOMASK_ENV  ((const fenv_t *) -2)
+#endif

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/link.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/link.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/link.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,60 @@
+/* Copyright (C) 2005-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_LINK_H
+# error "Never include <bits/link.h> directly; use <link.h> instead."
+#endif
+
+/* Registers for entry into PLT on AArch64.  */
+typedef struct La_aarch64_regs
+{
+  uint64_t lr_xreg[8];
+  uint64_t lr_dreg[8];
+  uint64_t lr_sp;
+  uint64_t lr_lr;
+} La_aarch64_regs;
+
+/* Return values for calls from PLT on AArch64.  */
+typedef struct La_aarch64_retval
+{
+  /* Up to two integer registers can be used for a return value.  */
+  uint64_t lrv_xreg[2];
+  /* Up to four D registers can be used for a return value.  */
+  uint64_t lrv_dreg[4];
+
+} La_aarch64_retval;
+__BEGIN_DECLS
+
+extern Elf64_Addr
+la_aarch64_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx,
+			 uintptr_t *__refcook,
+			 uintptr_t *__defcook,
+			 La_aarch64_regs *__regs,
+			 unsigned int *__flags,
+			 const char *__symname,
+			 long int *__framesizep);
+
+extern unsigned int
+la_aarch64_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx,
+			uintptr_t *__refcook,
+			uintptr_t *__defcook,
+			const La_aarch64_regs *__inregs,
+			La_aarch64_retval *__outregs,
+			const char *__symname);
+
+__END_DECLS

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/linkmap.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/linkmap.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/linkmap.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,23 @@
+/* Copyright (C) 2009-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+struct link_map_machine
+{
+  ElfW(Addr) plt;	  /* Address of .plt */
+  void *tlsdesc_table;	  /* Address of TLS descriptor hash table.  */
+};

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/mathdef.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/mathdef.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/mathdef.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,39 @@
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _MATH_H && !defined _COMPLEX_H
+# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
+#endif
+
+#if defined  __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
+# define _MATH_H_MATHDEF	1
+
+/* GCC does not promote `float' values to `double'.  */
+typedef float float_t;		/* `float' expressions are evaluated as
+				   `float'.  */
+typedef double double_t;	/* `double' expressions are evaluated as
+				   `double'.  */
+
+/* The values returned by `ilogb' for 0 and NaN respectively.  */
+# define FP_ILOGB0	(-2147483647)
+# define FP_ILOGBNAN	(2147483647)
+
+# define FP_FAST_FMA 1
+# define FP_FAST_FMAF 1
+
+#endif	/* ISO C99 */

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bits/setjmp.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bits/setjmp.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bits/setjmp.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,33 @@
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
+#ifndef _ASM
+/* Jump buffer contains:
+   x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15.  Other registers are not
+   saved.  */
+typedef unsigned long long __jmp_buf [22];
+
+#endif
+#endif

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bsd-_setjmp.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bsd-_setjmp.S (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bsd-_setjmp.S Fri Nov  9 22:22:50 2012
@@ -1,0 +1,1 @@
+/* _setjmp is in setjmp.S  */

Added: fsf/trunk/libc/ports/sysdeps/aarch64/bsd-setjmp.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/bsd-setjmp.S (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/bsd-setjmp.S Fri Nov  9 22:22:50 2012
@@ -1,0 +1,1 @@
+/* setjmp is in setjmp.S  */

Added: fsf/trunk/libc/ports/sysdeps/aarch64/crti.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/crti.S (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/crti.S Fri Nov  9 22:22:50 2012
@@ -1,0 +1,90 @@
+/* Special .init and .fini section support for AArch64.
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file with other
+   programs, and to distribute those programs without any restriction
+   coming from the use of this file. (The GNU Lesser General Public
+   License restrictions do apply in other respects; for example, they
+   cover modification of the file, and distribution when not linked
+   into another program.)
+
+   Note that people who make modified versions of this file are not
+   obligated to grant this special exception for their modified
+   versions; it is their choice whether to do so. The GNU Lesser
+   General Public License gives permission to release a modified
+   version without this exception; this exception also makes it
+   possible to release a modified version which carries forward this
+   exception.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* crti.S puts a function prologue at the beginning of the .init and
+   .fini sections and defines global symbols for those addresses, so
+   they can be called as functions.  The symbols _init and _fini are
+   magic and cause the linker to emit DT_INIT and DT_FINI.  */
+
+#include <libc-symbols.h>
+
+#ifndef PREINIT_FUNCTION
+# define PREINIT_FUNCTION __gmon_start__
+#endif
+
+#ifndef PREINIT_FUNCTION_WEAK
+# define PREINIT_FUNCTION_WEAK 1
+#endif
+
+#if PREINIT_FUNCTION_WEAK
+	weak_extern (PREINIT_FUNCTION)
+#else
+	.hidden PREINIT_FUNCTION
+#endif
+
+#if PREINIT_FUNCTION_WEAK
+	.align	2
+	.type	call_weak_fn, %function
+call_weak_fn:
+	adrp	x0, :got:PREINIT_FUNCTION
+	ldr	x0, [x0, #:got_lo12:PREINIT_FUNCTION]
+	cbz	x0, 1f
+	b	PREINIT_FUNCTION
+1:
+	RET
+	.size	call_weak_fn, .-call_weak_fn
+#endif
+
+	.section .init,"ax",%progbits
+	.align	2
+	.global	_init
+	.type	_init, %function
+_init:
+	stp	x29, x30, [sp, -16]!
+	mov	x29, sp
+#if PREINIT_FUNCTION_WEAK
+	bl	call_weak_fn
+#else
+	bl	PREINIT_FUNCTION
+#endif
+
+	.section	.fini,"ax",%progbits
+	.align	2
+	.global	_fini
+	.type	_fini, %function
+_fini:
+	stp	x29, x30, [sp, -16]!
+	mov	x29, sp

Added: fsf/trunk/libc/ports/sysdeps/aarch64/crtn.S
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/crtn.S (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/crtn.S Fri Nov  9 22:22:50 2012
@@ -1,0 +1,46 @@
+/* Special .init and .fini section support for AArch64.
+   Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file with other
+   programs, and to distribute those programs without any restriction
+   coming from the use of this file. (The GNU Lesser General Public
+   License restrictions do apply in other respects; for example, they
+   cover modification of the file, and distribution when not linked
+   into another program.)
+
+   Note that people who make modified versions of this file are not
+   obligated to grant this special exception for their modified
+   versions; it is their choice whether to do so. The GNU Lesser
+   General Public License gives permission to release a modified
+   version without this exception; this exception also makes it
+   possible to release a modified version which carries forward this
+   exception.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* crtn.S puts function epilogues in the .init and .fini sections
+   corresponding to the prologues in crti.S. */
+
+	.section .init,"ax",%progbits
+	ldp	x29, x30, [sp], 16
+	RET
+
+	.section .fini,"ax",%progbits
+	ldp	x29, x30, [sp], 16
+	RET

Added: fsf/trunk/libc/ports/sysdeps/aarch64/dl-irel.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/dl-irel.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/dl-irel.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,36 @@
+/* Machine-dependent ELF indirect relocation inline functions.
+   AArch64 version.
+   Copyright (C) 2012 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
+
+#include <stdio.h>
+#include <unistd.h>
+
+/* AArch64 does not yet implement IFUNC support.  However since
+   2011-06-20 provision of a elf_ifunc_invoke has been mandatory.  */
+
+static inline ElfW(Addr)
+__attribute ((always_inline))
+elf_ifunc_invoke (ElfW(Addr) addr)
+{
+  return ((ElfW(Addr) (*) (void)) (addr)) ();
+}
+
+#endif

Added: fsf/trunk/libc/ports/sysdeps/aarch64/dl-link.sym
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/dl-link.sym (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/dl-link.sym Fri Nov  9 22:22:50 2012
@@ -1,0 +1,15 @@
+#include <stddef.h>
+#include <sysdep.h>
+#include <link.h>
+#include <dl-tlsdesc.h>
+
+DL_SIZEOF_RG		sizeof(struct La_aarch64_regs)
+DL_SIZEOF_RV		sizeof(struct La_aarch64_retval)
+
+DL_OFFSET_RG_X0		offsetof(struct La_aarch64_regs, lr_xreg)
+DL_OFFSET_RG_D0		offsetof(struct La_aarch64_regs, lr_dreg)
+DL_OFFSET_RG_SP		offsetof(struct La_aarch64_regs, lr_sp)
+DL_OFFSET_RG_LR		offsetof(struct La_aarch64_regs, lr_lr)
+
+DL_OFFSET_RV_X0		offsetof(struct La_aarch64_retval, lrv_xreg)
+DL_OFFSET_RV_D0		offsetof(struct La_aarch64_retval, lrv_dreg)

Added: fsf/trunk/libc/ports/sysdeps/aarch64/dl-machine.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/aarch64/dl-machine.h (added)
+++ fsf/trunk/libc/ports/sysdeps/aarch64/dl-machine.h Fri Nov  9 22:22:50 2012
@@ -1,0 +1,388 @@
+/* Copyright (C) 1995-2012 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef dl_machine_h
+#define dl_machine_h
+
+#define ELF_MACHINE_NAME "aarch64"
+
+#include <tls.h>
+#include <dl-tlsdesc.h>
+
+/* Return nonzero iff ELF header is compatible with the running host.  */
+static inline int __attribute__ ((unused))
+elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
+{
+  return ehdr->e_machine == EM_AARCH64;
+}
+
+/* Return the link-time address of _DYNAMIC.  Conveniently, this is the
+   first element of the GOT. */
+static inline ElfW(Addr) __attribute__ ((unused))
+elf_machine_dynamic (void)
+{
+  ElfW(Addr) addr = (ElfW(Addr)) &_DYNAMIC;
+  return addr;
+}
+
+/* Return the run-time load address of the shared object.  */
+
+static inline ElfW(Addr) __attribute__ ((unused))
+elf_machine_load_address (void)
+{
+  /* To figure out the load address we use the definition that for any symbol:
+     dynamic_addr(symbol) = static_addr(symbol) + load_addr
+
+     The choice of symbol is arbitrary. The static address we obtain
+     by constructing a non GOT reference to the symbol, the dynamic
+     address of the symbol we compute using adrp/add to compute the
+     symbol's address relative to the PC. */
+
+  ElfW(Addr) static_addr;
+  ElfW(Addr) dynamic_addr;
+
+  asm ("					\n\
+	adrp	%1, _dl_start;			\n\
+        add	%1, %1, #:lo12:_dl_start        \n\
+        ldr	%w0, 1f				\n\
+	b	2f				\n\
+1:	.word	_dl_start			\n\
+2:						\n\
+       " : "=r" (static_addr),  "=r" (dynamic_addr));
+  return dynamic_addr - static_addr;
+}
+
+/* Set up the loaded object described by L so its unrelocated PLT

[... 15768 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits